写个五子棋小程序
时间: 2023-09-16 19:15:53 浏览: 43
好的,以下是一个简单的五子棋小程序的实现:
```python
import numpy as np
# 定义棋盘大小
board_size = 15
# 定义黑白棋子枚举
class Stone:
empty = 0
black = 1
white = 2
# 初始化棋盘
board = np.zeros((board_size, board_size), dtype=np.int)
# 定义落子函数
def place(x, y, stone):
# 判断位置是否合法
if x < 0 or y < 0 or x >= board_size or y >= board_size:
return False
if board[x][y] != Stone.empty:
return False
# 落子
board[x][y] = stone
return True
# 定义判断胜负函数
def check_win():
# 判断横向是否有五个相同的棋子
for i in range(board_size):
for j in range(board_size - 4):
if board[i][j] == board[i][j+1] == board[i][j+2] == board[i][j+3] == board[i][j+4] and board[i][j] != Stone.empty:
return True
# 判断竖向是否有五个相同的棋子
for i in range(board_size - 4):
for j in range(board_size):
if board[i][j] == board[i+1][j] == board[i+2][j] == board[i+3][j] == board[i+4][j] and board[i][j] != Stone.empty:
return True
# 判断左上到右下斜线是否有五个相同的棋子
for i in range(board_size - 4):
for j in range(board_size - 4):
if board[i][j] == board[i+1][j+1] == board[i+2][j+2] == board[i+3][j+3] == board[i+4][j+4] and board[i][j] != Stone.empty:
return True
# 判断右上到左下斜线是否有五个相同的棋子
for i in range(board_size - 4):
for j in range(4, board_size):
if board[i][j] == board[i+1][j-1] == board[i+2][j-2] == board[i+3][j-3] == board[i+4][j-4] and board[i][j] != Stone.empty:
return True
return False
# 定义主函数,轮流落子并判断胜负
def main():
current_player = Stone.black
while True:
# 打印当前棋盘状态
print(board)
# 获取玩家输入的落子位置
x, y = input("请输入落子位置(以逗号分隔):").split(",")
x, y = int(x), int(y)
# 落子并判断胜负
if place(x, y, current_player):
if check_win():
print("恭喜 %s 赢得了游戏!" % ("黑棋" if current_player == Stone.black else "白棋"))
break
else:
current_player = Stone.white if current_player == Stone.black else Stone.black
else:
print("落子位置不合法,请重新输入!")
if __name__ == "__main__":
main()
```
这个程序使用numpy数组来表示棋盘,使用枚举类型来表示黑白棋子,实现了落子、判断胜负等基本功能。你可以在命令行中运行这个程序,按照提示输入落子位置,然后程序会自动判断胜负,直到游戏结束。