最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年01月22日 15:12:26   作者:data-flair  
這篇文章主要介紹了python如何實現(xiàn)簡單的井字棋游戲,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

項目輸出

項目先決條件

要使用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 = 0
panels = ["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))

在此功能中,將通過檢查哪個玩家連續(xù)打出三個標記(上,下,對角或對角線)來檢查結果。

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的值為偶數(shù),則玩家1將玩,否則玩家2將玩。
  • config()用于用適當?shù)奈谋緲擞洶粹o
  • 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()函數(shù)用于將特定數(shù)據(jù)發(fā)送到回調函數(shù)。

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

完整代碼

from tkinter import *
import tkinter.messagebox as msg

root= Tk()
root.title('TIC-TAC-TOE---Project Gurukul')
#labels
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)

digits = [1,2,3,4,5,6,7,8,9]

#for player1 sign = X and for player2 sign= Y
mark = ''

#counting the no. of click
count = 0


panels = ["panel"]*10


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

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

以上就是python實現(xiàn)簡單的井字棋游戲的詳細內容,更多關于python 井字棋游戲的資料請關注腳本之家其它相關文章!

相關文章

  • 解決Python2.7讀寫文件中的中文亂碼問題

    解決Python2.7讀寫文件中的中文亂碼問題

    下面小編就為大家分享一篇解決Python2.7讀寫文件中的中文亂碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python excel轉換csv代碼實例

    python excel轉換csv代碼實例

    這篇文章主要介紹了python excel轉換csv代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 淺談matplotlib中FigureCanvasXAgg的用法

    淺談matplotlib中FigureCanvasXAgg的用法

    這篇文章主要介紹了淺談matplotlib中FigureCanvasXAgg的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python利用Turtle繪制哆啦A夢和小豬佩奇

    Python利用Turtle繪制哆啦A夢和小豬佩奇

    turtle庫是python的基礎繪圖庫,經(jīng)常被用來介紹編程知識的方法庫,是標準庫之一,利用turtle可以制作很多復雜的繪圖。本文將為大家介紹通過turtle庫繪制制哆啦A夢和小豬佩奇,感興趣的小伙伴可以學習一下
    2022-04-04
  • Python中的迭代器詳解

    Python中的迭代器詳解

    這篇文章主要介紹迭代器,看完文章你可以了解到什么是可迭代對象、啥是迭代器、如何自定義迭代器、使用迭代器的優(yōu)勢,文中有詳細的代碼示例,需要的朋友可以參考下
    2023-08-08
  • Python 作圖實現(xiàn)坐標軸截斷(打斷)的效果

    Python 作圖實現(xiàn)坐標軸截斷(打斷)的效果

    這篇文章主要介紹了Python 作圖實現(xiàn)坐標軸截斷(打斷)的效果,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • python中利用Future對象異步返回結果示例代碼

    python中利用Future對象異步返回結果示例代碼

    future是一種對象,表示異步執(zhí)行的操作。下面這篇文章主要給大家介紹了關于python中利用Future對象異步返回結果的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • python 用for循環(huán)實現(xiàn)1~n求和的實例

    python 用for循環(huán)實現(xiàn)1~n求和的實例

    今天小編就為大家分享一篇python 用for循環(huán)實現(xiàn)1~n求和的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python調用實現(xiàn)最小二乘法的方法詳解

    Python調用實現(xiàn)最小二乘法的方法詳解

    所謂線性最小二乘法,可以理解為是解方程的延續(xù),區(qū)別在于,當未知量遠小于方程數(shù)的時候,將得到一個無解的問題。本文主要和大家分享Python調用實現(xiàn)最小二乘法的方法,需要的可以參考一下
    2023-04-04
  • pytest官方文檔解讀之安裝和使用插件的方法

    pytest官方文檔解讀之安裝和使用插件的方法

    這篇文章主要介紹了pytest官方文檔解讀之安裝和使用插件的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09

最新評論

韩城市| 苏尼特左旗| 湘潭市| 汝城县| 泾源县| 望谟县| 马边| 苗栗市| 昌宁县| 乌什县| 东兴市| 平山县| 遂溪县| 乡城县| 兴海县| 淮阳县| 镇赉县| 平顶山市| 昔阳县| 尼玛县| 南雄市| 延吉市| 阳原县| 射洪县| 东丽区| 祁东县| 奉节县| 卓资县| 安塞县| 湖州市| 社旗县| 乐安县| 开鲁县| 迁安市| 房山区| 永清县| 临湘市| 寻乌县| 景德镇市| 荥经县| 东山县|