Python实现五子棋(Gomoku)游戏
2024.01.18 00:39浏览量:16简介:本文将介绍如何使用Python实现五子棋(Gomoku)游戏。我们将创建一个简单的文本界面,玩家通过输入坐标来下棋。游戏将判断谁先达到五子连线获胜。
五子棋(Gomoku)是一个经典的策略游戏,玩家在棋盘上轮流下棋,先连成五子一行的玩家获胜。下面是一个简单的Python实现:
首先,我们需要定义一个棋盘类来表示游戏的状态。我们可以使用一个二维列表来表示棋盘,0表示空位置,1和2分别表示两个玩家的标记。
class GomokuBoard:def __init__(self, size):self.size = sizeself.board = [[0] * size for _ in range(size)]self.turn = 1 # 1表示玩家1的回合,2表示玩家2的回合
接下来,我们需要实现一些基本的操作,比如打印棋盘、判断胜负等。
def print_board(board):for row in board:print(' '.join(str(cell) for cell in row))def check_win(board, player):# 检查行、列和对角线是否全为当前玩家标记for i in range(len(board)):if all(cell == player for cell in board[i]):return Trueif all(cell == player for cell in [board[i][j] for j in range(len(board[i]))]):return Truefor i in range(len(board) - 1):if all(cell == player for cell in board[i:i+2]):return Truereturn False
然后,我们需要实现游戏的主循环。我们将不断获取玩家的输入,然后在棋盘上放置棋子,并判断胜负。如果游戏结束,我们还可以返回获胜的玩家。
def play_game():size = 15board = GomokuBoard(size)while True:print_board(board.board)player = int(input('当前回合玩家(1或2):')) - 1 # 输入1表示玩家1,输入2表示玩家2,输入-1表示游戏结束并返回获胜玩家if player == -1:breakx, y = map(int, input('请输入下棋的坐标(x y):').split()) # 获取玩家输入的坐标if board.board[x][y] != 0: # 检查坐标是否有效print('无效的坐标!')continueboard.board[x][y] = player + 1 # 在棋盘上放置棋子if check_win(board.board, player + 1): # 检查是否有人获胜print('玩家', player + 1, '获胜!')return player + 1 # 返回获胜玩家的标记,方便其他函数调用时传入标记进行判断等操作。比如打印棋盘的时候就可以用输出来作为print的参数等。返回-1表示游戏结束并返回获胜玩家,可以在while中结束游戏循环。

发表评论
登录后可评论,请前往 登录 或 注册