注: より良いタイトル/質問を思いついた場合は、遠慮なく提案してください。この質問を短い文で表現する方法がわかりませんでした。
コマンド ライン マスターマインド ゲームを作成しました。ゲームをプレイするにはplay.rb、コマンド ラインに入力します。
play.rbゲームを起動する Ruby スクリプトです。スクリプト内で、ゲームには というインターフェイスが送信されますCommandLineInterface。
GUI (私は Limelight と呼ばれる Ruby GUI を使用しています) を使用してプレイしたい場合はcd、limelightディレクトリに移動して入力limelight open productionすると、GUI が開きます。
、、およびmastermind_gameディレクトリを含むディレクトリがあります。ディレクトリにはディレクトリが含まれます。libspeclimelightlimelightproduction
今、私はいくつかの変更を加えています。コマンドラインでスクリプトに引数を渡すことができます。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 ...' でルビーを選択しても機能しません。」