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 生成のあたりがまだまだ複雑すぎる。