【講座?】CoRを触ってみる22~三目並べを作る9(終)~【自分用メモ?】
投稿者: 光楼(114) 投稿日:2017/07/02 18:06
【講座?】CoRを触ってみる21~三目並べを作る8~【自分用メモ?】←前回
課金してゆるゆり全話一気見してました。
#このブログの情報は2017年7月02日現在のものです。今後変更になる可能性があります。
今回はゲームに音楽を追加します。
実質これが終わればゲーム完成です。
ではまずタイトル画面で音楽を鳴らしましょう!
今回用意したのはこちら↓
素材をゲームに追加する方法は導入編で解説したので説明は省きます。
実際音楽の鳴らし方もRmakeSoundクラス編でやってるんだけどね。
では、start.rbを開いてください。
音楽が鳴らないよ!って方はブラウザのキャッシュを消してください。
別のソースファイルを実行する場合、再生している音楽は止まらないので止める必要があります。
次はgame.rbを開いてください。
対戦画面では
を鳴らしたいと思います。
タイトル画面に戻るときも音楽を止めます。
場所はupdateの最後あたりです。
音楽は以上です。
次は効果音を鳴らしましょう!
まずは「〇」,「×」を置いた時の効果音です。
↑を使おうと思います。
では再生させましょう。
はい、続いては決着がついた時のファンファーレです。
勝った時は
負けた時、引き分けの時は
を使います。
では先ほどと同じように……
準備が出来たので鳴らします。
updateの最後の方です。
なぜgame_clearの後にwait_timeがあるかですって?
……何故かクリアした後に敗北音が再生されるからです。
三目並べはこれで完成です。お疲れさまでした!
あとやることといえばエンディング画面の設定とかでしょうか?
これはCoRもRmakeもやり方は同じです。
一応私は を登録しました。
あーそうそう、敵のAIのランダム選択のところ、無限ループ対策で100ミリ秒の時間待ち入れてましたが、もう不要なので消してください。
では『三目並べを作る』はこれにて終了です。有難うございました!
CoR講座自体は期間はあきますが、もう少し続けようと思います。
それでは、さようなら~
【CoR講座用】三目並べ - Code on Rmake
次回→未定
ツイート
課金してゆるゆり全話一気見してました。
#このブログの情報は2017年7月02日現在のものです。今後変更になる可能性があります。
今回はゲームに音楽を追加します。
実質これが終わればゲーム完成です。
ではまずタイトル画面で音楽を鳴らしましょう!
今回用意したのはこちら↓
素材をゲームに追加する方法は導入編で解説したので説明は省きます。
実際音楽の鳴らし方もRmakeSoundクラス編でやってるんだけどね。
では、start.rbを開いてください。
#前略 #=====メニュー=====# scene 'menu' do #変数定義 bg_sprite = nil #背景 title_textsprite = nil #タイトル description_textsprite = nil #説明文 ##### ↓追加分↓ ##### op_music = nil #音楽 ##### ↑追加分↑ ##### preload do #背景素材読込み image 'メニュー背景画像', id: 318428, frame_size: [225, 400], frame_pattern: 11 ##### ↓追加分↓ ##### #音楽素材読込み music 'オープニング音楽', id: 279914 ##### ↑追加分↑ ##### end create do #背景画像配置 bg_sprite = put_sprite 'メニュー背景' do position 0, 450 scale 2.0, 2.0 angle -90 frame_index 0 end #タイトル配置 title_textsprite = put_text 'タイトル' do position 800/2, 450/4 text '三目並べ' end #説明文配置 description_textsprite = put_text '説明文' do position 800/2, 450/4*3 text '- 画面をクリックでスタート -' end ##### ↓追加分↓ ##### #音楽作成 op_music = add_music('オープニング音楽') #再生 op_music.play ##### ↑追加分↑ ##### #背景アニメ開始 bg_sprite.start_animation('通常アニメ') end #後略
音楽が鳴らないよ!って方はブラウザのキャッシュを消してください。
別のソースファイルを実行する場合、再生している音楽は止まらないので止める必要があります。
#前略 update do #クリック&タップ判定 if pointer.down? ##### ↓追加分↓ ##### #音楽停止 op_music.stop ##### ↑追加分↑ ##### #シーン「game」の開始 change_scene 'game' end #後略
次はgame.rbを開いてください。
対戦画面では
を鳴らしたいと思います。
#=====対戦=====# scene 'game' do #変数定義 bg_sprite = nil #背景 mesh_sprite = nil #マス mark_sprite = nil #〇 disposition_text_sprite = nil board_data = nil #盤面情報 comparison_board_data = nil #盤面変化判定用配列 turn = nil #ターン decision = nil #勝敗判定実行判定用 ##### ↓追加分↓ ##### main_music = nil ##### ↑追加分↑ ##### #定数定義 screen_width = 800 #ゲーム画面幅 screen_high = 450 #ゲーム画面高 board_size = 125 #盤面1マス当たりのサイズ #定数計算 board_left_position = (screen_width / 2 - (board_size / 2 + board_size)).floor #盤面一番左の位置 board_up_position = (screen_high / 2 - (board_size / 2 + board_size)).floor #盤面一番上の位置 #デバッグ debug_log "ソースファイル読込み完了!" preload do #背景素材読込み image 'メニュー背景画像', id: 318428, frame_size: [225, 400], frame_pattern: 11 image 'マス画像', id: 319591 image '〇画像', id: 202007 image '×画像', id: 202014 ##### ↓追加分↓ ##### #音楽素材読込み music 'メイン音楽', id: 203732 ##### ↑追加分↑ ##### end create do #変数設定 board_data = [0,0,0,0,0,0,0,0,0] #盤面情報 0:空白 1:〇 -1:× comparison_board_data = board_data.dup #盤面変化判定用配列 turn = 0 #ターン decision = 0 #勝敗判定実行判定用 #背景画像配置 bg_sprite = put_sprite 'メニュー背景' do position 0, 450 scale 2.0, 2.0 angle -90 frame_index 0 end #マス画像配置 mesh_sprite = put_sprite 'マス' do position 800 / 2, 450 / 2 frame_index 0 end ##### ↓追加分↓ ##### #音楽作成 main_music = add_music('メイン音楽') #再生 main_music.play ##### ↑追加分↑ ##### #背景アニメ開始 bg_sprite.start_animation('通常アニメ') end #後略
タイトル画面に戻るときも音楽を止めます。
場所はupdateの最後あたりです。
#前略 else ####勝敗判定#### disposition = win_or_loss(board_data) if disposition != 0 #終了処理 wait_time(100) disposition_text_sprite = put_text '決着' do position screen_width / 2, screen_high / 2 end disposition_text_sprite.bold true case disposition when 1 disposition_text_sprite.color '#FF0000' disposition_text_sprite.text '勝利!' #クリア処理 wait_time(2000) ##### ↓追加分↓ ##### #音楽停止 main_music.stop ##### ↑追加分↑ ##### game_clear when 2 disposition_text_sprite.color '#0000FF' disposition_text_sprite.text '敗北' when 3 disposition_text_sprite.color '#00FF00' disposition_text_sprite.text '引き分け' end wait_time(2000) ##### ↓追加分↓ ##### #音楽停止 main_music.stop ##### ↑追加分↑ ##### #シーン「menu」の開始 change_scene 'menu' end decision += 1 end end #後略
音楽は以上です。
次は効果音を鳴らしましょう!
まずは「〇」,「×」を置いた時の効果音です。
↑を使おうと思います。
#=====対戦=====# scene 'game' do #変数定義 bg_sprite = nil #背景 mesh_sprite = nil #マス mark_sprite = nil #〇 disposition_text_sprite = nil board_data = nil #盤面情報 comparison_board_data = nil #盤面変化判定用配列 turn = nil #ターン decision = nil #勝敗判定実行判定用 main_music = nil #音楽 ##### ↓追加分↓ ##### locate_sound = nil #効果音 ##### ↑追加分↑ ##### #定数定義 screen_width = 800 #ゲーム画面幅 screen_high = 450 #ゲーム画面高 board_size = 125 #盤面1マス当たりのサイズ #定数計算 board_left_position = (screen_width / 2 - (board_size / 2 + board_size)).floor #盤面一番左の位置 board_up_position = (screen_high / 2 - (board_size / 2 + board_size)).floor #盤面一番上の位置 #デバッグ debug_log "ソースファイル読込み完了!" preload do #背景素材読込み image 'メニュー背景画像', id: 318428, frame_size: [225, 400], frame_pattern: 11 image 'マス画像', id: 319591 image '〇画像', id: 202007 image '×画像', id: 202014 #音楽素材読込み music 'メイン音楽', id: 203732 ##### ↓追加分↓ ##### #効果音素材読込み sound '配置音', id: 320507 ##### ↑追加分↑ ##### end create do #変数設定 board_data = [0,0,0,0,0,0,0,0,0] #盤面情報 0:空白 1:〇 -1:× comparison_board_data = board_data.dup #盤面変化判定用配列 turn = 0 #ターン decision = 0 #勝敗判定実行判定用 #背景画像配置 bg_sprite = put_sprite 'メニュー背景' do position 0, 450 scale 2.0, 2.0 angle -90 frame_index 0 end #マス画像配置 mesh_sprite = put_sprite 'マス' do position 800 / 2, 450 / 2 frame_index 0 end #音楽作成 main_music = add_music('メイン音楽') ##### ↓追加分↓ ##### #効果音作成 locate_sound = add_sound('配置音') ##### ↑追加分↑ ##### #音楽再生 main_music.play #背景アニメ開始 bg_sprite.start_animation('通常アニメ') end
では再生させましょう。
#前略 render do if board_data != comparison_board_data #ターン開始前と現在の盤面が違っていたら #違うところを探す 9.times do |i| #9回ループ if board_data[i] != comparison_board_data[i] mark = board_data[i] == 1 ? '〇' : '×' #〇×配置 mark_sprite = put_sprite mark do position board_left_position + i % 3 * board_size, board_up_position + (i / 3).floor * board_size scale board_size / 150, board_size / 150 frame_index 0 end ##### ↓追加分↓ ##### #配置音再生 locate_sound.play ##### ↑追加分↑ ##### end end end end end #後略
はい、続いては決着がついた時のファンファーレです。
勝った時は
負けた時、引き分けの時は
を使います。
では先ほどと同じように……
#=====対戦=====# scene 'game' do #変数定義 bg_sprite = nil #背景 mesh_sprite = nil #マス mark_sprite = nil #〇 disposition_text_sprite = nil board_data = nil #盤面情報 comparison_board_data = nil #盤面変化判定用配列 turn = nil #ターン decision = nil #勝敗判定実行判定用 main_music = nil #音楽 locate_sound = nil #配置効果音 ##### ↓追加分↓ ##### win_sound = nil #勝利効果音 lose_sound = nil #引分・敗北効果音 ##### ↑追加分↑ ##### #定数定義 screen_width = 800 #ゲーム画面幅 screen_high = 450 #ゲーム画面高 board_size = 125 #盤面1マス当たりのサイズ #定数計算 board_left_position = (screen_width / 2 - (board_size / 2 + board_size)).floor #盤面一番左の位置 board_up_position = (screen_high / 2 - (board_size / 2 + board_size)).floor #盤面一番上の位置 #デバッグ debug_log "ソースファイル読込み完了!" preload do #背景素材読込み image 'メニュー背景画像', id: 318428, frame_size: [225, 400], frame_pattern: 11 image 'マス画像', id: 319591 image '〇画像', id: 202007 image '×画像', id: 202014 #音楽素材読込み music 'メイン音楽', id: 203732 #効果音素材読込み sound '配置音', id: 320507 ##### ↓追加分↓ ##### sound '勝利音', id: 120679 sound '敗北音', id: 180251 ##### ↑追加分↑ ##### end create do #変数設定 board_data = [0,0,0,0,0,0,0,0,0] #盤面情報 0:空白 1:〇 -1:× comparison_board_data = board_data.dup #盤面変化判定用配列 turn = 0 #ターン decision = 0 #勝敗判定実行判定用 #背景画像配置 bg_sprite = put_sprite 'メニュー背景' do position 0, 450 scale 2.0, 2.0 angle -90 frame_index 0 end #マス画像配置 mesh_sprite = put_sprite 'マス' do position 800 / 2, 450 / 2 frame_index 0 end #音楽作成 main_music = add_music('メイン音楽') #効果音作成 locate_sound = add_sound('配置音') ##### ↓追加分↓ ##### win_sound = add_sound('勝利音') lose_sound = add_sound('敗北音') ##### ↑追加分↑ ##### #音楽再生 main_music.play #背景アニメ開始 bg_sprite.start_animation('通常アニメ') end #後略
準備が出来たので鳴らします。
updateの最後の方です。
#前略 else ####勝敗判定#### disposition = win_or_loss(board_data) if disposition != 0 #終了処理 wait_time(100) disposition_text_sprite = put_text '決着' do position screen_width / 2, screen_high / 2 end disposition_text_sprite.bold true case disposition when 1 disposition_text_sprite.color '#FF0000' disposition_text_sprite.text '勝利!' #クリア処理 ##### ↓変更分↓ ##### #音楽停止 main_music.stop #勝利音再生 win_sound.play wait_time(2000) #アクティビティフィード send_activity_feed("勝利しました!") game_clear wait_time(100) ##### ↑変更分↑ ##### when 2 disposition_text_sprite.color '#0000FF' disposition_text_sprite.text '敗北' when 3 disposition_text_sprite.color '#00FF00' disposition_text_sprite.text '引き分け' end ##### ↓変更分↓ ##### #音楽停止 main_music.stop #敗北音再生 lose_sound.play wait_time(6000) ##### ↑変更分↑ ##### #シーン「menu」の開始 change_scene 'menu' end decision += 1 end end #後略
なぜgame_clearの後にwait_timeがあるかですって?
……何故かクリアした後に敗北音が再生されるからです。
三目並べはこれで完成です。お疲れさまでした!
あとやることといえばエンディング画面の設定とかでしょうか?
これはCoRもRmakeもやり方は同じです。
一応私は を登録しました。
あーそうそう、敵のAIのランダム選択のところ、無限ループ対策で100ミリ秒の時間待ち入れてましたが、もう不要なので消してください。
#前略 #ランダム選択 if result == nil while(board_data[result = rand(9)] != 0) do end end #後略
では『三目並べを作る』はこれにて終了です。有難うございました!
CoR講座自体は期間はあきますが、もう少し続けようと思います。
それでは、さようなら~
【CoR講座用】三目並べ - Code on Rmake
次回→未定
コメントする
コメントするには、ログインする必要があります。
まだまだCoRに至るまで道のりは遠そうですが、
少しづつ学んでいきたいと思います。
ありがとうございました、そしてお疲れ様でした。
頑張ってください~