网络编程
位置:首页>> 网络编程>> Python编程>> python实现带界面的井字棋小游戏

python实现带界面的井字棋小游戏

作者:诗一样的代码  发布时间:2022-11-14 22:28:24 

标签:python,井字棋

今天我们用python+tkinter安装带界面的井字棋,效果如图所示

python实现带界面的井字棋小游戏

Tkinter Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。


pip install tkinter

1、首先安装tkinter


root= Tk()
root.title('井字棋')

digits = [1,2,3,4,5,6,7,8,9]
mark = '' “
count = 0
panels = ["panel"]*10

2、初始化窗口


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()

3、定义按钮

很明显上面的井字棋就是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))

4、检查获胜的条件

检查获胜的条件,上面其中一种情况都是获胜的。


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函数判断是否结束比赛赢得棋局。

来源:https://juejin.cn/post/7010574460176564238

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com