编写五子棋的完整python代码_python制作简单五子棋游戏
时间: 2023-08-25 21:29:19 浏览: 155
好的,以下是一个简单的五子棋游戏的Python代码:
```python
import numpy as np
# 定义棋盘大小
BOARD_SIZE = 15
class Board():
def __init__(self):
self.board = np.zeros((BOARD_SIZE, BOARD_SIZE), dtype=int)
self.player = 1
def move(self, x, y):
# 检查是否合法落子
if self.board[x][y] == 0:
self.board[x][y] = self.player
self.player = 3 - self.player # 切换玩家
return True
else:
return False
def check_win(self):
# 检查行
for i in range(BOARD_SIZE):
for j in range(BOARD_SIZE - 4):
if (self.board[i][j] == self.board[i][j+1] == self.board[i][j+2] == self.board[i][j+3] == self.board[i][j+4]) and self.board[i][j] != 0:
return self.board[i][j]
# 检查列
for i in range(BOARD_SIZE - 4):
for j in range(BOARD_SIZE):
if (self.board[i][j] == self.board[i+1][j] == self.board[i+2][j] == self.board[i+3][j] == self.board[i+4][j]) and self.board[i][j] != 0:
return self.board[i][j]
# 检查正对角线
for i in range(BOARD_SIZE - 4):
for j in range(BOARD_SIZE - 4):
if (self.board[i][j] == self.board[i+1][j+1] == self.board[i+2][j+2] == self.board[i+3][j+3] == self.board[i+4][j+4]) and self.board[i][j] != 0:
return self.board[i][j]
# 检查反对角线
for i in range(BOARD_SIZE - 4):
for j in range(4, BOARD_SIZE):
if (self.board[i][j] == self.board[i+1][j-1] == self.board[i+2][j-2] == self.board[i+3][j-3] == self.board[i+4][j-4]) and self.board[i][j] != 0:
return self.board[i][j]
# 没有胜者
return 0
def print_board(self):
print(" ", end="")
for i in range(BOARD_SIZE):
print("{0:2d}".format(i), end="")
print()
for i in range(BOARD_SIZE):
print("{0:2d}".format(i), end=" ")
for j in range(BOARD_SIZE):
if self.board[i][j] == 1:
print("●", end="")
elif self.board[i][j] == 2:
print("○", end="")
else:
print("+", end="")
print()
board = Board()
while True:
board.print_board()
print("轮到玩家 {0} 落子".format(board.player))
x = int(input("请输入落子横坐标:"))
y = int(input("请输入落子纵坐标:"))
if board.move(x, y):
winner = board.check_win()
if winner != 0:
board.print_board()
print("玩家 {0} 获胜".format(winner))
break
else:
print("落子不合法,请重新落子")
```
这段代码定义了一个类`Board`,它包含了棋盘、玩家以及相关的方法,如落子、检查胜利等。在程序中,先创建一个`Board`对象,然后循环进行游戏。每轮循环中,先打印当前棋盘,并询问当前玩家要落子的位置。如果落子合法,则判断是否有胜者。如果有胜者,则打印出胜者,并跳出循环。如果落子不合法,则提示重新落子。
注意:这段代码只是一个简单的五子棋游戏,还有很多优化和功能可以添加。