![](/img/trans.png)
[英]Pygame holding key down, keys = pygame.key.get_pressed()
[英]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.