2005-01-22
[るびま]入門記事第 4 回 (2)
サンプルプログラム(ビジュアルノベル)のプロトタイプを作成。 each はなくしたい。他にもまだまだ難しいところが残っているので修正が必要。 前回からの流れでスムーズに理解できるようにすることも意識している。
guiutil の中では tk を使っている。
require "guiutil" def init create_screen("game book", 640, 480) create_img_button(0, 640-32-16, 320, "exiticon0.gif", "exiticon1.gif") start_gui end def mainloop(tbl) scene = 'opening' fonts = [] while true fonts.each{|f| f.delete } fonts = [] scene_data = tbl[scene] message = scene_data[0] fonts.push create_font(message, 32,32) (scene_data.size-1).times{|i| idx = i+1 ch_msg = "#{idx}. #{scene_data[idx][1]}" fonts.push create_font_button(idx, ch_msg, 32, 320+i*32) } exit if scene_data[1] == nil input_value = get_button_id.to_i # ここでブロック! exit if input_value == 0 scene = scene_data[input_value][0] end end # このテーブル構造の説明(理解)が最大のポイント Tbl = { 'opening' => [ "3本の分かれ道があります。どの道を進みますか。", ['right', "左の道"], ['right', "真ん中の道"], ['right', "右の道"], ], 'right' => [ "しばらく歩き続けると\nもとの場所にもどってしまいました。", ['opening', "次へ"], ], } init mainloop Tbl
やっぱり、朝ごはんを食べながらさくっとこういうのが書けてしまう Ruby はすごく好きだ。てゆーか、オレってすげー感?
あとは、背景を表示画像できるようにしないと。
font 生成のあたりがまだまだ複雑すぎる。