编程时光机:用Python重现井字棋,唤醒童年记忆!

回忆起童年,在阳光明媚的午后,课间休息时和同学一起在教室外的走廊上上玩井字棋的日子,总是让人心生温暖。那时候,用粉笔在地上画格子,"X"和"O"在我们的欢声笑语中交替出现。现在,虽然我们已经长大,但井字棋的乐趣仍旧不减。想象一下,在忙碌的工作中偷闲摸鱼时,打开电脑,一边品着咖啡,一边通过自己编写的程序玩一局井字棋,是多么惬意的事情啊!

今天我要和大家分享一个非常适合零基础学习者的Python项目——井字棋游戏。这不仅是一款大家熟悉的经典游戏,还是一个非常好的编程入门练习。通过这个项目,我们可以学习基础的编程概念和图形界面的制作,而且完成后的成就感会让你爱上编程!

游戏规则

井字棋是一款两人轮流在3x3的网格上标记“X”和“O”的游戏。谁先

将三个相同的标记排成一行,无论是横线、竖线还是对角线,就获得胜利。

使用的库 本项目使用Python的标准GUI库——Tkinter。Tkinter是Python的一个很好的入门级GUI库,适合初学者学习和使用。

代码示例

import tkinter as tk  # 导入Tkinter库,用于创建GUI
import tkinter.messagebox  # 导入消息弹窗库

class TicTacToeApp:
    def __init__(self, root):
        # 初始化游戏
        self.root = root  # 主窗口
        self.root.title("海水加糖的井字棋游戏")  # 窗口标题
        self.board = [""] * 9  # 游戏板,9个空白格子
        self.current_player = "X"  # 当前玩家,默认为"X"
        self.buttons = []  # 存储棋盘上的按钮
        self.initialize_board()  # 初始化棋盘

    def initialize_board(self):
        # 创建并布局棋盘上的按钮
        for i in range(9):
            # 创建按钮,设置属性
            button = tk.Button(self.root, text="", bg="white", fg="black",
                               font=("Helvetica", 20, "bold"), width=5, height=2,
                               relief="raised", bd=3,
                               command=lambda i=i: self.on_button_click(i))
            button.grid(row=i // 3, column=i % 3)  # 定位按钮
            self.buttons.append(button)  # 将按钮加入列表

        self.center_window()  # 将窗口置于屏幕中央

    def center_window(self):
        # 窗口居中显示
        self.root.update_idletasks()
        width = self.root.winfo_width()
        height = self.root.winfo_height()
        x = (self.root.winfo_screenwidth() // 2) - (width // 2)
        y = (self.root.winfo_screenheight() // 2) - (height // 2)
        self.root.geometry(f'{width}x{height}+{x}+{y}')  # 设置窗口位置

    def on_button_click(self, i):
        # 按钮点击事件处理
        if self.board[i] == "":
            self.board[i] = self.current_player
            self.buttons[i].config(text=self.current_player, fg="red" if self.current_player == "X" else "green")
            if self.check_winner(self.current_player):
                self.end_game(f"玩家{self.current_player}获胜!")
            elif "" not in self.board:
                self.end_game("平局!")
            else:
                self.current_player = "O" if self.current_player == "X" else "X"

    def check_winner(self, player):
        # 检查是否有获胜者
        for i in range(3):
            if all(self.board[i * 3 + j] == player for j in range(3)) or \
               all(self.board[j * 3 + i] == player for j in range(3)) or \
               all(self.board[j * 4] == player for j in range(3)) or \
               all(self.board[j * 2 + 2] == player for j in range(1, 3)):
                return True
        return False

    def end_game(self, message):
        # 游戏结束处理
        response = tkinter.messagebox.askyesno("游戏结束", f"{message}\n是否想要重新开始一局?")
        if response:
            self.reset_game()
        else:
            self.root.quit()

    def reset_game(self):
        # 重置游戏
        self.board = [""] * 9
        for button in self.buttons:
            button.config(text="", fg="black")
        self.current_player = "X"

if __name__ == "__main__":
    root = tk.Tk()
    app = TicTacToeApp(root)
    root.mainloop()

代码解析

  • 类与方法:我们通过定义一个类TicTacToeApp,来创建和管理游戏的所有元素和事件。类中的每个方法都负责不同的功能,比如初始化棋盘、处理按钮点击事件等。

  • 初始化:使用Tkinter的组件创建游戏窗口,初始化棋盘(9个空白格),设置当前玩家为“X”。

  • 棋盘布局:initialize_board方法使用Tkinter的Button组件创建3x3的格子。

  • 点击事件:点击格子时,标记当前玩家的符号,并检查游戏是否结束。

  • 胜利判断:check_winner方法检查行、列或对角线是否有连续的三个相同标记。

  • 游戏结束处理:游戏结束时,弹出对话框显示胜利者或平局,并询问是否重新开始游戏。

  • 游戏重置:reset_game方法清空棋盘,重置玩家。

效果展示

编程时光机:用Python重现井字棋,唤醒童年记忆!_第1张图片

编程时光机:用Python重现井字棋,唤醒童年记忆!_第2张图片

探索与改进

  • AI对手:可以尝试加入简单的AI对手,让玩家有机会与电脑对弈。

  • 增加游戏设置:例如,允许玩家选择先手或后手,或者选择标记符号。

  • 优化UI:进一步美化界面,增加动画效果,提升用户体验。

结语

这个井字棋项目不仅是对过去美好回忆的一种致敬,更是现代生活中一种简单的乐趣源泉。无论是在午休时间,还是在下班后的闲暇时光,都可以打开电脑,享受一下自己动手编写的小游戏带来的成就感和乐趣。让我们一起用Python编程,把日常生活中的小片刻变得更加有趣吧!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

编程时光机:用Python重现井字棋,唤醒童年记忆!_第3张图片

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板
编程时光机:用Python重现井字棋,唤醒童年记忆!_第4张图片 若有侵权,请联系删除

你可能感兴趣的:(python,开发语言,Python编程,Python学习,Python游戏)