文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于Python制作简单的井字棋游戏

2023-05-18 11:58

关注

前言

五一放假了,今天还要继续内卷。我们今天来给大家写一个小游戏,无聊的时候可以玩一玩摸摸鱼。

基本框架

from tkinter import *  
import tkinter.messagebox as msg  
  
root = Tk()  
root.title('井字棋')  
# labels  
Label(root, text="player1 : X", font="times 15").grid(row=0, column=1)  
Label(root, text="player2 : O", font="times 15").grid(row=0, column=2)

我们在这段代码中,我们首先导入了 tkinter 模块和 tkinter.messagebox 模块。然后,我们创建了一个名为 root 的 Tk 对象,并设置了它的。我们这里命名为井字棋。

接着,我们创建了两个 Label 对象,并将它们放置在根窗口中的第一行和第二列。Label 对象的文本分别是 player1 : X 和 player2 : O,它们的字体大小为 15 像素。

最后,我们创建了一个名为 msg 的 messagebox 对象,并将其显示在根窗口中。当用户单击消息框中的按钮时,消息框将显示在用户的主窗口中,以便用户可以看到它。在这个例子中,我们只是简单地显示了一个消息框。

定义button

button1 = Button(root, width=15, font=('Times 16 bold'), height=7, command=lambda: checker(1))  
button1.grid(row=1, column=1)  
button2 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(2))  
button2.grid(row=1, column=2)  
button3 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(3))  
button3.grid(row=1, column=3)  
button4 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(4))  
button4.grid(row=2, column=1) 

我们这段代码是Python中的Tkinter模块中的Button组件的代码。Button组件是Tkinter中的一个小部件,用于创建按钮,可以响应用户的单击事件。

我们这里定义了9个Button组件,并为每个Button组件设置了一些属性和方法。每个Button组件的代码片段都与之前的Button组件略有不同,因为这段代码是一个完整的Tkinter应用程序,包括了窗口、标签、按钮等小部件。

在我们这个示例中,我们使用了Tkinter中的布局管理器Grid,将9个Button组件按照列进行排列,每个按钮的宽度都设置为15个像素。这个宽度是指Button组件在Tkinter窗口中的宽度,可以根据需要进行调整。

最后,我们为每个Button组件设置了一个lambda函数,该函数用于执行特定的操作。这个lambda函数是一个匿名函数,可以接受一个参数,该参数表示Button组件的编号。在这个示例中,我们为每个Button组件设置了一个lambda函数,用于调用Checker组件,该组件是一个递归函数,用于检查指定的编号。Checker组件的实现是一个单独的函数,具体的实现细节大家可以参考Tkinter官方文档。

总之,这段代码演示了如何使用Tkinter中的Button组件和Grid布局管理器来创建一个简单的应用程序,并实现了一些基本的交互功能。

功能实现

我们这里代码就展示一部分,剩下的写法都是一样的。

if digit == 1 and digit in digits:  
digits.remove(digit)  
##player1 will play if the value of count is even and for odd player2 will play  
if count % 2 == 0:  
mark = 'X'  
panels[digit] = mark  
elif count % 2 != 0:  
mark = 'O'  
panels[digit] = mark  
  
button1.config(text=mark)  
count = count + 1  
sign = mark  
  
if (win(panels, sign) and sign == 'X'):  
msg.showinfo("Result", "Player1 wins")  
root.destroy()  
elif (win(panels, sign) and sign == 'O'):  
msg.showinfo("Result", "Player2 wins")  
root.destroy()

我们这段代码定义了一个计数器和两个标记digit和mark。计数器count表示要在多少次循环中判断并执行相应的操作。

如果digit等于1并且digit在digits中,则从digits中删除digit,并且根据count的奇偶性来决定玩家1或2的操作。如果count是偶数,则玩家1将玩游戏,否则玩家2将玩游戏。

在每次循环中,如果count除以2的余数是0,则mark等于X,将panel[digit]设置为mark。否则,mark等于O,将panel[digit]设置为mark。

然后,将mark设置为按钮组件button1的文本,将count加1,将sign设置为mark,并将根据sign的值来决定游戏的胜者。如果玩家1赢得游戏,则显示“Result”消息,并关闭窗口。如果玩家2赢得游戏,则显示“Result”消息,并关闭窗口。

在每次循环中,根据sign的值来判断游戏的胜者。如果玩家1赢得游戏并且sign等于X,则显示“Result”消息并关闭窗口。如果玩家2赢得游戏并且sign等于O,则显示“Result”消息并关闭窗口。

效果

到此这篇关于基于Python制作简单的井字棋游戏的文章就介绍到这了,更多相关Python井字棋内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯