日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python實現簡單的井字棋游戲(gui界面)

瀏覽:23日期:2022-06-29 13:08:56
項目輸出

python實現簡單的井字棋游戲(gui界面)

項目先決條件

要使用python構建井字游戲,我們需要tkinter模塊和python的基本概念

Tkinter模塊是用于渲染圖形的標準圖形用戶界面。

Tkinter.messagebox用于顯示消息框

要安裝tkinter模塊,我們在命令提示符下使用了pip install命令:

pip install tkinter項目文件結構

這些是使用python構建井字游戲的步驟:

導入模塊 初始化窗口 檢查結果的功能 檢查獲勝者的功能 定義標簽和按鈕1.導入模塊

from tkinter import *import tkinter.messagebox as msg

在此步驟中,我們導入tkinter和messsagebox模塊

2.初始化窗口

root= Tk()root.title(’TIC-TAC-TOE---DataFlair’)digits = [1,2,3,4,5,6,7,8,9]mark = ’’ “count = 0panels = ['panel']*10 Tk()用于初始化窗口 title()用于設置窗口的標題3.檢查結果的功能

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() if digit==2 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button2.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() if digit==3 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button3.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() if digit==4 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button4.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() if digit==5 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button5.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() if digit==6 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button6.config(text = mark) count = count+1 sign 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() if digit==7 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button7.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() if digit==8 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button8.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() if digit==9 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button9.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() if(count>8 and win(panels,’X’)==False and win(panels,’O’)==False): msg.showinfo('Result','Match Tied') root.destroy()

玩家總共有9次點擊以玩游戲。玩家每次單擊時,如果count的值大于8,則通過將count的值增加1來減少機會,則游戲結果為平局

如果count的值為偶數,則玩家1將玩,否則玩家2將玩。 config()用于用適當的文本標記按鈕 messagebox小部件中的showinfo()方法用于顯示一些相關信息 destroy()停止mainloop退出程序 5.定義標簽和按鈕

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

Label()小部件,用于顯示用戶無法修改的文本。Button()小部件顯示按鈕

root是我們引用的窗口的名稱 文本存儲我們在標簽上顯示的值 文字所使用的字體 單擊按鈕時將調用命令 lambda()函數用于將特定數據發送到回調函數。

要運行程序時,將執行mainloop()方法。

完整代碼

from tkinter import *import tkinter.messagebox as msgroot= Tk()root.title(’TIC-TAC-TOE---Project Gurukul’)#labelsLabel(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)digits = [1,2,3,4,5,6,7,8,9]#for player1 sign = X and for player2 sign= Ymark = ’’#counting the no. of clickcount = 0panels = ['panel']*10def 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 #Check which button clicked 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() if digit==2 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button2.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() if digit==3 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button3.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() if digit==4 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button4.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() if digit==5 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button5.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() if digit==6 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button6.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() if digit==7 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button7.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() if digit==8 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button8.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() if digit==9 and digit in digits: digits.remove(digit) if count%2==0: mark =’X’ panels[digit]=mark elif count%2!=0: mark = ’O’ panels[digit]=mark button9.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() ###if count is greater then 8 then the match has been tied if(count>8 and win(panels,’X’)==False and win(panels,’O’)==False): msg.showinfo('Result','Match Tied') root.destroy() ####define buttonsbutton1=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()

以上就是python實現簡單的井字棋游戲的詳細內容,更多關于python 井字棋游戲的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品国模一区二区三区| 亚洲专区视频| 日本亚洲欧美天堂免费| 免费在线观看不卡| 中文字幕亚洲精品乱码| 青青草国产精品亚洲专区无| 日本在线不卡视频一二三区| 亚洲精品福利| 久久精品超碰| 欧美激情一区| 久久精品国产www456c0m| 婷婷成人在线| 亚洲一区二区三区无吗| 亚洲特级毛片| 日本亚洲不卡| 国产精品对白久久久久粗| 国模大尺度视频一区二区| 久久国产日本精品| 99国产精品视频免费观看一公开 | 亚洲精品国产精品粉嫩| 欧美日韩中文| 亚洲电影有码| 综合色一区二区| 成人在线视频中文字幕| 国户精品久久久久久久久久久不卡 | 日韩综合在线| 午夜欧美精品久久久久久久| 三级欧美韩日大片在线看| 国产欧美日韩精品一区二区三区| 国产精品成久久久久| 午夜在线精品| 精品淫伦v久久水蜜桃| 在线看片不卡| 国产美女视频一区二区| 久久久久久久久99精品大| 日韩精品欧美精品| 五月天av在线| 国产日韩中文在线中文字幕| 麻豆mv在线观看| 久久久久亚洲| 青青草视频一区| 亚洲国内精品| 精品高清久久| 在线免费观看亚洲| 久久久久99| 欧美啪啪一区| 国产免费成人| 中文av在线全新| 日韩欧美中文字幕一区二区三区| 久久麻豆精品| 国产精品成人国产| 一区二区三区网站| se01亚洲视频| 国产精品极品在线观看| 中文字幕一区久| 久久精品97| 另类av一区二区| 黑人精品一区| 国产精品欧美一区二区三区不卡| 亚洲一区日韩| 欧美sm一区| 久久不见久久见免费视频7| 亚洲欧美日韩视频二区| 日韩av福利| 国产一区二区色噜噜| 日韩高清在线一区| 久久亚洲图片| 香蕉人人精品| 夜鲁夜鲁夜鲁视频在线播放| 一区二区亚洲视频| 午夜国产精品视频免费体验区| 国产h片在线观看| 国产精品欧美一区二区三区不卡| 亚洲欧美日韩一区在线观看| 欧美不卡在线| 欧美一级鲁丝片| 国产一区二区三区国产精品| 国产精品一区高清| 欧美日韩一视频区二区| 日本中文字幕一区二区视频| 久久国产福利| 欧美一级专区| 六月婷婷一区| 午夜一级久久| 91精品成人| 欧美va天堂在线| 精品一区欧美| 99国产精品视频免费观看一公开| 日韩精品麻豆| 国产综合亚洲精品一区二| 亚洲午夜天堂| 日韩一区亚洲二区| 久久蜜桃精品| 久久在线电影| 久久美女精品| 国产亚洲综合精品| 久久国产精品毛片| 三级一区在线视频先锋| 中文一区一区三区免费在线观 | 999在线观看精品免费不卡网站| 欧美羞羞视频| 欧美一级鲁丝片| 久久婷婷亚洲| 精品日韩毛片| 久久国产88| 日韩欧美美女在线观看| 欧美日韩夜夜| 欧美国产精品| 国产aⅴ精品一区二区三区久久| 国产一区二区三区不卡av| 成人一区而且| 荡女精品导航| 久久久久国产| 爽好久久久欧美精品| 欧美精品国产| 粉嫩av一区二区三区四区五区 | 国产精品一区二区精品视频观看 | 久久精品国产福利| 麻豆成全视频免费观看在线看| 国产精品毛片一区二区在线看| 国产精品久久久久久久久妇女| 欧美日韩水蜜桃| 免费在线观看成人| 国产精品免费精品自在线观看| 国产一区2区| 欧美不卡高清| 日本亚州欧洲精品不卡| 美女久久99| 91精品久久久久久久久久不卡| 日韩中文字幕av电影| 亚洲精品国模| 麻豆精品国产91久久久久久| 成人午夜国产| 亚洲开心激情| 国产成人免费精品| 亚洲免费精品| 国产精品久久久久久模特 | 国产精品久久久免费| 91精品xxx在线观看| 蜜臀av国产精品久久久久| 国产精品a级| 在线精品视频在线观看高清| 97精品国产99久久久久久免费| 日韩毛片网站| av最新在线| 蜜臀av亚洲一区中文字幕| 久久影院资源站| 老牛国产精品一区的观看方式| 蜜桃久久久久| 国产亚洲一区在线| 国产精品久久久久久久久妇女| 奶水喷射视频一区| 日韩1区在线| 日本午夜精品| 一区在线免费| 国产91在线播放精品| 亚洲男人在线| 日韩成人亚洲| 亚洲精品裸体| 国产综合欧美| 国产91在线播放精品| 日韩精品一区二区三区中文在线 | 亚洲精品在线影院| 国产精品入口久久| 一区在线免费| 国产a亚洲精品| 日韩激情av在线| 国产精品99免费看| 国产成人免费| 青青青国产精品| 视频一区视频二区中文| 鲁大师精品99久久久| 亚洲一级大片| 国模 一区 二区 三区| 美女久久久久久 | 久久香蕉精品| 国产成人黄色| 日韩国产欧美在线播放| 亚洲一级网站| 国产精品一在线观看| 视频一区二区三区中文字幕| 97久久精品| 一本一道久久a久久| 日韩欧美一区二区三区在线观看| 国产精品欧美三级在线观看 | 国产精品啊v在线| 欧美视频久久| 日韩精品一二三四| 国产免费成人| 国产在线成人| 99成人在线视频| 国产欧美一区二区色老头| 日韩影院免费视频| 中文在线一区| 亚洲女同中文字幕| 在线视频观看日韩| 99久久精品费精品国产| 亚洲天堂av影院| a天堂资源在线| 98精品视频|