用python编写一段简易人机对战五子棋代码
时间: 2023-10-11 21:07:09 浏览: 69
好的,以下是一个简易的人机对战五子棋代码:
```python
import random
# 初始化棋盘
board = [['+' for i in range(15)] for j in range(15)]
# 显示棋盘
def display_board(board):
for i in range(len(board)):
for j in range(len(board[i])):
print(board[i][j], end=' ')
print()
# 判断胜负
def is_win(board, row, col, char):
# 判断横向是否连续五个
for i in range(max(0, col - 4), min(11, col + 1)):
if board[row][i:i+5] == [char]*5:
return True
# 判断竖向是否连续五个
for i in range(max(0, row - 4), min(11, row + 1)):
if [board[j][col] for j in range(i, i+5)] == [char]*5:
return True
# 判断正斜向是否连续五个
for i in range(max(row - 4, 0), min(row + 1, 11)):
for j in range(max(col - 4, 0), min(col + 1, 11)):
if [board[i+k][j+k] for k in range(5)] == [char]*5:
return True
# 判断反斜向是否连续五个
for i in range(max(row - 4, 0), min(row + 1, 11)):
for j in range(max(col - 4, 0), min(col + 1, 11)):
if [board[i+4-k][j+k] for k in range(5)] == [char]*5:
return True
return False
# 玩家下棋
def player_move(board):
while True:
row, col = map(int, input('请输入落子坐标(行 列,用空格隔开):').split())
if board[row][col] != '+':
print('该位置已有棋子,请重新输入!')
else:
board[row][col] = 'o'
break
return row, col
# AI下棋
def ai_move(board):
while True:
row, col = random.randint(0, 14), random.randint(0, 14)
if board[row][col] == '+':
board[row][col] = 'x'
break
return row, col
# 主函数
def main():
display_board(board)
while True:
row, col = player_move(board)
if is_win(board, row, col, 'o'):
display_board(board)
print('恭喜你,你赢了!')
break
row, col = ai_move(board)
display_board(board)
if is_win(board, row, col, 'x'):
print('很遗憾,你输了!')
break
if __name__ == '__main__':
main()
```
该代码实现了简单的人机对战五子棋,玩家执黑先手,AI执白后手。玩家输入坐标落子,AI随机下棋。程序会实时判断胜负并输出结果。