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を利用して実装しましょう
私の場合、以下のように実装しました。
# 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
テストの追加
最後にテストを追加して完了となります。
参考コードは以下のURLから参照してください。
最終更新