Python使用Tkinter实现带界面的井字棋小游戏
本文介绍如何使用Python内置的Tkinter库开发一个带图形界面的井字棋游戏。内容涵盖环境准备、窗口初始化、9个按钮的定义与布局,以及通过逻辑函数判断胜负条件。适合Python初学者学习GUI编程与基础游戏逻辑实现。
接下来,我们将使用python+tkinter来构建一个带有图形界面的井字棋游戏,最终效果如下图所示。

Tkinter 是Python 官方提供的标准图形用户界面(GUI)库。借助Python ,开发者可以快速搭建GUI应用。由于Tkinter 作为内置模块包含在Python安装包中,只要完成Python安装即可直接使用 import Tkinter 库。此外,Python自带的IDLE编辑器也是基于Tkinter 开发的,因此对于简单的图形界面需求,Tkinter 完全能够胜任。
pip install tkinter
第一步:安装tkinter模块
root= Tk()
root.title('井字棋')
digits = [1,2,3,4,5,6,7,8,9]
mark = '' “
count = 0
panels = ["panel"]*10
第二步:初始化主窗口
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)
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)
button5=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(5))
button5.grid(row=2,column=2)
button6=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(6))
button6.grid(row=2,column=3)
button7=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(7))
button7.grid(row=3,column=1)
button8=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(8))
button8.grid(row=3,column=2)
button9=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(9))
button9.grid(row=3,column=3)
root.mainloop()
第三步:定义游戏按钮
从上述井字棋的结构可以看出,游戏界面主要由9个按钮组成。因此,我们需要在代码中定义这9个按钮。
def win(panels,sign):
return ((panels[1] == panels[2] == panels [3] == sign)
or (panels[1] == panels[4] == panels [7] == sign)
or (panels[1] == panels[5] == panels [9] == sign)
or (panels[2] == panels[5] == panels [8] == sign)
or (panels[3] == panels[6] == panels [9] == sign)
or (panels[3] == panels[5] == panels [7] == sign)
or (panels[4] == panels[5] == panels [6] == sign)
or (panels[7] == panels[8] == panels [9] == sign))
第四步:检查获胜条件
我们需要定义获胜的逻辑条件,即当任意一行、一列或对角线上的三个格子状态一致时,判定为获胜。
def checker(digit):
global count, mark, digits
if digit==1 and digit in digits:
digits.remove(digit)
if count%2==0:
mark ='X'
panels[digit]=mark
elif count%2!=0:
mark = 'O'
panels[digit]=mar
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()
最后,实现点击下棋的功能,并通过win函数来判断比赛是否结束以及判定获胜者。
至此,关于python实现带界面井字棋小游戏的教程介绍完毕。如需了解更多关于python实现带界面井字棋的相关内容,欢迎查阅本站过往文章或继续浏览后续文章,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









