# ゲーム全体のローディング処理
game.loading do |loader|
# 画像ファイルのローディング
loader.add :window, :system => "window"
loader.add :gui_item, :system => "gui_item"
loader.add :haikei, 35
loader.add :ikidomari, 45
loader.add :sayu, 42
loader.add :deguti, 43
loader.add :wakare, 44
loader.add :migi, 46
loader.add :sime, 47
loader.add :hiraku, 48
loader.add :hidari, 49
loader.add :owari, 50
loader.add :clear, 51
loader.add :kanzen, 52
end
game.on_init do
set_window_image :window
set_gui_image :gui_item
scene_change :s1
end
# 選択肢の結果を保存する変数
select_result = {}
# プロローグ
scene :s1 do |scene|
scene.add :image, :texture => :sime, :align => :fullscreen
scene.on_init do
speak("僕はどこにでもいる大学生\n無実の罪で投獄されてしまった。")
speak("死刑執行まで数時間、何とか脱出したい。")
speak("さっき囚人訓練時間の時に看守から盗めたこの鍵で、あの扉が開くはずだ。")
scene_change :s0000
end
end
# 選択肢を表示するシーン
scene :s0000 do |scene|
scene.add :image, :texture => :sime, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"<行動を選択せよ>",
[
"扉を開く",
]
)
end
end
scene :s0001 do |scene|
scene.add :image, :texture => :wakare, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"<行き先を選択せよ>",
[
"左へ",
"直進",
"右へ",
]
)
end
end
scene :s0002 do |scene|
scene.add :image, :texture => :sayu, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"<行き先を選択せよ>",
[
"左角へ",
"右角へ",
]
)
end
end
scene :s0003 do |scene|
scene.add :image, :texture => :ikidomari, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"<行き先を選択せよ>",
[
"引き返す",
]
)
end
end
scene :s0004 do |scene|
scene.add :image, :texture => :wakare, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"<行き先を選択せよ>",
[
"ヒだリ",
"まっスぐ",
"みギ",
]
)
end
end
scene :s0005 do |scene|
scene.add :image, :texture => :hidari, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"<行き先を選択せよ>",
[
"左へ",
"ギブアップ",
]
)
end
end
scene :s998 do |scene|
scene.add :image, :texture => :owari, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
" ",
[
"時間を戻す",
"立ち上がる",
]
)
end
end
scene :s0006 do |scene|
scene.add :image, :texture => :sayu, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"<行き先を選択せよ>",
[
"左へ走る",
"右へ走る",
]
)
end
end
scene :s0007 do |scene|
scene.add :image, :texture => :deguti, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"<行き先を選択せよ>",
[
"光の先へ",
]
)
end
end
scene :s0008 do |scene|
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"<スイッチを選択せよ>",
[
"赤",
"青",
"黄",
]
)
end
end
scene :s0009 do |scene|
scene.add :image, :texture => :deguti, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
"<行き先を選択せよ>",
[
"光の先へ!",
]
)
end
end
scene :s999 do |scene|
scene.add :image, :texture => :owari, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
" ",
[
"時間を戻す",
]
)
end
end
scene :s000 do |scene|
scene.add :image, :texture => :clear, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
" ",
[
"時間を戻す",
"終わる",
]
)
end
end
scene :s001 do |scene|
scene.add :image, :texture => :kanzen, :align => :fullscreen
scene.on_init do
show_select_window(
scene,
:select_result_scene,
select_result,
" ",
[
"時間を戻す",
"終わる",
]
)
end
end
# 選択肢の結果を表示するシーン
scene :select_result_scene do
case select_result[:result]
when "扉を開く"
speak("扉が開いた")
speak("早速、奥へ進むとするか")
scene_change :s0001
when "左へ"
speak("左へ向かった")
speak("また分かれ道か")
scene_change :s0002
when "直進"
speak("そのまま直進した")
scene_change :s0003
when "右へ"
speak("右へ向かった。")
speak("しかし、見張りの看守に見つかってしまった。")
scene_change :s999
when "引き返す"
speak("行き止まりか、引き返すか。")
speak("しかし、見張りの看守に見つかってしまった。")
scene_change :s999
when "左角へ"
speak("左角へ進んだ。")
speak("しかし、極度の空腹で倒れてしまった。")
scene_change :s999
when "右角へ"
speak("右角へ進んだ。")
speak("極度の絶望で、精神が少し不安定になった。")
scene_change :s0004
when "ヒだリ"
speak("ひ..ダリへ進んだ。")
speak("なぁんか見た事あるような場所だ。")
scene_change :s0001
when "まっスぐ"
speak("まっ..スぐに進んだ..。")
speak("とにかく仲間や家族の為に自分を落ち着かせた。")
speak("「こんなとこで、死んでたまるか!」")
scene_change :s0005
when "みギ"
speak("み..ギへ進んだ。")
scene_change :s0003
when "ギブアップ"
speak("「駄目だ、もう足が痛い、動けない。」")
speak("僕はその場に倒れ込んでしまった。")
scene_change :s998
when "立ち上がる"
speak("「駄目だ、こんなとこで諦めちゃ!」")
speak("僕は自分自身に言い聞かせ立ち上がった!")
speak("人生のゲームオーバーを回避したぞ!")
scene_change :s0006
when "光の先へ"
speak("こうして僕は外へと出ることが出来た。")
speak("いつの間にか、僕の手には不思議な紙切れを握っていた")
speak("よ う こ そ \n天 国 と い う 名 の 外 へ")
speak("僕の目の前は真っ白になった。")
speak("トゥルーエンド:天国への脱獄")
scene_change :s000
when "引き返す"
speak("「仕方がない・・・ 引き返そう・・・」")
speak("「ってここはどこだ?」")
scene_change :s0006
when "左へ走る"
speak("左へひたすら走った。")
speak("なんか薄っすらと光が見えてきた。")
scene_change :s0007
when "右へ走る"
speak("右へひたすら走った。")
speak("目の前には3つのスイッチがある。")
speak("貼り紙に\n『押すとランダムでワープ。』\nと書いてある。\n")
scene_change :s0008
when "赤"
speak("赤いスイッチを押した。")
speak("「ぽちっとな」")
scene_change :s0001
when "青"
speak("青いスイッチを押した。")
speak("「ぽちっとな」")
scene_change :s0009
when "黄"
speak("黄色いスイッチを押した")
speak("「ぽちっとな」")
scene_change :s0007
when "時間を戻す"
speak("こ..ここは..")
scene_change :s0001
when "光の先へ!"
speak("こうして僕は外へと出ることが出来た。")
speak("目の前には土下座する警察・検事がいた。")
speak("「真犯人が見つかった。本当に申し訳ない。」")
speak("「分かってもらえれば良いんです。」\nと一言残し、僕は刑務所を去った。\n")
speak("ハッピーエンド:無実の土下座")
scene_change :s001
when "終わる"
speak("Presented by リューイ")
# スタートメニューへ
game.change_project "start_menu"
scene_change :s0000
else
speak("エラー")
scene_change :s999
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 = [
[150, 100],
[550, 100]
]
elsif selecteds.length == 3
points = [
[150, 100],
[325, 100],
[550, 100]
]
else
# 選択肢の座標のリスト
points = [
[50, 100],
[250, 100],
[450, 100],
[650, 100]
]
end
# メッセージの表示
text = scene.text :position => [250, 410]
text.set_text_area_size 500, 200
text.set_font_point_size 32
text.set_text(message)
# 選択肢の表示
index = 0
selecteds.each do |item|
text = scene.text :position => points[index]
text.set_text_area_size 500, 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