第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如果 while 循環(huán)處于活動(dòng)狀態(tài),海龜圖形不響應(yīng) onkey() 命令

如果 while 循環(huán)處于活動(dòng)狀態(tài),海龜圖形不響應(yīng) onkey() 命令

眼眸繁星 2021-11-16 10:43:52
我正在嘗試制作一個(gè)游戲,其中海龜需要能夠注冊(cè)并響應(yīng)用戶(hù)輸入(簡(jiǎn)化,將出現(xiàn)一個(gè)字母,用戶(hù)需要在鍵盤(pán)上單擊它。因此,如果它顯示“b”,則用戶(hù)鍵入“乙”)。我只添加了字母 a 到 f 以使其在測(cè)試過(guò)程中更簡(jiǎn)單。它們中的每一個(gè)都有一個(gè)函數(shù),該函數(shù)將在按下字母并且程序正在偵聽(tīng)它時(shí)執(zhí)行。一切都很好,直到我添加了一個(gè) while 函數(shù)。目前,while 函數(shù)中沒(méi)有任何內(nèi)容(除了 pass),但是在我創(chuàng)建它之后,代碼將不再響應(yīng)用戶(hù)輸入。有人能告訴我如何解決這個(gè)問(wèn)題嗎?我的最終目標(biāo)是讓程序在 while 循環(huán)運(yùn)行并執(zhí)行其代碼時(shí)始終偵聽(tīng)用戶(hù)輸入。下面是我當(dāng)前的代碼import signal, turtledef timeout_handler(signal, frame): # End of timer function    raise Exception('Time is up!')signal.signal(signal.SIGALRM, timeout_handler)signal.alarm(10) # Number inside is how long the game will last.def hit_a():    print("a registered")def hit_b():    print("b registered")def hit_c():    print("c registered")def hit_d():    print("d registered")def hit_e():    print("e registered")def hit_f():    print("f registered")turtle.onkey(hit_a, "a")turtle.onkey(hit_b, "b")turtle.onkey(hit_c, "c")turtle.onkey(hit_d, "d")turtle.onkey(hit_e, "e")turtle.onkey(hit_f, "f")turtle.listen()while True:    pass    # Add program hereturtle.mainloop()編輯:我需要一段代碼,或者至少需要一個(gè)循環(huán)來(lái)保持部分重復(fù)。在偽代碼中它看起來(lái)像這樣:Several turtles each write one letter somewhere on the screenProgram waits for user to input a letterAward/deduct points based on if they got it right or wronggo back to line 2 if they got it wrong.repeat我計(jì)劃添加更多內(nèi)容,但我首先需要讓基礎(chǔ)游戲繼續(xù)運(yùn)行。我知道如何編碼的唯一方法是使用 while 循環(huán)。但是使用一個(gè)似乎是不可能的,因?yàn)樗鼤?huì)阻止程序監(jiān)聽(tīng)用戶(hù)輸入。請(qǐng)注意,我需要所有這些都在海龜上,而不是在終端上(如果在 Windows 上,則為命令提示符)因?yàn)槲覍?duì)字母進(jìn)行顏色編碼以顯示要避免的字母和要輸入的字母。我應(yīng)該怎么寫(xiě)這個(gè)?我也想快速提一下,我之前已經(jīng)“避免”了這個(gè)問(wèn)題。在下面的代碼中,程序在 while 循環(huán)中響應(yīng)用戶(hù)輸入。(忽略問(wèn)題和分配給 onkey() 的函數(shù)。這個(gè)想法是程序在循環(huán)中響應(yīng))。但是,我不知道為什么在這段代碼中程序在循環(huán)中響應(yīng),但在上面的代碼中它沒(méi)有注冊(cè)任何用戶(hù)輸入turtle.onkey(lower_game1_number, "s")turtle.onkey(increase_game1_number, "w")turtle.listen(xdummy=None, ydummy=None)while True: # game1 is a turtle    game1.write(first_game_num_display,False,"center",("Arial",30))    game1_timer = random.randint(2,4)    time.sleep(game1_timer)    increase_game1_number()    game1.undo()    print(game1_timer)mainloop()
查看完整描述

1 回答

?
慕無(wú)忌1623718

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊

除了while True:@martineau 提供的“永遠(yuǎn)不要在基于事件的環(huán)境中使用”建議之外,您無(wú)需將“信號(hào)”庫(kù)拖到代碼中,因?yàn)槟梢允褂胦ntimer()事件處理它。


我需要一段代碼,或者至少需要一個(gè)循環(huán)來(lái)保持一個(gè)部分的重復(fù)。


為了解決這個(gè)問(wèn)題,我用一個(gè)簡(jiǎn)單的游戲替換了我之前的示例代碼,該游戲顯示一個(gè)字母,并會(huì)不斷在屏幕上移動(dòng)它并每?jī)擅敫淖兯念伾?,直到您輸入該字母。之后,它將更改為不同的字母并繼續(xù):


from turtle import Screen, Turtle

from random import shuffle, randrange

from itertools import cycle


WIDTH, HEIGHT = 600, 600


FONT_SIZE = 36

FONT = ('Arial', FONT_SIZE, 'bold')


LETTERS = list("abcdefghijklmnopqrstuvwxyz")


COLORS = ['red', 'blue', 'green', 'magenta', 'cyan', 'black', 'orange', 'gray']


def play():

    global letter


    if hit == letter:

        letter = next(letters)


    turtle.clear()

    turtle.color(next(colors))

    turtle.goto(randrange(FONT_SIZE - WIDTH/2, WIDTH/2 - FONT_SIZE), randrange(FONT_SIZE - HEIGHT/2, HEIGHT/2 - FONT_SIZE))

    turtle.write(letter, font=FONT)


    screen.ontimer(play, 2000)


letters = LETTERS

shuffle(letters)

letters = cycle(letters)

letter = next(letters)


colors = COLORS

shuffle(colors)

colors = cycle(colors)


hit = None


screen = Screen()

screen.setup(WIDTH, HEIGHT)


turtle = Turtle(visible=False)

turtle.penup()


for character in LETTERS:


    def hit_character(character=character):

        global hit


        hit = character


    screen.onkey(hit_character, character)


screen.listen()


play()


screen.mainloop()

確保在輸入之前單擊窗口以使其偵聽(tīng)輸入。


希望這會(huì)給你一些想法,如何在不使用while True:循環(huán)的情況下解決更復(fù)雜的問(wèn)題?;蛘咧辽傧蚰故救绾卧O(shè)置所有onkey()事件分配和處理程序,而無(wú)需為字母表中的每個(gè)字母重寫(xiě)相同的代碼......


查看完整回答
反對(duì) 回復(fù) 2021-11-16
  • 1 回答
  • 0 關(guān)注
  • 241 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)