# <とりかさんのCoR-RPG>
game.draw_collision_mode true
# ゲームに使用する画像のローディング
game.loading do |loader|
loader.add :window, :system => "window"
loader.add :gui_item, :system => "gui_item"
loader.add :human_image, 74
loader.add :GameWindow_image, 85
loader.add :image_AU, 67
loader.add :image_AR, 68
loader.add :image_AL, 69
loader.add :image_AD, 70
loader.add :image_ET, 72
loader.add :image_BK, 73
end
# ゲームの初期化
game.on_init do
set_window_image :window
set_gui_image :gui_item
# オープニングのシーンへ
scene_change :start_scene
end
# 大域変数
AR_Pos = [128, 800 - 128]
AR_Rad = 64
AR_Col = 48
BT_Pos = [450 - 128, 800 - 160]
BT_Rad = 64
MasuSize = 32
CharaMoveD = 2
CharaAnimeF = 4
Tyuusin = [392, 237]
Chara_now = [6, 6]
Move_status = 0
Move_Mode = 0
# オープニングシーン
scene :start_scene do |scene|
scene.on_init do
sp = scene.add :image, :template => :human, :center_position => [18 + 32 * Chara_now[0], 18 + 32 * Chara_now[1]]
aa = scene.add :image, :template => :GameWindow, :position => [0, 0]
au = scene.add :image, :template => :ARROW_U, :center_position => [AR_Pos[0], AR_Pos[1] - AR_Rad]
ar = scene.add :image, :template => :ARROW_R, :center_position => [AR_Pos[0] + AR_Rad, AR_Pos[1]]
al = scene.add :image, :template => :ARROW_L, :center_position => [AR_Pos[0] - AR_Rad, AR_Pos[1]]
ad = scene.add :image, :template => :ARROW_D, :center_position => [AR_Pos[0], AR_Pos[1] + AR_Rad]
be = scene.add :image, :template => :Button_ET, :center_position => [BT_Pos[0] + BT_Rad, BT_Pos[1]]
bb = scene.add :image, :template => :Button_BK, :center_position => [BT_Pos[0], BT_Pos[1] + BT_Rad]
AR_SUM = scene.add :collision, :center_position => [250, 400], :scale => [500, 800]
be.event :on_touch_down do |event|
speak "こんにちわ!"
end
bb.event :on_touch_down do |event|
speak "ゲームを終了します。"
# ゲーム終了
game.change_project "start_menu"
end
au.event :on_touch_down do |event|
Move_Mode = 2
end
au.event :on_touch_move do |event|
Move_Mode = 2
end
ar.event :on_touch_down do |event|
Move_Mode = 6
end
ar.event :on_touch_move do |event|
Move_Mode = 6
end
al.event :on_touch_down do |event|
Move_Mode = 4
end
al.event :on_touch_move do |event|
Move_Mode = 4
end
ad.event :on_touch_down do |event|
Move_Mode = 8
end
ad.event :on_touch_move do |event|
Move_Mode = 8
end
AR_SUM.event :on_step do |event|
if (0 < Chara_now[1] && Move_status == 0 && Move_Mode == 2)
sp.change_motion :Move_up
Chara_now[1] -= 1
end
if (Chara_now[0] < 12 && Move_status == 0 && Move_Mode == 6)
sp.change_motion :Move_right
Chara_now[0] += 1
end
if (0 < Chara_now[0] && Move_status == 0 && Move_Mode == 4)
sp.change_motion :Move_left
Chara_now[0] -= 1
end
if (Chara_now[1] < 12 && Move_status == 0 && Move_Mode == 8)
sp.change_motion :Move_down
Chara_now[1] += 1
end
end
AR_SUM.event :on_touch_up do |event|
Move_Mode = 0
end
end
end
# 表示する人間のテンプレート
sprite_template :human do |st|
st.texture :human_image
st.src_size 20, 28
st.dest_size 40, 56
st.center_offset 5, 25
st.layer_order 10
st.collision :rect, :position => [4, 24], :width => [MasuSize, MasuSize]
st.animation :stop do |commands|
commands.loop false
commands.copy_rect :frame => CharaAnimeF / 2, :src => [1, 0]
commands.wait_animation
end
st.animation :down do |commands|
commands.loop false
commands.copy_rect :frame => CharaAnimeF / 2, :src => [1, 0]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [2, 0]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [1, 0]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [0, 0]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF / 2, :src => [1, 0]
commands.wait_animation
end
st.animation :up do |commands|
commands.loop false
commands.copy_rect :frame => CharaAnimeF / 2, :src => [1, 3]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [2, 3]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [1, 3]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [0, 3]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF / 2, :src => [1, 3]
commands.wait_animation
end
st.animation :left do |commands|
commands.loop false
commands.copy_rect :frame => CharaAnimeF / 2, :src => [1, 1]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [2, 1]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [1, 1]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [0, 1]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF / 2, :src => [1, 1]
commands.wait_animation
end
st.animation :right do |commands|
commands.loop false
commands.copy_rect :frame => CharaAnimeF / 2, :src => [1, 2]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [2, 2]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [1, 2]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF, :src => [0, 2]
commands.wait_animation
commands.copy_rect :frame => CharaAnimeF / 2, :src => [1, 2]
commands.wait_animation
end
# キャラモーション
st.motion :default do |commands|
commands.loop false
commands.proc_call do |sprite|
sprite.change_animation :stop
end
end
# Move_up
st.motion :Move_up do |commands|
commands.loop false
commands.proc_call do |sprite|
Move_status = 1
sprite.change_animation :up
end
commands.move_by_v 0, -MasuSize, CharaMoveD
commands.wait_motion
commands.proc_call do |sprite|
Move_status = 0
end
end
# Move_down
st.motion :Move_down do |commands|
commands.loop false
commands.proc_call do |sprite|
Move_status = 1
sprite.change_animation :down
end
commands.move_by_v 0, MasuSize, CharaMoveD
commands.wait_motion
commands.proc_call do |sprite|
Move_status = 0
end
end
# Move_right
st.motion :Move_right do |commands|
commands.loop false
commands.proc_call do |sprite|
Move_status = 1
sprite.change_animation :right
end
commands.move_by_v MasuSize, 0, CharaMoveD
commands.wait_motion
commands.proc_call do |sprite|
Move_status = 0
end
end
# Move_left
st.motion :Move_left do |commands|
commands.loop false
commands.proc_call do |sprite|
Move_status = 1
sprite.change_animation :left
end
commands.move_by_v -MasuSize, 0, CharaMoveD
commands.wait_motion
commands.proc_call do |sprite|
Move_status = 0
end
end
end
# 表示するゲーム画面のテンプレ
sprite_template :GameWindow do |st|
st.texture :GameWindow_image
st.src_size 450, 800
st.dest_size 450, 800
end
# 入力ボタンのテンプレ
sprite_template :ARROW_U do |st|
st.texture :image_AU
st.src_size 48, 48
st.dest_size 64, 64
st.center_offset 64 / 2, 64 / 2
st.collision :circle, :mode => :center, :position => [0, 0], :radius => AR_Col
end
sprite_template :ARROW_R do |st|
st.texture :image_AR
st.src_size 48, 48
st.dest_size 64, 64
st.center_offset 64 / 2, 64 / 2
st.collision :circle, :mode => :center, :position => [0, 0], :radius => AR_Col
end
sprite_template :ARROW_L do |st|
st.texture :image_AL
st.src_size 48, 48
st.dest_size 64, 64
st.center_offset 64 / 2, 64 / 2
st.collision :circle, :mode => :center, :position => [0, 0], :radius => AR_Col
end
sprite_template :ARROW_D do |st|
st.texture :image_AD
st.src_size 48, 48
st.dest_size 64, 64
st.center_offset 64 / 2, 64 / 2
st.collision :circle, :mode => :center, :position => [0, 0], :radius => AR_Col
end
sprite_template :Button_ET do |st|
st.texture :image_ET
st.src_size 64, 64
st.dest_size 64, 64
st.center_offset 64 / 2, 64 / 2
st.collision :circle, :mode => :center, :position => [0, 0], :radius => 32
end
sprite_template :Button_BK do |st|
st.texture :image_BK
st.src_size 64, 64
st.dest_size 64, 64
st.center_offset 64 / 2, 64 / 2
st.collision :circle, :mode => :center, :position => [0, 0], :radius => 32
end