注: より良いタイトル/質問を思いついた場合は、遠慮なく提案してください。この質問を短い文で表現する方法がわかりませんでした。
コマンド ライン マスターマインド ゲームを作成しました。ゲームをプレイするには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
、initialize メソッドで GUI を開く必要があります。limelight open production
基本的に、コマンド ラインで入力するのと同じ機能を持つ必要があります。
これが可能かどうか、またはその方法がわからないので、助けていただければ幸いです。ありがとう!
rvm use jruby
編集:スクリプトに次の行を含めてコマンドを実行しようとしています:
system("rvm use jruby")
「RVM は関数ではありません。'rvm use ...' でルビーを選択しても機能しません。」