簡體   English   中英

pygame鍵按下

[英]Pygame key pressed down

pygame的以下循環中,我進行了以下循環來檢查按鍵。 如何使用pygame檢查是否仍在按該鍵以及該操作將重復執行一次的頻率? 例如,如果我想每秒鍾按下一次向下鍵-它會重復執行print("something")命令可變的次數。

for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_DOWN:
                print("something")

您可以在鍵盤按下處理程序中將布爾值設置為true,然后在新的鍵盤按下處理程序中將布爾值設置為false。 就像是:

for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_DOWN:
                down_pressed = True
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_DOWN:
                down_pressed = False

if down_pressed:
  print("Down is pressed")

然后,您可以在游戲邏輯中使用該布爾值,例如移動角色。 if down_pressed: move_character_down()

有函數pygame.key.get_pressed() ,它提供所有鍵的布爾值列表。

你可以檢查一下

 pressed = pygame.key.get_pressed()

 if pressed[pygame.K_DOWN]:
     print("Down is pressed")

但是...可能您必須調用pygame.event.get()才能從此函數獲取實際值。

還有... PyGame doc:

在兩個通話之間可以完全忽略快速按下的鍵

並且...關於此列表,SO上有一個問題,因為它沒有為兩個以上的鍵保留信息。

所以我更喜歡@will解決方案:)

-

您可以使用

clock = pygame.time.Clock()

while True:

    print("Hello World")

    clock.tick(5)

每秒獲取此文本5次-但while True其他函數也將每秒調用5次。 您將獲得5 FPS。

您可以使用pygame.time.get_ticks()來獲取時間(以毫秒為單位),並使用它僅控制print()

next_print = pygame.time.get_ticks() + 1000/5 # 1000ms = 1s

while True:

    current_time = pygame.time.get_ticks()

    if current_time >= next_print:

         print("Hello World")

         next_print += 1000/5 

暫無
暫無

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

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