2017-10-05 145 views
-6

我正在製作遊戲並使用pygame。我的目標是用箭頭鍵移動一個矩形。這如何實現?Pygame事件處理重要事件

+0

歡迎來到SO。請閱讀[如何問](https://stackoverflow.com/help/how-to-ask) –

回答

1

這個答案部分複製自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))