久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python實(shí)現(xiàn)簡(jiǎn)單的井字棋游戲(gui界面)

瀏覽:12日期:2022-06-29 13:08:56
項(xiàng)目輸出

python實(shí)現(xiàn)簡(jiǎn)單的井字棋游戲(gui界面)

項(xiàng)目先決條件

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

Tkinter模塊是用于渲染圖形的標(biāo)準(zhǔn)圖形用戶界面。

Tkinter.messagebox用于顯示消息框

要安裝tkinter模塊,我們?cè)诿钐崾痉率褂昧藀ip install命令:

pip install tkinter項(xiàng)目文件結(jié)構(gòu)

這些是使用python構(gòu)建井字游戲的步驟:

導(dǎo)入模塊 初始化窗口 檢查結(jié)果的功能 檢查獲勝者的功能 定義標(biāo)簽和按鈕1.導(dǎo)入模塊

from tkinter import *import tkinter.messagebox as msg

在此步驟中,我們導(dǎo)入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()用于設(shè)置窗口的標(biāo)題3.檢查結(jié)果的功能

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

在此功能中,將通過(guò)檢查哪個(gè)玩家連續(xù)打出三個(gè)標(biāo)記(上,下,對(duì)角或?qū)蔷€)來(lái)檢查結(jié)果。

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次點(diǎn)擊以玩游戲。玩家每次單擊時(shí),如果count的值大于8,則通過(guò)將count的值增加1來(lái)減少機(jī)會(huì),則游戲結(jié)果為平局

如果count的值為偶數(shù),則玩家1將玩,否則玩家2將玩。 config()用于用適當(dāng)?shù)奈谋緲?biāo)記按鈕 messagebox小部件中的showinfo()方法用于顯示一些相關(guān)信息 destroy()停止mainloop退出程序 5.定義標(biāo)簽和按鈕

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()小部件,用于顯示用戶無(wú)法修改的文本。Button()小部件顯示按鈕

root是我們引用的窗口的名稱 文本存儲(chǔ)我們?cè)跇?biāo)簽上顯示的值 文字所使用的字體 單擊按鈕時(shí)將調(diào)用命令 lambda()函數(shù)用于將特定數(shù)據(jù)發(fā)送到回調(diào)函數(shù)。

要運(yùn)行程序時(shí),將執(zhí)行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實(shí)現(xiàn)簡(jiǎn)單的井字棋游戲的詳細(xì)內(nèi)容,更多關(guān)于python 井字棋游戲的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 91精品久久久久久久久久 | 日韩精品无码一区二区三区 | 日韩精品一 | 亚洲国产高清在线 | 国产精品毛片久久久久久 | a久久久久久 | 欧美一级一区 | 精品亚洲一区二区三区 | 精品免费 | 91av免费| 91麻豆精品久久久久蜜臀 | 欧美与黑人午夜性猛交久久久 | 玖玖在线免费视频 | 亚洲国产精品99久久久久久久久 | 91视频www| 精品香蕉视频 | 国产一区91 | www.久久久久久久久久久久 | 99国产精品视频免费观看一公开 | 欧美午夜精品久久久久久蜜 | 精品亚洲一区二区三区 | 国产91成人video | 久久久久久免费 | 日韩专区中文字幕 | 国产精品不卡视频 | 欧美一级全黄 | 九草av| 成人精品国产一区二区4080 | 成人在线免费 | 精品久久久久久久久福利 | 精品中文字幕在线 | 国产乱码一区二区三区在线观看 | 精品久久久久久久久久久 | 亚洲国产精品久久久男人的天堂 | 伊人久操 | 9l蝌蚪porny中文自拍 | 免费观看日韩一级片 | 成人精品国产 | 午夜久久久 | 91av视频在线观看 | 亚洲精品久久久久久一区二区 |