Python使用Tkinter实现带界面的井字棋小游戏

Finn
Finn
发布时间:2026-10-15 | 2人浏览过
原创

本文介绍如何使用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实现带界面井字棋的相关内容,欢迎查阅本站过往文章或继续浏览后续文章,感谢大家的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表