欢迎访问宙启技术站
智能推送

使用Python实现井字棋游戏

发布时间:2023-12-04 13:31:06

下面是一个使用Python实现的井字棋游戏的例子:

# 定义井字棋游戏的类
class TicTacToe:
    # 初始化游戏棋盘
    def __init__(self):
        self.board = [[' ' for _ in range(3)] for _ in range(3)]
        self.current_player = 'X'
    
    # 打印当前游戏棋盘
    def print_board(self):
        for row in self.board:
            print('|'.join(row))
    
    # 判断游戏是否结束
    def is_game_over(self):
        # 判断行是否有连续3个相同的棋子
        for row in self.board:
            if row[0] == row[1] == row[2] != ' ':
                return True
        
        # 判断列是否有连续3个相同的棋子
        for col in range(3):
            if self.board[0][col] == self.board[1][col] == self.board[2][col] != ' ':
                return True
        
        # 判断对角线是否有连续3个相同的棋子
        if self.board[0][0] == self.board[1][1] == self.board[2][2] != ' ':
            return True
        if self.board[0][2] == self.board[1][1] == self.board[2][0] != ' ':
            return True
        
        # 判断是否所有格子都被填满
        for row in self.board:
            if ' ' in row:
                return False
        
        return True
    
    # 下棋
    def make_move(self, row, col):
        if self.board[row][col] == ' ':
            self.board[row][col] = self.current_player
            self.current_player = 'O' if self.current_player == 'X' else 'X'
        else:
            print('此处已经有棋子,请重新选择位置!')
    
    # 运行游戏
    def play_game(self):
        while not self.is_game_over():
            self.print_board()
            move = input('请输入你的下棋位置(格式:行 列,范围 0-2):')
            row, col = map(int, move.split())
            self.make_move(row, col)
        
        self.print_board()
        print('游戏结束!')

# 创建井字棋游戏实例并运行游戏
game = TicTacToe()
game.play_game()

在上面的例子中,我们首先定义了一个TicTacToe类,表示井字棋游戏。在初始化方法__init__中,我们创建了一个3x3的空棋盘,并将当前玩家设置为'X'。

print_board方法用于打印当前的棋盘状态。

is_game_over方法用于判断游戏是否结束。我们首先判断每一行、每一列和两个对角线是否有连续三个相同的棋子,如果有,则游戏结束。然后判断棋盘是否已经被填满,如果是,则游戏结束。

make_move方法用于下棋。我们首先检查目标位置是否为空,如果为空,则将当前玩家的棋子放在该位置,并更新当前玩家。

play_game方法用于运行游戏。我们首先进入一个循环,直到游戏结束。在每一轮中,先打印当前的棋盘状态,然后获取玩家输入的下棋位置,并调用make_move方法进行下棋。最后,打印最终的棋盘状态和游戏结束的提示信息。

最后,我们创建了一个TicTacToe实例并调用play_game方法运行游戏。

运行以上代码,你将可以在命令行中玩井字棋游戏。