簡體   English   中英

Pygame 事件處理關鍵事件

[英]Pygame event handling key events

我正在制作游戲並使用 pygame。 我的目標是用箭頭鍵移動一個矩形。 如何做到這一點?

這個答案部分復制自programarcadegames.com ,如果你想用 pygame 制作游戲,你應該看看課程。

[假設你已經有一個主循環,如果沒有,從頭開始上面提到的課程:] 在主循環之外,設置 x 和 y 位置的初始位置和移動速度。

x_speed = 0
y_speed = 0
x_pos = 10
y_pos = 10

現在您需要(或者更確切地說,應該已經擁有)主循環內的事件循環來處理可能發生的所有 pygame 事件。 請注意,這應該是主循環中發生的第一件事。

在事件循環中,檢查 KEYDOWN 事件(擊鍵)和 KEYUP 事件(keyrelease)。

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        # As long as an arrow key is held down, the respective speed is set to 3 (or minus 3)
        if event.key == pygame.K_LEFT:
            x_speed = -3
        elif event.key == pygame.K_RIGHT:
            x_speed = 3
        elif event.key == pygame.K_UP:
            y_speed = -3
        elif event.key == pygame.K_DOWN:
            y_speed = 3
    elif event.type == pygame.KEYUP:
        # As soon as an arrow key is released, reset the respective speed to 0
        if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
            x_speed = 0
        elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
            y_speed = 0

現在調整將速度添加到您的位置。 如果沒有按住箭頭鍵,則事件循環中的速度設置為 0,因此您的位置不會受到影響。 然后用您剛剛修改的位置繪制矩形。

x_pos = x_pos + x_speed
y_pos = y_pos + y_speed

pygame.draw.rect(yourdisplay, yourcolor, (x_pos, y_pos, yourwidth, yourheight))

暫無
暫無

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

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