python五子棋游戏大作业
时间: 2023-08-29 11:05:46 浏览: 64
好的,下面是一个简单的五子棋游戏的实现,你可以根据需求进行修改和扩展。
```python
import numpy as np
class Board:
def __init__(self, size):
self.size = size # 棋盘大小
self.board = np.zeros((size, size), dtype=int) # 初始化棋盘,0表示空,1表示黑子,2表示白子
def move(self, row, col, player):
if self.board[row][col] != 0:
print("当前位置已经有棋子了,请选择其他位置!")
return False
else:
self.board[row][col] = player
return True
def check_win(self, player):
# 检查行
for i in range(self.size):
for j in range(self.size-4):
if [player]*5 == list(self.board[i][j:j+5]):
return True
# 检查列
for i in range(self.size-4):
for j in range(self.size):
if [player]*5 == list(self.board[i:i+5, j]):
return True
# 检查正斜线
for i in range(self.size-4):
for j in range(self.size-4):
if [player]*5 == list(self.board[i:i+5, j:j+5].diagonal()):
return True
# 检查反斜线
for i in range(4, self.size):
for j in range(self.size-4):
if [player]*5 == list(np.fliplr(self.board[i-5:i, j:j+5]).diagonal()):
return True
return False
def show(self):
print(" ", end="")
for i in range(1, self.size+1):
print("{:^3}".format(i), end="")
print()
for i in range(self.size):
print("{:^3}".format(i+1), end="")
for j in range(self.size):
if self.board[i][j] == 0:
print("{:^3}".format("+"), end="")
elif self.board[i][j] == 1:
print("{:^3}".format("●"), end="")
elif self.board[i][j] == 2:
print("{:^3}".format("○"), end="")
print()
def main():
board_size = 15 # 棋盘大小
player = 1 # 玩家,1表示黑子,2表示白子
board = Board(board_size) # 初始化棋盘
board.show()
while True:
row, col = input("请玩家{}输入下棋的位置,以逗号分隔,如“3,4”:".format(player)).split(",")
row, col = int(row)-1, int(col)-1
if board.move(row, col, player):
board.show()
if board.check_win(player):
print("恭喜玩家{}获胜!".format(player))
break
player = 3 - player # 交替下棋,1和2之间切换
if __name__ == "__main__":
main()
```
这个程序实现了一个简单的五子棋游戏,玩家可以通过输入棋子的位置来下棋,程序会检查是否有人获胜。你可以根据需要进行修改和扩展。
阅读全文