1. 解释说明:
五子棋人机对战是指在计算机上实现的五子棋游戏,其中一方是玩家,另一方是由计算机程序控制的AI。玩家和AI轮流在棋盘上下子,目标是将自己的棋子连成五个,横、竖、斜均可。当有一方成功连成五个棋子时,该方获胜。
import random
def print_board(board):
for row in board:
print(" ".join(row))
def check_win(board, x, y, player):
directions = [(1, 0), (0, 1), (1, 1), (1, -1)]
for dx, dy in directions:
count = 1
for i in range(1, 5):
nx, ny = x + i * dx, y + i * dy
if 0 <= nx < len(board) and 0 <= ny < len(board[0]) and board[nx][ny] == player:
count += 1
else:
break
for i in range(1, 5):
nx, ny = x - i * dx, y - i * dy
if 0 <= nx < len(board) and 0 <= ny < len(board[0]) and board[nx][ny] == player:
count += 1
else:
break
if count >= 5:
return True
return False
def robot_move(board):
while True:
x = random.randint(0, len(board) - 1)
y = random.randint(0, len(board[0]) - 1)
if board[x][y] == ".":
return x, y
def play_game():
board = [["." for _ in range(15)] for _ in range(15)]
players = ["X", "O"]
turn = 0
while True:
print_board(board)
if turn % 2 == 0:
x, y = map(int, input(f"Player {players[turn % 2]}'s turn. Enter the coordinates (x, y): ").split())
else:
x, y = robot_move(board)
print(f"Robot {players[turn % 2]}'s move: {x}, {y}")
if board[x][y] == ".":
board[x][y] = players[turn % 2]
if check_win(board, x, y, players[turn % 2]):
print_board(board)
print(f"Player {players[turn % 2]} wins!")
break
turn += 1
else:
print("Invalid move. Try again.")
if __name__ == "__main__":
play_game()
这个程序实现了简单的人机对战,但机器的棋力有待提高。