game.loading do |loader|
loader.add :window, :system => "window"
loader.add :gui_item, :system => "gui_item"
end
game.on_init do
set_window_image :window
set_gui_image :gui_item
scene_change :start_scene
end
scene :start_scene do |scene|
scene.on_init do
speak("選択肢のテストです")
result = show_select_window(scene, "選択してください", ["進む","やめる"])
case result
when "進む"
speak("進むを選びました")
when "やめる"
speak("やめるを選びました")
else
speak("ここには来ないはず")
end
# ゲーム終了
speak("選択肢のテストを終了します")
game.change_project "start_menu"
end
end
# 以下、選択肢を表示する関数
# この関数をコピペして使ってください
def show_select_window(scene, message, selecteds = [])
result = -1
loop_flag = true
sprites = []
if selecteds.length == 0
speak("選択肢がありません")
return -1
elsif selecteds.length == 1
points = [[350, 100]]
elsif selecteds.length == 2
points = [[350, 120], [350, 240]]
elsif selecteds.length == 3
points = [[350, 100], [350, 200], [350, 300]]
else
points = [[350, 80], [350, 160], [350, 240], [350, 320]]
end
# メッセージの表示
text = scene.text :position => [200, 410]
text.set_text_area_size 500, 300
text.set_font_point_size 32
text.set_text(message)
sprites << text
# 選択肢の表示
index = 0
selecteds.each do |item|
text = scene.text :position => points[index]
text.set_text_area_size 240, 70
text.set_font_point_size 32
text.set_text(item)
sprites << text
text.event :on_click do |event|
# 結果をセット
result = item
# 足止め処理を終了する
loop_flag = false
# 選択肢を表示しているスプライトを削除
sprites.each do |sprite|
sprite.delete
end
end
index += 1
end
# 選択肢が選択されるまで処理を足止め
while loop_flag
# wait_time関数を呼ばないとビジーループになってしまう
wait_time(50)
end
result
end