软件价值5-Tic Tac Toe

Tic Tac Toe(又称井字棋、圈圈叉叉、三子棋)是一种两人轮流下棋的游戏,通常在3x3的方格中进行。目标是先在水平、垂直或对角线上连续放置三个自己的标记(通常是"X"或"O"),即可获胜。

规则很简单:

1. 游戏开始时,棋盘是一个3x3的方格,每个格子为空。

2. 两名玩家轮流下棋,一个是"X",另一个是"O"。

3. 玩家轮流选择一个空格,将自己的标记放入该位置。

4. 游戏继续进行,直到有一名玩家在水平、垂直或对角线上拥有连续的三个标记,即可宣布获胜。

5. 如果棋盘被填满且没有玩家获胜,游戏宣布为平局。

Tic Tac Toe是一种简单而经典的游戏,适合所有年龄段的人。由于规则简单,但又充满策略,因此常被用于教学和娱乐。

代码:

import tkinter as tk
from tkinter import messagebox


class TicTacToe:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("Tic Tac Toe")

        self.board = [[' ' for _ in range(3)] for _ in range(3)]
        self.current_player = 'X'

        self.buttons = [[None] * 3 for _ in range(3)]
        for i in range(3):
            for j in range(3):
                self.buttons[i][j] = tk.Button(self.root, text='', font=('normal', 20), width=5, height=2,
                                               command=lambda row=i, col=j: self.make_move(row, col))
                self.buttons[i][j].grid(row=i, column=j)

    def print_board(self):
        for i in range(3):
            for j in range(3):
                self.buttons[i][j]['text'] = self.board[i][j]

    def check_winner(self):
        for i in range(3):
            if self.board[i][0] == self.board[i][1] == self.board[i][2] != ' ':
                return self.board[i][0]
            if self.board[0][i] == self.board[1][i] == self.board[2][i] != ' ':
                return self.board[0][i]

        if self.board[0][0] == self.board[1][1] == self.board[2][2] != ' ':
            return self.board[0][0]
        if self.board[0][2] == self.board[1][1] == self.board[2][0] != ' ':
            return self.board[0][2]

        return None

    def is_board_full(self):
        return all(cell != ' ' for row in self.board for cell in row)

    def make_move(self, row, col):
        if self.board[row][col] == ' ':
            self.board[row][col] = self.current_player
            self.print_board()

            winner = self.check_winner()
            if winner:
                messagebox.showinfo("Game Over", f"Player {winner} wins!")
                self.reset_game()
            elif self.is_board_full():
                messagebox.showinfo("Game Over", "It's a tie!")
                self.reset_game()
            else:
                self.current_player = 'O' if self.current_player == 'X' else 'X'

    def reset_game(self):
        for i in range(3):
            for j in range(3):
                self.board[i][j] = ' '
                self.buttons[i][j]['text'] = ''

        self.current_player = 'X'

    def run(self):
        self.root.mainloop()


if __name__ == "__main__":
    game = TicTacToe()
    game.run()

关键解释:

1. 这行代码是为Tic Tac Toe游戏初始化一个个按钮,设置按钮的点击事件,当按钮被点击时,调用 self.make_move(row, col) 方法。

self.buttons[i][j] = tk.Button(self.root, text='', font=('normal', 20), width=5, height=2,
                                               command=lambda row=i, col=j: self.make_move(row, col))

2. print_board 方法用于更新图形界面上的按钮,显示当前棋盘的状态。

3. check_winner 方法检查是否有玩家赢得了游戏,返回赢家的标记('X'或'O'),如果没有赢家则返回 None。

4. is_board_full 方法检查棋盘是否已满(即所有格子都已被填满)。

5. make_move 方法处理每次点击按钮的事件,如果当前点击的位置为空格,则将当前玩家的标记('X'或'O')放置在该位置,并检查游戏是否结束。

6. reset_game 方法重置游戏状态,清空棋盘,准备新的游戏。

7. run 方法启动 Tkinter 的事件循环,使图形界面可交互。

运行:

Tic Tac Toe

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dracularking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值