RandomComPlayerの追加
Randomizerの実装
RandomPlayerにランダムに数値を渡すRandomizerを実装します。
# frozen_string_literal: true
# 乱数生成クラス
class Randomizer
class << self
# 概要: ランダムに0~2の数値を生成する
# 引数: なし
# 戻り値: 0 or 1 0r 2
def create
[0, 1, 2].sample
end
end
end
RandomComPlayerを追加する
ランダムにコマを配置しにいく挙動をするRandomComPlayerを追加します。
OrdelyComPlayerを実装した時と同様BasePlayerを継承して実装していきます。
私は、以下のように実装しました。
# frozen_string_literal: true
require_relative "base_player"
require_relative "../const"
require_relative "../errors/com_error"
require_relative "../randomizer"
# ランダムにコマを配置するCOM
class RandomComPlayer < BasePlayer
TRY_COUNT = 1000
# 概要: ゲーム板を受け取りランダムに場所を決めて空いてたら、その行と列番号を返却する
# 引数: board_state: ゲーム板の情報
# 戻り値: 行と列の情報を配列に格納して返却する => [1, 1]
def gets_piece_location(board_state)
TRY_COUNT.times do
i = Randomizer.create
j = Randomizer.create
return [i, j] if OPEN_SLOT == board_state[i][j]
end
raise ComError, "RandomComPlayerクラスで配置場所が決まりませんでした"
end
end
テストの追加
最後にテストを追加して完了となります。
参考コードは以下のURLから参照してください。
最終更新