能给我写个五子棋游戏吗
时间: 2024-03-11 12:51:21 浏览: 7
当然可以,以下是一个简单的五子棋游戏的代码实现,供您参考:
```python
import numpy as np
# 初始化棋盘,0表示空,1表示黑,2表示白
board = np.zeros((15, 15), dtype=int)
# 定义函数,判断当前位置是否可下子
def valid_move(x, y):
return x >= 0 and y >= 0 and x < 15 and y < 15 and board[x][y] == 0
# 定义函数,判断当前局面是否结束
def game_over(x, y, color):
# 判断行
count = 0
for i in range(15):
if board[x][i] == color:
count += 1
else:
count = 0
if count >= 5:
return True
# 判断列
count = 0
for i in range(15):
if board[i][y] == color:
count += 1
else:
count = 0
if count >= 5:
return True
# 判断对角线
count = 0
for i in range(-4, 5):
if x+i >= 0 and y+i >= 0 and x+i < 15 and y+i < 15:
if board[x+i][y+i] == color:
count += 1
else:
count = 0
if count >= 5:
return True
# 判断反对角线
count = 0
for i in range(-4, 5):
if x+i >= 0 and y-i >= 0 and x+i < 15 and y-i < 15:
if board[x+i][y-i] == color:
count += 1
else:
count = 0
if count >= 5:
return True
return False
# 定义函数,打印当前棋盘
def print_board():
for i in range(15):
for j in range(15):
if board[i][j] == 0:
print('+', end=' ')
elif board[i][j] == 1:
print('X', end=' ')
else:
print('O', end=' ')
print()
# 开始游戏
turn = 1 # 黑方先手
while True:
print_board()
if turn == 1:
print('黑方下棋:')
else:
print('白方下棋:')
x = int(input('请输入横坐标(0-14):'))
y = int(input('请输入纵坐标(0-14):'))
if valid_move(x, y):
board[x][y] = turn
if game_over(x, y, turn):
print_board()
if turn == 1:
print('黑方胜利!')
else:
print('白方胜利!')
break
turn = 3 - turn # 切换到对方下棋
else:
print('非法操作,请重新输入!')
```
这个程序可以在命令行中运行,每次轮流输入横坐标和纵坐标,即可下棋。当有一方连成五子时,游戏结束,并宣布胜利者。希望能够帮助到您。