1

Ruby でコマンド ライン ゲームを作成しましたが、現在、Shoes を使用してゲームの GUI を作成しようとしています。私は午前中、Shoes について読み、いくつかのコード サンプルを見て、自分でコードを少し書きました。どうやら (私Shoes に慣れていないので、これは完全に間違っている可能性があります)、Shoes コード (たとえば、shoes.rbShoes アプリケーションで開くファイル) には、実行したいすべての Ruby コードが含まれている必要があります。すべての Ruby コードがそのファイル内に存在します。

私がこのゲームを起動する方法は、コマンド ラインでplay.rb(Ruby スクリプト) にコマンド ライン引数を渡すことです。実行するplay.rb "command line game"play.rb "shoes game"、コマンド ラインで実行します。shoes.rb後者を実行すると、Shoes アプリケーションで開くためのシステム コールが行われます。その中では、 ではなくプレイヤーにplay.rb渡されます。以下は、プレーヤーがどのように移動を求められるかの例です。ShoesInterfaceCommandLineInterface

human_player.rbファイル内:

def make_move
    @interface.print("It's your turn to make a move.")
end

@interfaceCommandLineInterfaceまたはのいずれかになりますShoesInterface。のprintメソッドCommandLineInterfaceは、単なる puts ステートメントです。のprintメソッドはShoesInterface、Shoes GUI にそのテキストを表示するように指示する必要があります。できるだけ多くのコードを再利用しようとしています。理論的には、ゲームのプレイ方法(Web、コマンド ライン、GUI など) に関係なく、ほとんど同じロジックを使用する必要があります。インターフェイスは単にメッセージを表示し、ユーザー入力を受け取ります。彼らはそれをさまざまな方法で行うだけです。

問題は、Shoes GUI を既存の Ruby コードに接続する方法がわからないことです。ここに靴に堪能な人はいますか?これは、Shoes では不可能かもしれません...別の Ruby GUI を使用する必要があるかもしれませんが、別の Ruby GUI に移る前に質問しておこうと思いました。

4

1 に答える 1

1

できることは、print メソッドに応答する Shoes ウィジェットを作成することです。以下は、編集行から任意の表示スロットにメッセージを追加するウィジェットの非常に大雑把な例です。もちろん、ウィジェットを簡単に変更して、表示などのターゲット スロットで初期化できるようにすることもできますが、考え方は変わりません。

class Prompt < Shoes::Widget
 def initialize opts={}
  @top=opts[:top]
  @left=opts[:left]
  @width=opts[:width]
  @prom=flow :top=>@top, :left=>@left, :width=>@width do
   background red
  end
  end
 def print(msg)
  @prom.append do
   para msg
  end
 end
end
Shoes.app :title => "Test" do 
 @el=edit_line
 button "print"do
  @interface.print(@el.text)
 end
 @interface=prompt({:top=>50, :left=>20, :width=>100})
end

それがあなたが望んでいたものであることを願っています。

于 2012-09-16T13:24:15.313 に答える