五子棋源代码
时间: 2023-08-02 15:09:27 浏览: 90
以下是一个简单的五子棋游戏的 Python 代码示例:
```python
import numpy as np
# 定义棋盘大小
BOARD_SIZE = 15
# 定义棋子类型
EMPTY = 0
BLACK = 1
WHITE = 2
# 初始化棋盘
board = np.zeros((BOARD_SIZE, BOARD_SIZE), dtype=np.int)
# 定义判断胜利的函数
def check_win(player):
# 判断行是否有五个连续的棋子
for i in range(BOARD_SIZE):
for j in range(BOARD_SIZE - 4):
if np.all(board[i][j:j+5] == player):
return True
# 判断列是否有五个连续的棋子
for i in range(BOARD_SIZE - 4):
for j in range(BOARD_SIZE):
if np.all(board[i:i+5, j] == player):
return True
# 判断正斜线是否有五个连续的棋子
for i in range(BOARD_SIZE - 4):
for j in range(BOARD_SIZE - 4):
if np.all(board[i:i+5, j:j+5].diagonal() == player):
return True
# 判断反斜线是否有五个连续的棋子
for i in range(BOARD_SIZE - 4):
for j in range(4, BOARD_SIZE):
if np.all(board[i:i+5, j-4:j+1].diagonal() == player):
return True
return False
# 定义主程序
def main():
# 初始化游戏
player = BLACK
print("欢迎来到五子棋游戏!")
print("黑方先行。")
print_board()
# 开始游戏
while True:
x, y = input_move(player)
board[x][y] = player
print_board()
if check_win(player):
print(f"{player}方获胜!")
break
# 切换玩家
player = WHITE if player == BLACK else BLACK
# 定义输入落子位置的函数
def input_move(player):
while True:
try:
x, y = map(int, input(f"{player}方,请输入落子位置(如:3 5):").split())
if x < 0 or x >= BOARD_SIZE or y < 0 or y >= BOARD_SIZE:
print("输入位置不合法,请重新输入。")
continue
if board[x][y] != EMPTY:
print("该位置已有棋子,请重新输入。")
continue
return x, y
except ValueError:
print("输入格式不正确,请重新输入。")
# 定义打印棋盘的函数
def print_board():
print("\n ", end="")
for i in range(BOARD_SIZE):
print(chr(ord('A') + i), end=" ")
print()
for i in range(BOARD_SIZE):
print(f"{i+1:2d}", end=" ")
for j in range(BOARD_SIZE):
if board[i][j] == BLACK:
print("●", end=" ")
elif board[i][j] == WHITE:
print("○", end=" ")
else:
print("+", end=" ")
print()
if __name__ == "__main__":
main()
```
这个示例代码使用了 NumPy 库来存储和操作棋盘,同时也提供了简单的输入输出界面以及胜利判断函数。你可以根据自己的需要进行修改和完善。
阅读全文