From: Hidetoshi NAGAI Date: 2003-08-21T00:57:15+09:00 Subject: [ruby-list:38175] Re: [ANN] Sokoban for Ruby-GNOME2 永井@知能.九工大です. From: Noritsugu Nakamura Subject: [ruby-list:38173] Re: [ANN] Sokoban for Ruby-GNOME2 Date: Wed, 20 Aug 2003 20:51:23 +0900 Message-ID: <20030820205254O.nnakamur@mxq.mesh.ne.jp> > In article <20030617232410.4c9a8308.mutoh@highway.ne.jp> > Masao Mutoh wrote: > > Ruby-GNOME2のサンプル用に、懐かしの倉庫番ゲームを作ってみました。 > > > > 自分で言うのも何なのですが、サンプルの割にはそこそこ遊べるものに > > なってしまったのでアナウンスさせていただきます。 > > 良かったら遊んでみてください。 > > > > http://ruby-gnome2.sourceforge.jp/hiki.cgi?Sokoban > > Ruby/Tk に移植してみました。 > 残念ながら last stage の保存ができません。(^_^; > http://www2s.biglobe.ne.jp/~Nori/ruby/dist/sokoban_tk-20030817.rb > stage data は Sokoban for Ruby-GNOME2 のから取ってきて下さい。 いいですねぇ.実に懐かしいです.(^_^) Ruby/Tk 版はメッセージの表示がちょっと崩れているので, 現実逃避にちょいとパッチを作ってみました. よかったらお試し下さい. -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp --- ../sokoban_tk-20030817.rb 2003-08-20 22:45:22.000000000 +0900 +++ sokoban_tk.rb 2003-08-21 00:46:16.000000000 +0900 @@ -177,12 +177,12 @@ ['k', 0, -1], ['Up', 0, -1], ['j', 0, 1], ['Down', 0, 1], ] - MESSAGE = %Q[ - LEFT - h or Left RESTART - r - RIGHT - l or Right NEXT STAGE - n - TOP - k or Top PREVIOUS STAGE - p - DOWN - j or Down QUIT - q - UNDO - u + MESSAGE = [ + %w(LEFT - h or Left RESTART - r), + %w(RIGHT - l or Right NEXT_STAGE - n), + %w(TOP - k or Top PREVIOUS_STAGE - p), + %w(DOWN - j or Down QUIT - q), + %w(UNDO - u) ] def create_stage(stage) @stage = stage @@ -191,6 +191,8 @@ end canvas = TkCanvas.new(@base_box) { bg "white" + borderwidth 3 + relief 'sunken' pack } @map = Array.new @@ -246,19 +248,43 @@ vbox = TkFrame.new { pack } - TkLabel.new(vbox) { + TkLabel.new(vbox, 'borderwidth'=>0, 'pady'=>1, 'anchor'=>'s') { text "Sokoban" fg "#ff0000" - pack + font ( TkFont.new({'family'=>'lucida', 'size'=>26}) ) + pack('pady'=>1, 'ipady'=>5) } - TkLabel.new(vbox) { + fnt = nil + TkLabel.new(vbox, 'borderwidth'=>0, 'pady'=>0) { text "A sample script for Ruby/Tk" fg "#ff5500" + fnt = font pack } - TkMessage.new(vbox) { - text MESSAGE - pack + TkFrame.new(vbox){|f| + msgfont = TkFont.new({'family'=>fnt, 'size'=>12}) + MESSAGE.each_with_index{|msg,idx| + TkGrid.configure( + TkLabel.new(f, 'text'=>msg[0], 'font'=>msgfont, 'fg'=>'darkblue', + 'borderwidth'=>0, 'pady'=>0, 'padx'=>3), + TkLabel.new(f, 'text'=>msg[1], 'font'=>msgfont, 'fg'=>'darkblue', + 'borderwidth'=>0, 'pady'=>0, 'padx'=>3), + TkLabel.new(f, 'text'=>msg[2], 'font'=>msgfont, 'fg'=>'#0033ff', + 'borderwidth'=>0, 'pady'=>0, 'padx'=>3), + TkLabel.new(f, 'text'=>msg[3], 'font'=>msgfont, 'fg'=>'darkblue', + 'borderwidth'=>0, 'pady'=>0, 'padx'=>3), + TkLabel.new(f, 'text'=>msg[4], 'font'=>msgfont, 'fg'=>'#0033ff', + 'borderwidth'=>0, 'pady'=>0, 'padx'=>3), + TkFrame.new(f, 'width'=>9), + TkLabel.new(f, 'text'=>msg[5], 'font'=>msgfont, 'fg'=>'darkblue', + 'borderwidth'=>0, 'pady'=>0, 'padx'=>3), + TkLabel.new(f, 'text'=>msg[6], 'font'=>msgfont, 'fg'=>'darkblue', + 'borderwidth'=>0, 'pady'=>0, 'padx'=>3), + TkLabel.new(f, 'text'=>msg[7], 'font'=>msgfont, 'fg'=>'#0033ff', + 'borderwidth'=>0, 'pady'=>0, 'padx'=>3), + 'sticky'=>'wns') + } + pack('pady'=>7) } @label_stage = TkLabel.new { pack