PlayerClassの修正
playersフォルダの作成
com_playerやuser_playerなどのファイルを格納するplayersフォルダを作成してください。
BasePlayerClassの作成
先ほど作成したplayersフォルダにbase_player.rbを作成します。
ComPlayerにて既存のPlayerクラスのパーツを再利用させるためにBasePlayerClassを実装したいと思います。
# frozen_string_literal: true
# Playerの打ち手を管理をする
class BasePlayer
attr_reader :piece
def initialize(piece:)
@piece = piece
end
def gets_piece_location(_board_state)
raise "gets_piece_locationを実装してください"
end
end
UserPlayerClassの作成
user_player.rbを作成しUserPlayerClassを実装しましょう。
BasePlayerClassを継承させたUserPlayerClassを実装しました。
board_state引数を持っているのは、comの追加時に使用するからです。
# frozen_string_literal: true
require_relative "base_player"
require_relative "../tic_tac_toe_validator"
# ユーザからの入力値を取得するクラス
class UserPlayer < BasePlayer
# 概要: コマを配置する行と列の値をコンソールから受け取り返却する
# 引数: _board_state: ゲーム板の状態
# 戻り値: 入力された行と列の情報を配列に格納して返却する => ["1", "1"]
def gets_piece_location(_board_state)
print "行を入力してください:"
user_input_row = gets
print "列を入力してください:"
user_input_col = gets
TicTacToeValidator.validate_input_value!(user_input_row, user_input_col)
[user_input_row.to_i, user_input_col.to_i]
end
end
テストの修正
最後にテストを修正して完了となります。
testフォルダにplayersフォルダを作成し既存のplayer_test.rbの内容を移行してみてください。
完了次第、player.rbやplayer_test.rbは消しちゃってOKです。
参考コードは以下のURLから参照してください。
最終更新