注意:如果您想到更好的标题/问题,请随时提出建议。我不知道如何用一句话来表达这个问题。
我创建了一个命令行 Mastermind 游戏。要玩游戏,请play.rb
在命令行中键入。
play.rb
是一个启动游戏的 Ruby 脚本。在脚本中,游戏被发送一个接口,称为CommandLineInterface
.
如果您想使用 GUI 进行游戏(我使用的是名为 Limelight 的 Ruby GUI),您可以cd
进入limelight
目录并键入limelight open production
,然后 GUI 就会打开。
有一个mastermind_game
目录,其中包含一个lib
、一个spec
和一个limelight
目录。该limelight
目录包含一个production
目录。
现在我正在做一些改变。您可以在命令行向脚本传递参数。要么输入play.rb "command line game"
要么play.rb "limelight game"
。
ARGV
是在命令行传递的参数数组。
if ARGV.include?("command line game")
interface = CommandLineInterface.new
elsif ARGV.include?("limelight game")
interface = LimelightInterface.new
end
如果我想玩我的命令行游戏,我输入play.rb "command line game"
它就可以正常工作。
我希望能够play.rb "limelight game"
在命令行键入并打开 GUI。在ARGV
中,将找到参数"limelight game"
,因此interface
将设置为LimelightInterface.new
。在我的LimelightInterface
班级中,我希望初始化方法打开 GUI。limelight open production
它本质上应该具有与在命令行键入相同的功能。
我不确定这是否可能或如何做到,所以任何帮助将不胜感激!谢谢!
编辑:我试图rvm use jruby
通过在我的脚本中包含这一行来执行命令:
system("rvm use jruby")
我回来了:“RVM 不是一个函数,用 'rvm use ...' 选择红宝石是行不通的。”