【講座?】CoRを触ってみる18~三目並べを作る6~【自分用メモ?】

投稿者:Material 185033 3 mini 光楼(114) 投稿日:2017/05/27 13:29

【講座?】CoRを触ってみる17~三目並べを作る5~【自分用メモ?】←前回

第二楽章も作ったで!
http://www.nicovideo.jp/watch/sm31248225

#このブログの情報は2017年5月27日現在のものです。今後変更になる可能性があります。

前回の続きです。
game.rbを開くのじゃ!

さて今回は決着がついた後の処理を作ります。
『勝利』『敗北』『引き分け』を表示させます。

使用するのはテキストスプライトです。
#=====対戦=====#
scene 'game' do
  #変数定義
  bg_sprite = nil #背景
  mesh_sprite = nil #マス
  mark_sprite = nil #〇
  board_data = [0,0,0,0,0,0,0,0,0] #盤面情報 0:空白 1:〇 -1:×
  comparison_board_data = board_data.dup #盤面変化判定用配列
  turn = 0 #ターン
  decision = 0 #勝敗判定実行判定用

  ##### ↓追加分↓  #####
  disposition_text_sprite = nil
  ##### ↑追加分↑  #####
#後略

#前略
#=====定義=====#
#スプライト
sprite 'メニュー背景' do
  image 'メニュー背景画像'
  origin :left_top

  animation '通常アニメ', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], 20, true
end

sprite 'マス' do
  image 'マス画像'
end

sprite '〇' do
  image '〇画像'
  origin :left_top
end

sprite '×' do
  image '×画像'
  origin :left_top
end

##### ↓追加分↓  #####
#テキストスプライト
text '決着' do
  origin :center
  font_size 100
end
##### ↑追加分↑  #####
#後略

#前略
  update do
    comparison_board_data = board_data.dup #配列コピー

    if decision % 2 == 0 #勝敗判定実行判断
      ####プレーヤーor敵ターン####

      if turn % 2 == 0
        ####プレーヤーのターン####
  
        #クリックまたはタップしたか
        if pointer.down?
          column = ((pointer.x - board_left_position) / board_size).floor #列を求める
          paragraph = ((pointer.y - board_up_position) / board_size).floor #段を求める
    
          #列が0~2、段も0~2の範囲か
          if (0..2) === column && (0..2) === paragraph
            block = column + paragraph * 3 #列・段からマス番号を求める
            if board_data[block] == 0 #選択したマスが空白か
              board_data[block] = 1
  
              turn += 1 #行動したらターン交代
              decision += 1
            end
          end
        end
  
      else
        ####敵のターン####
        wait_time(500) #0.5秒待機
  
        #×配置場所選択
        while(board_data[result = rand(9)] != 0) do
          wait_time(100) #無限ループ対策
        end
  
        board_data[result] = -1 #盤面情報書き換え
        turn += 1 #ターン交代
        decision += 1
      end

    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 '勝利!'
        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)
        game_clear
        ##### ↑追加分↑  #####

      end

      decision += 1
    end
  end
#後略


今回うまくいかない点があったのでとりあえずゲームクリアになる処理にしています。
短いですが今回は以上です。

次→【講座?】CoRを触ってみる19~複数のソースファイル間の移動~【自分用メモ?】

コメントする

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

コメント一覧

            mini mosmoss(投稿日:2017/05/30 18:27, 履歴)
何がうまくいかなかったんですか?(?ω?)
Material 185033 3 mini 光楼(114)(投稿日:2017/05/30 18:52, 履歴)
game_clearのところをstart.rbを読み込む処理にしたかったんですが、何故か読込んだ後の処理が行われないんです。
            mini mosmoss(投稿日:2017/05/30 22:50, 履歴)
ソースファイルAでソースファイルBを呼び出した後ソースファイルB内でAを呼び出すとダメ、なんですね。
RPGのようなもののマップ移動とかを作るのがちょっと大変そうですね