在内部重新启动Ruby程序

丹尼尔·诺德比

我正在用Ruby写一个非常简单的地牢冒险游戏(练习newb)。我想通篇通过名字来称呼球员,所以自然而然地我想确保,如果球员告诉我他们不能这么做,然后提示他们重试,那么将一个空名传递给我的球员初始化方法。

class Player
    attr_accessor :name, :location

    def initialize(name)
        if name.empty? == false
            @name = name
        else
            puts "You did not enter your name! Try again, please"
            load 'game.rb'
        end
    end
end

文件名是“ game.rb”,所以每次玩家决定不输入名字时,我基本上都是在这里重新加载整个文件。这是愚蠢的...

它可以工作,但是以最坏的方式...我必须对离开程序的位置“保持精明”,以便使玩家免受这样的事实的困扰:我基本上是将所有人都投入了《盗梦空间》,然后在每次玩家开始新游戏而忽略输入他们的名字时的游戏。例如,如果他们因为不专心而没有3次注意到需要输入姓名,那么我实际上就运行了4场比赛(原始比赛,而3场比赛未输入姓名提示),他们d或者当他们厌倦了玩游戏时就必须结束每个游戏,否则我必须从一个关键词开始彻底退出整个游戏。

我的问题是:有没有办法写我的错误“您没有输入...”,退出当前游戏会话,然后重新启动游戏?我真正想做的就是确保不将空字符串传递给我的initialize方法,这可能是通过引发异常,然后在没有脚本进行游戏的情况下从脚本的开头重新开始。

以下是完整代码的链接,以获取更多见解:http : //repl.it/8QY

文森特·福尔蒙德

不了解整个游戏结构就很难知道,但是您的主文件可能看起来像

game_initialized = false
while ! game_initialized
  begin
    # here, initialize the game, including initialization
    game_initialized = true
  rescue NoNameError
    # do nothing, but it will restart the game
  end
end
# now play the game

然后在您的构造函数中,添加

class NoNameError < Exception
end

class Player
  attr_accessor :name, :location

  def initialize(name)
    if name.empty? == false
      @name = name
    else
      puts "You did not enter your name! Try again, please"
      raise NoNameError
    end
  end
end

那应该让你走。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将处理程序停在内部

来自分类Dev

如何“重新启动”程序

来自分类Dev

从程序中重新启动

来自分类Dev

重新启动Python程序

来自分类Dev

从自身内部重新启动节点进程

来自分类Dev

重新启动程序后如何不删除.TXT文件的内部

来自分类Dev

在内部调用函数

来自分类Dev

如何从方法重新启动程序

来自分类Dev

如何使Python程序自动重新启动

来自分类Dev

如何重新启动程序(8086 TASM)

来自分类Dev

无法重新启动网络守护程序

来自分类Dev

重新启动程序中的记录列表

来自分类Dev

Bash功能,用于重新启动程序

来自分类Dev

查找触发重新启动的程序或进程

来自分类Dev

在内部环境中重新调整似乎不起作用

来自分类Dev

使用 ExpressJS 重新响应 GET 请求,然后在内部执行 RequestJS 请求

来自分类Dev

spark 是否按字母顺序在内部重新排列数据框中字段的顺序?

来自分类Dev

重新编译并重新启动守护程序

来自分类Dev

CLLocationManager startMonitoringForRegion:设备重新启动后不重新启动应用程序

来自分类Dev

我如何知道docker守护程序重新启动后哪个docker将重新启动

来自分类Dev

从终端重新启动bash而不重新启动终端应用程序(mac)?

来自分类Dev

如果我们重新启动postgres,如何重新启动后台工作程序postgresql?

来自分类Dev

Docker:如何重新启动容器内部的进程?

来自分类Dev

在它使用的方法内部重新启动setInterval

来自分类Dev

退出程序后可以重新启动程序吗?

来自分类Dev

关闭程序后如何自动重新启动程序

来自分类Dev

在内部使用ArcGIS JSAPI作为备用加载程序时的测试套件路径

来自分类Dev

在内部应用程序上更新iOS Provisioning配置文件

来自分类Dev

jQuery UI对话框在内部应用程序关闭时未关闭

Related 相关文章

  1. 1

    将处理程序停在内部

  2. 2

    如何“重新启动”程序

  3. 3

    从程序中重新启动

  4. 4

    重新启动Python程序

  5. 5

    从自身内部重新启动节点进程

  6. 6

    重新启动程序后如何不删除.TXT文件的内部

  7. 7

    在内部调用函数

  8. 8

    如何从方法重新启动程序

  9. 9

    如何使Python程序自动重新启动

  10. 10

    如何重新启动程序(8086 TASM)

  11. 11

    无法重新启动网络守护程序

  12. 12

    重新启动程序中的记录列表

  13. 13

    Bash功能,用于重新启动程序

  14. 14

    查找触发重新启动的程序或进程

  15. 15

    在内部环境中重新调整似乎不起作用

  16. 16

    使用 ExpressJS 重新响应 GET 请求,然后在内部执行 RequestJS 请求

  17. 17

    spark 是否按字母顺序在内部重新排列数据框中字段的顺序?

  18. 18

    重新编译并重新启动守护程序

  19. 19

    CLLocationManager startMonitoringForRegion:设备重新启动后不重新启动应用程序

  20. 20

    我如何知道docker守护程序重新启动后哪个docker将重新启动

  21. 21

    从终端重新启动bash而不重新启动终端应用程序(mac)?

  22. 22

    如果我们重新启动postgres,如何重新启动后台工作程序postgresql?

  23. 23

    Docker:如何重新启动容器内部的进程?

  24. 24

    在它使用的方法内部重新启动setInterval

  25. 25

    退出程序后可以重新启动程序吗?

  26. 26

    关闭程序后如何自动重新启动程序

  27. 27

    在内部使用ArcGIS JSAPI作为备用加载程序时的测试套件路径

  28. 28

    在内部应用程序上更新iOS Provisioning配置文件

  29. 29

    jQuery UI对话框在内部应用程序关闭时未关闭

热门标签

归档