继续创作,加速成长!这是我参与「掘金日新计划 4 月更文挑战」的第19天,点击检查活动概况

前语

明天就要五一放假了,今日还要继续内卷。咱们今日来给咱们写一个小游戏,无聊的时候能够玩一玩摸摸鱼。

根本框架

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模块。然后,咱们创立了一个名为rootTk目标,并设置了它的标题。咱们这儿命名为井字棋。

接着,咱们创立了两个Label目标,并将它们放置在根窗口中的第一行和第二列。Label目标的文本分别是player1 : Xplayer2 : O,它们的字体大小为 15 像素。

最终,咱们创立了一个名为msgmessagebox目标,并将其显现在根窗口中。当用户单击音讯框中的按钮时,音讯框将显现在用户的主窗口中,以便用户能够看到它。在这个比如中,咱们仅仅简略地显现了一个音讯框。

界说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制作井字棋