写一个五子棋的游戏代码
时间: 2023-08-24 10:13:12 浏览: 91
以下是一个简单的 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 # 玩家初始为1,即黑棋先手
def move(self, row, col):
if self.board[row][col] != 0: # 如果该位置已经有棋子,则不能放置
print("Invalid move! Please try again.")
return False
self.board[row][col] = self.player # 在该位置放置棋子
# 判断是否胜利
if self.check_win(row, col):
print("Player {} wins!".format(self.player))
return True
# 切换玩家
self.player = 3 - self.player # 1 --> 2, 2 --> 1
return False
def check_win(self, row, col):
# 判断横向是否连续五个棋子相同
count = 1 # 当前位置算一颗
for i in range(1, 5):
if col-i < 0 or self.board[row][col-i] != self.player:
break
count += 1
for i in range(1, 5):
if col+i >= BOARD_SIZE or self.board[row][col+i] != self.player:
break
count += 1
if count == 5:
return True
# 判断纵向是否连续五个棋子相同
count = 1
for i in range(1, 5):
if row-i < 0 or self.board[row-i][col] != self.player:
break
count += 1
for i in range(1, 5):
if row+i >= BOARD_SIZE or self.board[row+i][col] != self.player:
break
count += 1
if count == 5:
return True
# 判断左上到右下是否连续五个棋子相同
count = 1
for i in range(1, 5):
if row-i < 0 or col-i < 0 or self.board[row-i][col-i] != self.player:
break
count += 1
for i in range(1, 5):
if row+i >= BOARD_SIZE or col+i >= BOARD_SIZE or self.board[row+i][col+i] != self.player:
break
count += 1
if count == 5:
return True
# 判断左下到右上是否连续五个棋子相同
count = 1
for i in range(1, 5):
if row+i >= BOARD_SIZE or col-i < 0 or self.board[row+i][col-i] != self.player:
break
count += 1
for i in range(1, 5):
if row-i < 0 or col+i >= BOARD_SIZE or self.board[row-i][col+i] != self.player:
break
count += 1
if count == 5:
return True
return False
def print_board(self):
print(" " + " ".join([str(i) for i in range(BOARD_SIZE)]))
for i in range(BOARD_SIZE):
print("{} {}".format(i, " ".join([str(x) if x != 0 else "-" for x in self.board[i]])))
if __name__ == "__main__":
board = Board()
while True:
board.print_board()
row, col = input("Player {}: Please enter the row and column to place your piece (separated by a space): ".format(board.player)).split()
row, col = int(row), int(col)
if board.move(row, col):
break
```
运行该代码即可开始游戏。注意,本代码只实现了基本的五子棋规则,还可以继续改进,例如添加悔棋、禁手等功能。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)