请用python实现人机交互五子棋游戏需要实现游戏界面人机要有赢得游戏的策略
以下是一个基于Python的人机交互五子棋游戏的实现示例:
import numpy as np
# 创建棋盘
def create_board():
board = np.zeros((15, 15))
return board
# 判断落子是否合法
def is_valid_move(board, row, col):
if board[row][col] == 0:
return True
else:
return False
# 判断游戏是否结束
def is_game_over(board, row, col):
# 判断行
for i in range(col-4, col+1):
if i >= 0 and i+4 < 15:
if board[row][i:i+5].sum() == 5 or board[row][i:i+5].sum() == -5:
return True
# 判断列
for i in range(row-4, row+1):
if i >= 0 and i+4 < 15:
if board[i:i+5, col].sum() == 5 or board[i:i+5, col].sum() == -5:
return True
# 判断正对角线
for i in range(-4, 1):
if row+i >= 0 and row+i+4 < 15 and col+i >= 0 and col+i+4 < 15:
if np.trace(board[row+i:row+i+5, col+i:col+i+5]) == 5 or np.trace(board[row+i:row+i+5, col+i:col+i+5]) == -5:
return True
# 判断反对角线
for i in range(-4, 1):
if row-i >= 0 and row-i+4 < 15 and col+i >= 0 and col+i+4 < 15:
if np.trace(board[row-i:row-i+5, col+i:col+i+5]) == 5 or np.trace(board[row-i:row-i+5, col+i:col+i+5]) == -5:
return True
return False
# 人类玩家落子
def player_move(board):
while True:
try:
row = int(input("请输入落子的行数(0-14): "))
col = int(input("请输入落子的列数(0-14): "))
if is_valid_move(board, row, col):
board[row][col] = 1
break
else:
print("落子不合法,请重新输入!")
except ValueError:
print("请输入数字!")
except IndexError:
print("请输入0-14的数字!")
# AI玩家落子
def ai_move(board):
for row in range(15):
for col in range(15):
if is_valid_move(board, row, col):
board[row][col] = -1
return
# 打印棋盘
def print_board(board):
for row in range(15):
for col in range(15):
if board[row][col] == 0:
print(".", end=" ")
elif board[row][col] == 1:
print("X", end=" ")
elif board[row][col] == -1:
print("O", end=" ")
print()
# 主函数
def main():
board = create_board()
print_board(board)
while True:
player_move(board)
print_board(board)
if is_game_over(board, row, col):
print("你赢了!")
break
ai_move(board)
print_board(board)
if is_game_over(board, row, col):
print("AI赢了!")
break
if __name__ == "__main__":
main()
在这个示例中,我们使用numpy库创建了一个15x15的棋盘。人类玩家使用1代表自己的棋子,AI玩家使用-1代表自己的棋子,空白位置使用0表示。游戏的主要逻辑在main()函数中实现,其中通过调用player_move()函数和ai_move()函数来让人类玩家和AI玩家进行落子。在每次落子后,使用is_game_over()函数来判断是否游戏结束。如果游戏结束,即有一方获胜,游戏将会结束并输出对应的信息
原文地址: https://www.cveoy.top/t/topic/hOu9 著作权归作者所有。请勿转载和采集!