当前位置:首页 > 编程知识 > 正文

Python版本五子棋

五子棋是一种古老的棋类游戏,它的最终目标是在棋盘上连成一条直线的五个棋子。本文将使用Python语言实现五子棋游戏,并对其进行详细阐述。

一、游戏规则

1、五子棋游戏在一个15x15的棋盘上进行,黑子和白子轮流在棋盘上落子。

2、如果任意一方在横、竖、斜线上形成五个连续的棋子,即可获胜。

3、如果棋盘上已经没有可以落子的位置,并且没有任意一方形成连续的五个棋子,则判断为平局。

二、游戏实现

1、首先,我们需要创建一个棋盘的类,用于存储棋盘状态和进行各种棋局操作:

class ChessBoard:
    def __init__(self):
        self.board = [[0]*15 for _ in range(15)] # 初始化棋盘为15x15的二维列表

    def make_move(self, row, col, player):
        if self.board[row][col] == 0:
            self.board[row][col] = player
            return True
        else:
            return False

    def check_win(self):
        # 检查横向是否有五个连续棋子
        for i in range(15):
            for j in range(11):
                if self.board[i][j]!=0 and \
                   self.board[i][j]==self.board[i][j+1] and \
                   self.board[i][j]==self.board[i][j+2] and \
                   self.board[i][j]==self.board[i][j+3] and \
                   self.board[i][j]==self.board[i][j+4]:
                    return self.board[i][j]

        # 检查竖向是否有五个连续棋子
        for j in range(15):
            for i in range(11):
                if self.board[i][j]!=0 and \
                   self.board[i][j]==self.board[i+1][j] and \
                   self.board[i][j]==self.board[i+2][j] and \
                   self.board[i][j]==self.board[i+3][j] and \
                   self.board[i][j]==self.board[i+4][j]:
                    return self.board[i][j]

        # 检查右斜向是否有五个连续棋子
        for i in range(11):
            for j in range(11):
                if self.board[i][j]!=0 and \
                   self.board[i][j]==self.board[i+1][j+1] and \
                   self.board[i][j]==self.board[i+2][j+2] and \
                   self.board[i][j]==self.board[i+3][j+3] and \
                   self.board[i][j]==self.board[i+4][j+4]:
                    return self.board[i][j]

        # 检查左斜向是否有五个连续棋子
        for i in range(11):
            for j in range(4, 15):
                if self.board[i][j]!=0 and \
                   self.board[i][j]==self.board[i+1][j-1] and \
                   self.board[i][j]==self.board[i+2][j-2] and \
                   self.board[i][j]==self.board[i+3][j-3] and \
                   self.board[i][j]==self.board[i+4][j-4]:
                    return self.board[i][j]

        return 0

2、接下来,我们实现一个简单的交互界面,使玩家可以与游戏进行互动:

def main():
    board = ChessBoard()

    player = 1

    while True:
        row = int(input("请输入落子的行数:"))
        col = int(input("请输入落子的列数:"))

        if board.make_move(row, col, player):
            print("落子成功!")

            if board.check_win() != 0: # 如果有玩家获胜
                print("游戏结束,玩家", player, "获胜!")
                break
            elif all(board.board[i][j] != 0 for i in range(15) for j in range(15)): # 如果棋盘已满,平局
                print("游戏结束,平局!")
                break

            player = 2 if player == 1 else 1 # 切换玩家
        else:
            print("落子失败,请重新输入!")

三、游戏测试

1、创建一个新的棋盘实例:

board = ChessBoard()

2、让玩家1在第1行第2列落子:

board.make_move(1, 2, 1)

3、让玩家2在第2行第2列落子:

board.make_move(2, 2, 2)

4、检查是否有玩家获胜:

winner = board.check_win()
if winner != 0:
    print("玩家", winner, "获胜!")
else:
    print("游戏继续进行。")

5、玩家交替落子,直到游戏结束:

main()

以上就是Python版本五子棋的实现方法和简单的交互界面,您可以根据需要自行扩展和优化代码。希望本文能够对您有所帮助!