OrderlyComPlayerの追加

エラークラスの追加

comの挙動で何か意図しないことが発生した時にキャッチできるようエラークラスを定義して

使うことにします。

新たにerrorsフォルダを作成し、com_error.rbを実装します。

既存のtic_tac_toe_input_error.rbも移動させてください。

# frozen_string_literal: true

# 3目並べのCOMに関するエラークラス
class ComError < StandardError; end

OrdelyComPlayerを追加する

マスが空いてたら埋めにいくOrdelyComPlayerを追加します。

先ほど実装したBasePlayerClassを利用して実装しましょう

課題コーナー

BasePlayerClassを継承したOrdelyComPlayerを作成する

コマを配置できなければComErrorを発生させる

私の場合、以下のように実装しました。

# frozen_string_literal: true

require_relative "base_player"
require_relative "../const"
require_relative "../errors/com_error"

# 順番に見ていって空きマスがあれば配置するCOM
class OrdelyComPlayer < BasePlayer
  # 概要: ゲーム板を受け取りマスを順番に見ていって空いてたら、その行と列番号を返却する
  # 引数: board_state: ゲーム板の情報
  # 戻り値: 行と列の情報を配列に格納して返却する => [1, 1]
  def gets_piece_location(board_state)
    board_state.each_with_index do |row, i|
      row.each_with_index do |e, j|
        return [i, j] if OPEN_SLOT == e
      end
    end

    raise ComError, "OrderlyComクラスで配置場所が決まりませんでした"
  end
end

テストの追加

最後にテストを追加して完了となります。

課題コーナー

ordely_com_player_test.rbを実装して見てください

参考コードは以下のURLから参照してください。

最終更新