首頁 > 後端開發 > Python教學 > 基於Python怎麼製作簡單的井字棋遊戲

基於Python怎麼製作簡單的井字棋遊戲

WBOY
發布: 2023-05-19 14:29:37
轉載
1494 人瀏覽過

基本架構

from tkinter import *  
import tkinter.messagebox as msg  
  
root = Tk()  
root.title('井字棋')  
# 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)
登入後複製

我們在這段程式碼中,我們先匯入了 tkinter 模組和 tkinter.messagebox 模組。然後,我們建立了一個名為 root 的 Tk 對象,並設定了它的標題。我們這裡命名為井字棋。

接著,我們建立了兩個 Label 對象,並將它們放在根視窗中的第一行和第二列。 Label 物件的文字分別是 player1 : X 和 player2 : O,它們的字體大小為 15 像素。

最後,我們建立了一個名為 msg 的 messagebox 對象,並將其顯示在根視窗中。當使用者點擊訊息框中的按鈕時,訊息框將顯示在使用者的主視窗中,以便使用者可以看到它。在這個例子中,我們只是簡單地顯示了一個訊息框。

定義button

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)
登入後複製

這段程式碼是Tkinter模組中Button元件的Python實作。在Tkinter中,Button小工具可以被使用來建立按鈕,該按鈕可以被點擊,以回應使用者的事件。

我們已經宣告了九個按鈕元件,對每個元件進行了屬性和方法的配置。每個Button元件的程式碼片段都與先前的Button元件略有不同,因為這段程式碼是一個完整的Tkinter應用程序,包括了視窗、標籤、按鈕等小部件。

在我們這個範例中,我們使用了Tkinter中的佈局管理器Grid,將9個Button元件按照列進行排列,每個按鈕的寬度都設定為15個像素。可以依需求自行調整的是Button元件在Tkinter視窗中的寬度。

最後,我們設定了一個 lambda 函數,為每個 Button 元件執行特定的操作。這個lambda函數是一種無名函數,可接受一個參數表示Button元件的編號。在這個範例中,我們為每個Button元件設定了一個lambda函數,用於呼叫Checker元件,該元件是一個遞歸函數,用於檢查指定的編號。實作Checker元件的具體細節請參考Tkinter官方文件中的單獨函數。

功能實作

我們這裡程式碼就展示一部分,剩下的寫法都是一樣的。

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()
登入後複製

我們這段程式碼定義了一個計數器和兩個標記digit和mark。計數器count表示要在多少次循環中判斷並執行對應的操作。

如果digit等於1且digit在digits中,則從digits中刪除digit,並且根據count的奇偶性來決定玩家1或2的操作。如果count是偶數,則玩家1將玩遊戲,否則玩家2將玩遊戲。

在每次循環中,如果count除以2的餘數是0,則mark等於X,將panel[digit]設為mark。如果mark等於O,那麼就把panel[digit]設為mark。

然後,將mark設定為按鈕元件button1的文本,將count加1,將sign設為mark,並將根據sign的值來決定遊戲的勝者。如果玩家1贏得遊戲,則顯示「Result」訊息,並關閉視窗。如果玩家2贏得遊戲,則顯示「Result」訊息,並關閉視窗。

在每次循環中,依照sign的值來判斷遊戲的勝者。當遊戲被玩家1獲勝且sign等於X時,將會顯示一個「Result」訊息並關閉視窗。當玩家2獲勝且sign為O時,應顯示「Result」訊息並關閉視窗。

效果

基於Python怎麼製作簡單的井字棋遊戲

以上是基於Python怎麼製作簡單的井字棋遊戲的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板