五子棋游戏代码:Python实现
以下是一个简单的五子棋代码,使用 Python 语言编写:
import numpy as np
# 定义棋盘大小
BOARD_SIZE = 15
# 定义黑白棋子的常量
EMPTY = 0
WHITE = 1
BLACK = 2
class Game:
def __init__(self):
# 初始化棋盘
self.board = np.zeros((BOARD_SIZE, BOARD_SIZE))
# 初始化当前落子方
self.current_player = BLACK
def play(self, x, y):
# 落子
self.board[x][y] = self.current_player
# 判断是否胜利
if self.is_win(x, y):
print('Player', self.current_player, 'wins!')
return
# 切换落子方
self.current_player = BLACK if self.current_player == WHITE else WHITE
def is_win(self, x, y):
# 判断横向是否有五子相连
if (self.board[x][y] == self.board[x-1][y] == self.board[x-2][y] == self.board[x-3][y] == self.board[x-4][y] == self.current_player) or \
(self.board[x][y] == self.board[x+1][y] == self.board[x+2][y] == self.board[x+3][y] == self.board[x+4][y] == self.current_player) or \
(self.board[x][y] == self.board[x-1][y] == self.board[x-2][y] == self.board[x-3][y] == self.board[x+1][y] == self.current_player) or \
(self.board[x][y] == self.board[x+1][y] == self.board[x+2][y] == self.board[x+3][y] == self.board[x-1][y] == self.current_player):
return True
# 判断纵向是否有五子相连
if (self.board[x][y] == self.board[x][y-1] == self.board[x][y-2] == self.board[x][y-3] == self.board[x][y-4] == self.current_player) or \
(self.board[x][y] == self.board[x][y+1] == self.board[x][y+2] == self.board[x][y+3] == self.board[x][y+4] == self.current_player) or \
(self.board[x][y] == self.board[x][y-1] == self.board[x][y-2] == self.board[x][y-3] == self.board[x][y+1] == self.current_player) or \
(self.board[x][y] == self.board[x][y+1] == self.board[x][y+2] == self.board[x][y+3] == self.board[x][y-1] == self.current_player):
return True
# 判断斜向是否有五子相连
if (self.board[x][y] == self.board[x-1][y-1] == self.board[x-2][y-2] == self.board[x-3][y-3] == self.board[x-4][y-4] == self.current_player) or \
(self.board[x][y] == self.board[x+1][y+1] == self.board[x+2][y+2] == self.board[x+3][y+3] == self.board[x+4][y+4] == self.current_player) or \
(self.board[x][y] == self.board[x-1][y-1] == self.board[x-2][y-2] == self.board[x-3][y-3] == self.board[x+1][y+1] == self.current_player) or \
(self.board[x][y] == self.board[x+1][y+1] == self.board[x+2][y+2] == self.board[x+3][y+3] == self.board[x-1][y-1] == self.current_player) or \
(self.board[x][y] == self.board[x-1][y+1] == self.board[x-2][y+2] == self.board[x-3][y+3] == self.board[x-4][y+4] == self.current_player) or \
(self.board[x][y] == self.board[x+1][y-1] == self.board[x+2][y-2] == self.board[x+3][y-3] == self.board[x+4][y-4] == self.current_player) or \
(self.board[x][y] == self.board[x-1][y+1] == self.board[x-2][y+2] == self.board[x-3][y+3] == self.board[x+1][y-1] == self.current_player) or \
(self.board[x][y] == self.board[x+1][y-1] == self.board[x+2][y-2] == self.board[x+3][y-3] == self.board[x-1][y+1] == self.current_player):
return True
return False
# 测试代码
game = Game()
game.play(7, 7) # 黑方落子
game.play(8, 8) # 白方落子
game.play(6, 6) # 黑方落子
game.play(9, 9) # 白方落子
game.play(5, 5) # 黑方落子
game.play(10, 10) # 白方落子
game.play(4, 4) # 黑方落子
game.play(11, 11) # 白方落子
game.play(3, 3) # 黑方落子
game.play(12, 12) # 白方落子
原文地址: https://www.cveoy.top/t/topic/oaUL 著作权归作者所有。请勿转载和采集!