簡體   English   中英

條件和 while 循環不能正常工作 py(tkinter)

[英]Conditions and while loop not working properly py(tkinter)

我正在做一個猜數字游戲但是我有一個問題:用戶必須一個特定的數字,如果超過這個數字,游戲結束並且用戶的狀態被確定,所以我創建了一個名為 sam 的變量並做了這個

sam = 0

然后我用 while 做了一個循環並說:

while sam < 10:

然后,每一次錯誤的猜測都會被添加到 sam 中,但問題是如果你做錯了什么,就會發生這種情況:

>>12 is lower
>>12 is lower
>>12 is lower
>>12 is lower
>>12 is lower
>>12 is lower
>>12 is lower
>>12 is lower
>>12 is lower
>>12 is lower
>>you lose

也就是說,它會重復一個條件,直到 sam 超過 10 我不知道該怎么辦,我的代碼:

from tkinter import * 
sam = 0
def get_1():
    global correct
    correct = int(player1.get())
    player1.pack_forget()
    sumbit.pack_forget()
def Guess():
    global sam
    a = int(player_2.get())
    while sam < 10:
        if a == correct:
            break
        elif a > correct:
            print(a,"is higher")
            sam += 1 
        elif a < correct:
            print(a,"is lower")
            sam += 1
    if a == correct:
        print("you win")
    else:
        print("you lose")
app = Tk()
player1 = Entry(app,font=20)
app.minsize(300,300)
player1.pack()
player_2 = Entry(app,font=20)
player_2.pack()
sumbit = Button(app,font=10,text="player 1 sumbit",command=get_1)
sumbit.pack()
guss = Button(app,text="player 2  guess number",font=20,command=Guess)
guss.pack()
app.mainloop()

編寫 GUI 程序與編寫非 GUI 程序需要不同的思維方式。 類似於您創建的循環不適合 GUI。 GUI 的工作方式是定義要調用的函數以響應事件,然后事件管理器 ( mainloop ) 是一個循環,它等待事件,然后將它們分派給處理程序。

因此,在您的情況下, Guess應該只處理一次猜測,而不是嘗試遍歷一系列猜測。 它可以為猜測次數保留一個全局計數器,並在每次調用Guess時更新它。

它可能看起來像這樣:

def Guess():
    global guesses
    global sam
    a = int(player_2.get())
    player_2.delete(0, "end")

    guesses += 1

    if a == correct:
        print("you win")

    elif guesses == 10:
        print("you lose")

    elif a > correct:
        print(a,"is higher")

    elif a < correct:
        print(a,"is lower")

當玩家 1 提交值時,您需要將guesses初始化為零,因為這指定了游戲的開始。

def get_1():
    global correct
    global guesses
    correct = int(player1.get())
    guesses = 0
    player1.pack_forget()
    sumbit.pack_forget()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM