player = 1
board = [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
]
loop do
break if !continue?(player, board)
end
入力部分の実装
プレイヤーがコマを配置できるようにします
以前に実装したgets_positionメソッドを使います
player = 1
board = [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
]
loop do
row, col = gets_piece_location()
break if !continue?(player, board)
end
ゲーム板の更新
入力できるようになったのでゲーム板にコマを置けるようにします
player = 1
board = [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
]
loop do
row, col = gets_piece_location()
place_piece(board, player, row, col)
break if !continue?(player, board)
end
プレイヤーの入れ替え
プレイヤーの入れ替え部分を実装します。
相手のプレイヤーを取得するメソッドがあれば便利そうです。
# 説明: 対戦中の相手プレイヤーを返却する
# 引数: player: プレイヤーを表す。1 or 2の数値
# 戻り値: 1の時 => 2
# 2の時 => 1
def get_opponent_player player
return player == 1 ? 2 : 1
end
このget_opponent_playerメソッドを適用します。
player = 1
board = [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
]
loop do
row, col = gets_piece_location()
place_piece(board, player, row, col)
break if !continue?(player, board)
player = get_opponent_player(player)
end
ゲーム画面の出力
今のままでは、何が起こっているのか分からないのでゲーム画面を出力しましょう。
player = 1
board = [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
]
loop do
row, col = gets_piece_location()
place_piece(board, player, row, col)
print_board(board)
break if !continue?(player, board)
player = get_opponent_player(player)
end
試合結果の出力
試合結果の出力メソッドを実装しましょう。
# 説明: ゲームの結果をコンソールに出力する
# 引数: board: ゲーム板, 3 x 3の二次元配列
# 戻り値: なし
def print_result board
if win?(1, board)
puts "Player1が勝利しました!"
elsif win?(2, board)
puts "Player2が勝利しました!"
else
puts "引き分けです!"
end
end
上記で実装したメソッドをメイン部分に適用させて完了です。
player = 1
board = [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
]
loop do
row, col = gets_piece_location()
place_piece(board, player, row, col)
print_board(board)
break if over?(player, board)
player = get_opponent_player(player)
end
print_result(board)
基本ロジックの実装はこれで完了です!
以下にプログラムを動作させた例をのせておきます。
行を入力してください:0
列を入力してください:0
o N N
N N N
N N N
行を入力してください:1
列を入力してください:1
o N N
N x N
N N N
行を入力してください:0
列を入力してください:1
o o N
N x N
N N N
行を入力してください:1
列を入力してください:0
o o N
x x N
N N N
行を入力してください:0
列を入力してください:2
o o o
x x N
N N N
Player1が勝利しました!