CoRサンプル集: CoRでゲームをつくってみよう / 第03回

こちらのゲームは
CoRでゲームをつくってみよう
第03回 背景やキャラクターを動かす
サンプルコードです

スクリプトの参照はこちらから
プレー:11 (人数:7) クリア:0 評価: 0 (0回)
#--------------------------------------- #シューティングサンプルゲーム(新CoR) #--------------------------------------- #_/_/_/_/_/_/ 外部ソースファイルの読み込み _/_/_/_/_/_/ #_/_/_/_/_/_/ グローバル変数の定義 _/_/_/_/_/_/ #_/_/_/_/_/_/ ユーザ関数の定義 _/_/_/_/_/_/ #********** startシーン ここから ********** scene 'start' do #_/_/_/ ローカル変数の定義 _/_/_/ #キー入力用のフラグ key_flg_up_st = nil key_flg_up_do = nil key_flg_up_en = nil key_flg_down_st = nil key_flg_down_do = nil key_flg_down_en = nil key_flg_left_st = nil key_flg_left_do = nil key_flg_left_en = nil key_flg_right_st = nil key_flg_right_do = nil key_flg_right_en = nil #メイン背景オブジェクト obj_bg_00_spr = nil obj_bg_01_spr = nil obj_bg_pos_x = nil obj_bg_pos_y = nil obj_bg_speed = nil #プレイヤーキャラクターオブジェクト obj_char_spr = nil obj_char_pos_x = nil obj_char_pos_y = nil obj_char_size_w = nil obj_char_size_h = nil obj_char_pos_x_old = nil obj_char_pos_y_old = nil obj_char_speed = nil obj_char_speed_r_x = nil obj_char_speed_r_y = nil obj_char_w_max = nil obj_char_h_max = nil obj_char_anime = nil obj_char_flg_up = nil obj_char_flg_down = nil obj_char_flg_left = nil obj_char_flg_right = nil preload do #----- ゲームロード時に実行される処理 ----- #_/_/_/ 素材のロード _/_/_/ #メイン背景 image 'img_bg_00', id: 76800 #プレイヤーキャラクター image 'img_char', id: 76793, frame_size: [64, 64] end create do #----- シーンロード時に実行される処理 ----- #_/_/_/ 変数の初期化 _/_/_/ #キー入力用のフラグ key_flg_up_st = false key_flg_up_do = false key_flg_up_en = false key_flg_down_st = false key_flg_down_do = false key_flg_down_en = false key_flg_left_st = false key_flg_left_do = false key_flg_left_en = false key_flg_right_st = false key_flg_right_do = false key_flg_right_en = false #メイン背景オブジェクト obj_bg_pos_x = 0 obj_bg_pos_y = 0 obj_bg_speed = 1.5 #プレイヤーキャラクターオブジェクト obj_char_size_w = 64 obj_char_size_h = 64 obj_char_pos_x = (800 - obj_char_size_w) / 2 obj_char_pos_y = 500 obj_char_pos_x_old = obj_char_pos_x obj_char_pos_y_old = obj_char_pos_y obj_char_speed = 5 wrk_r = 45 * Math::PI / 180 obj_char_speed_r_x = Math.cos(wrk_r) * obj_char_speed obj_char_speed_r_y = Math.sin(wrk_r) * obj_char_speed obj_char_w_max = (800 - obj_char_size_w) obj_char_h_max = (600 - obj_char_size_h) obj_char_anime = 'neutral' obj_char_flg_up = false obj_char_flg_down = false obj_char_flg_left = false obj_char_flg_right = false #_/_/_/ 素材の初期化 _/_/_/ #メイン背景 obj_bg_00_spr = put_sprite 'spr_bg_00' do position obj_bg_pos_x, obj_bg_pos_y src_rect 0, 0, 800, 600 end obj_bg_01_spr = put_sprite 'spr_bg_00' do position obj_bg_pos_x, (obj_bg_pos_y - 600) src_rect 0, 0, 800, 600 end #プレイヤーキャラクター obj_char_spr = put_sprite 'spr_char' do position obj_char_pos_x, obj_char_pos_y frame_index 0 end #アニメーションの開始 obj_char_spr.start_animation('neutral') end update do #----- シーンのメインループ処理 ----- #_/_/_/ 入力の判定 _/_/_/ #キー入力判定 if keyboard.down?('UP') key_flg_up_st = true else key_flg_up_st = false key_flg_up_do = false end if keyboard.down?('DOWN') key_flg_down_st = true else key_flg_down_st = false key_flg_down_do = false end if keyboard.down?('LEFT') key_flg_left_st = true else key_flg_left_st = false key_flg_left_do = false end if keyboard.down?('RIGHT') key_flg_right_st = true else key_flg_right_st = false key_flg_right_do = false end #_/_/_/ メイン処理 _/_/_/ #キー入力処理 if (key_flg_up_st && !key_flg_up_do) key_flg_up_do = true #--- 押された時に実行する処理 --- obj_char_flg_up = true elsif key_flg_up_do key_flg_up_en = true #--- 押されつづけている時に実行する処理 --- obj_char_flg_up = true elsif key_flg_up_en key_flg_up_en = false #--- 離された時に実行する処理 --- obj_char_flg_up = false end if (key_flg_down_st && !key_flg_down_do) key_flg_down_do = true #--- 押された時に実行する処理 --- obj_char_flg_down = true elsif key_flg_down_do key_flg_down_en = true #--- 押されつづけている時に実行する処理 --- obj_char_flg_down = true elsif key_flg_down_en key_flg_down_en = false #--- 離された時に実行する処理 --- obj_char_flg_down = false end if (key_flg_left_st && !key_flg_left_do) key_flg_left_do = true #--- 押された時に実行する処理 --- obj_char_flg_left = true elsif key_flg_left_do key_flg_left_en = true #--- 押されつづけている時に実行する処理 --- obj_char_flg_left = true elsif key_flg_left_en key_flg_left_en = false #--- 離された時に実行する処理 --- obj_char_flg_left = false end if (key_flg_right_st && !key_flg_right_do) key_flg_right_do = true #--- 押された時に実行する処理 --- obj_char_flg_right = true elsif key_flg_right_do key_flg_right_en = true #--- 押されつづけている時に実行する処理 --- obj_char_flg_right = true elsif key_flg_right_en key_flg_right_en = false #--- 離された時に実行する処理 --- obj_char_flg_right = false end #プレイヤーキャラクター移動方向のフラグによって処理を分岐 if (obj_char_flg_up && obj_char_flg_left) #プレイヤーキャラクターのアニメーションを変更 if obj_char_anime != 'left' obj_char_anime = 'left' obj_char_spr.start_animation(obj_char_anime) end #プレイヤーキャラクターの座標を変更 obj_char_pos_x -= obj_char_speed_r_x obj_char_pos_y -= obj_char_speed_r_y elsif (obj_char_flg_down && obj_char_flg_left) #プレイヤーキャラクターのアニメーションを変更 if obj_char_anime != 'left' obj_char_anime = 'left' obj_char_spr.start_animation(obj_char_anime) end #プレイヤーキャラクターの座標を変更 obj_char_pos_x -= obj_char_speed_r_x obj_char_pos_y += obj_char_speed_r_y elsif (obj_char_flg_up && obj_char_flg_right) #プレイヤーキャラクターのアニメーションを変更 if obj_char_anime != 'right' obj_char_anime = 'right' obj_char_spr.start_animation(obj_char_anime) end #プレイヤーキャラクターの座標を変更 obj_char_pos_x += obj_char_speed_r_x obj_char_pos_y -= obj_char_speed_r_y elsif (obj_char_flg_down && obj_char_flg_right) #プレイヤーキャラクターのアニメーションを変更 if obj_char_anime != 'right' obj_char_anime = 'right' obj_char_spr.start_animation(obj_char_anime) end #プレイヤーキャラクターの座標を変更 obj_char_pos_x += obj_char_speed_r_x obj_char_pos_y += obj_char_speed_r_y elsif obj_char_flg_up #プレイヤーキャラクターのアニメーションを変更 if obj_char_anime != 'neutral' obj_char_anime = 'neutral' obj_char_spr.start_animation(obj_char_anime) end #プレイヤーキャラクターの座標を変更 obj_char_pos_y -= obj_char_speed elsif obj_char_flg_down #プレイヤーキャラクターのアニメーションを変更 if obj_char_anime != 'neutral' obj_char_anime = 'neutral' obj_char_spr.start_animation(obj_char_anime) end #プレイヤーキャラクターの座標を変更 obj_char_pos_y += obj_char_speed elsif obj_char_flg_left #プレイヤーキャラクターのアニメーションを変更 if obj_char_anime != 'left' obj_char_anime = 'left' obj_char_spr.start_animation(obj_char_anime) end #プレイヤーキャラクターの座標を変更 obj_char_pos_x -= obj_char_speed elsif obj_char_flg_right #プレイヤーキャラクターのアニメーションを変更 if obj_char_anime != 'right' obj_char_anime = 'right' obj_char_spr.start_animation(obj_char_anime) end #プレイヤーキャラクターの座標を変更 obj_char_pos_x += obj_char_speed else #プレイヤーキャラクターのアニメーションを変更 if obj_char_anime != 'neutral' obj_char_anime = 'neutral' obj_char_spr.start_animation(obj_char_anime) end end #プレイヤーキャラクターの移動範囲制限 if obj_char_pos_x < 0 obj_char_pos_x = 0 end if obj_char_pos_x > obj_char_w_max obj_char_pos_x = obj_char_w_max end if obj_char_pos_y < 0 obj_char_pos_y = 0 end if obj_char_pos_y > obj_char_h_max obj_char_pos_y = obj_char_h_max end #プレイヤーキャラクターのオブジェクトを移動する if (obj_char_pos_x_old != obj_char_pos_x) || (obj_char_pos_y_old != obj_char_pos_y) obj_char_pos_x_old = obj_char_pos_x obj_char_pos_y_old = obj_char_pos_y obj_char_spr.position obj_char_pos_x, obj_char_pos_y end #背景のスクロール obj_bg_pos_y += obj_bg_speed #背景のスクロールをループさせる if obj_bg_pos_y > 600 obj_bg_pos_y -= 600 end #背景のオブジェクトを移動する obj_bg_00_spr.position obj_bg_pos_x, obj_bg_pos_y obj_bg_01_spr.position obj_bg_pos_x, (obj_bg_pos_y - 600) end render do #----- シーンのメイン描画処理 ----- #_/_/_/ 描画の変更 _/_/_/ end end #********** startシーン ここまで ********** #_/_/_/_/_/_/ 素材の定義 _/_/_/_/_/_/ #メイン背景 sprite 'spr_bg_00' do image 'img_bg_00' origin :left_top end #プレイヤーキャラクター sprite 'spr_char' do image 'img_char' origin :left_top animation 'neutral', [0, 3], 10, true animation 'left', [1, 4], 10, true animation 'right', [2, 5], 10, true end #_/_/_/_/_/_/ ゲームロード後最初のシーンを開始する _/_/_/_/_/_/ start_scene 'start'
コード一覧
  • start.rb
投稿者:Cdv30200 aoi icon mini aoihikawa 対象Lv1 公開日:2022年08月11日 08:23:43
プレー内容を公開する

違反を通報する

コメントする

コメントするには、ログインする必要があります。

コメント一覧

コメントはありません。

プレー履歴

プレー履歴はありません。

全てのプレー履歴を見る

新着レビュー

レビューはまだ投稿されていません。 作品の感想を作者に伝えるためにレビューを投稿してみませんか?

全てのレビュー

フォロー/シェア

ブログ/Wiki/掲示板で共有する

Rmake内(ブログ/Wiki/掲示板)に貼り付ける場合は以下のタグを利用してください。

リンク

プレイヤー

外部ホームページに貼り付ける

外部ホームページに貼り付ける場合は以下のタグを利用してください。