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を継承して実装していきます。

課題コーナー

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

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

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

# 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

テストの追加

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

課題コーナー

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

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

最終更新