簡體   English   中英

Pygame-嘗試在按下某個鍵時而不是在按下某個鍵時切換BOOL

[英]Pygame - Trying to Toggle a BOOL when a key is pressed, not while pressed

我試圖使BOOL在按下某個鍵時不切換,因為如果按住該鍵,它會使每幀切換開和關(真和假)。

這是我的小撥動代碼

if key[pygame.K_z] and robsHouse.pressed == False:
        robsHouse.pressed = True
    elif key[pygame.K_z] and robsHouse.pressed == True:
        robsHouse.pressed = False

任何想法都會有所幫助,謝謝。

您需要打開KEYDOWNKEYUP事件。

因此,一旦按下按鈕,此布爾值就會改變,對嗎? 只需使用KEYUP事件並反轉變量即可:

if event == KEYUP:
    if event.key == DESIRED_KEY:
        boolVar = not boolVar

您的代碼在按住鍵的同時在每一幀之間切換robsHouse.pressed的原因是因為在按住鍵的每次循環迭代中都會滿足key[pygame.K_z]條件,然后次級條件會導致彼此在交替幀上得到滿足。

在不更改檢索關鍵數據的方式的情況下,您可以執行以下操作:

if key[pygame.K_z]:
    robsHouse.pressed = True
else:
    robsHouse.pressed = False

另一種方法是從pygame的事件模塊中查找KEYUPKEYDOWN事件,而不是從密鑰模塊中獲取密鑰數據。 可以這樣完成:

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_z:
            robsHouse.pressed = True
    elif event.type == pygame.KEYUP:
        if event.key == pygame.K_z:
            robsHouse.pressed = False

就個人而言,在大多數情況下,我更喜歡第二種方法。 無論如何,您都將需要處理pygame的事件模塊中的事件,否則隊列將滿,並且您的程序將變得無響應(在pygame事件模塊文檔中已提到)。

暫無
暫無

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

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