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
speak("選択肢を表示する関数のテストです")
speak("ikosamiさんにインスパイアされて作ってみました。")
speak("コピペしようが改変しようが自由に使ってください。")
end
# 選択肢の結果を保存する変数
select_result = {}
# 選択肢を表示するシーン
scene :start_scene do |scene|
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"選択してください",
[
"選択肢1",
"選択肢2",
"選択肢3",
"選択肢4"
]
)
end
end
# 選択肢の結果を表示するシーン
scene :select_result_scene do
case select_result[:result]
when "選択肢1"
speak("選択肢1を選択しました")
when "選択肢2"
speak("選択肢2を選択しました")
when "選択肢3"
speak("選択肢3を選択しました")
when "選択肢4"
speak("選択肢4を選択しました")
else
speak("ここには来ないはず")
end
speak("選択肢を表示する関数のテストに戻ります")
scene_change :start_scene
end
# 以下、選択肢を表示する関数
def show_select_window(scene, scene_name, select_result, message, selecteds = [])
if selecteds.length == 0
speak("選択肢がありません")
return -1
end
# メッセージの表示
text = scene.text :position => [300, 410]
text.set_text_area_size 250, 200
text.set_font_point_size 32
text.set_text(message)
text.set_color 255, 0, 0, 255
# 選択肢の座標のリスト
points = [
[50, 100],
[250, 100],
[450, 100],
[650, 100]
]
# 選択肢の表示
index = 0
selecteds.each do |item|
text = scene.text :position => points[index]
text.set_text_area_size 250, 200
text.set_font_point_size 32
text.set_text(item)
text.event :on_click do |event|
select_result[:result] = item
scene_change scene_name
end
index += 1
end
end