game.loading do |loader|
loader.add :window, :system => "window"
loader.add :gui_item, :system => "gui_item"
loader.add :bac, 34
loader.add :select_bac, 83#使う場合は、ここに240×60の選択肢背景画像を入れてください
end
game.on_init do
set_window_image :window
set_gui_image :gui_item
scene_change :s1
end
# 選択肢の結果を保存する変数
select_result = {}
### setVariable、getVariable関数↓↓↓
Variable = {}
def setVariable(a, b)
Variable[a] = b
end
def getVariable(a)
Variable[a]
end
### setVariable、getVariable関数↑↑↑
def aa(a)
game.loading do |loader|
loader.add :bac, a
end
sprite_template :bac do |st|
st.texture :bac
st.src_size 800,450
st.dest_size 800,450
end
end
# プロローグ
scene :s1 do |scene|
aa(34)#うまく動作していない
scene.sprite :bac => :bac
scene.on_init do
setVariable(:a, "要望があれば、コメントにどうぞ")
speak("選択肢関数の表示テスト")
scene_change :start_scene
end
end
scene :start_scene do |scene|
scene.add :image, :texture => :bac, :align => :fullscreen
scene.on_init do
show_select_window(scene,:select_result_scene,select_result, "選択してください", ["進む","やめる"])
def sa(i)#def で囲んで無理やりここに戻ってこれるようにする
case i
when "進む"
scene_change :s01
when "やめる"
speak("プレーありがとうございました")
speak(getVariable(:a))
game.change_project "start_menu" #ゲーム終了
else
speak("エラー")
end
end
end
end
# 選択肢を表示するシーン
scene :s01 do |scene|
scene.add :image, :texture => :bac, :align => :fullscreen
scene.on_init do
show_select_window(scene,:select_result_scene,select_result, "選択してください", ["もどる","弱点をみる"])
def sa(i)
case i
when "もどる"
scene_change :start_scene
when "弱点をみる"
speak("見ての通り選択肢がを選んだ後も消えない")
scene_change :s01
else
speak("エラー")
end
end
end
end
# 以下、選択肢を表示する関数
def show_select_window(scene, scene_name, select_result, message, selecteds = [])
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
# メッセージの表示
scene.add :image, :texture =>:select_bac, :position => [-100,405], :scale => [10.0, 1.0]
text = scene.text :position => [200, 410]
text.set_text_area_size 500, 300
text.set_font_point_size 32
text.set_text(message)
# 選択肢の表示
index = 0
selecteds.each do |item|
scene.add :image, :texture =>:select_bac, :position => [points[index][0]-10,points[index][1]-10]
text = scene.text :position => points[index]
text.set_text_area_size 240, 70
text.set_font_point_size 32
text.set_text(item)
text.event :on_click do |event|
select_result[:result] = item
sa(item)
#scene_change :scene_name
end
index += 1
end
end