2016-11-28 54 views
0

我想創建一個函數,如果按下某個鍵,變量就會改變。這將被放入一個在屏幕上移動精靈的類。當釋放按鍵時,while循環被打破。然而,沒有任何反應。 while循環正在運行,我沒有錯誤。有誰知道爲什麼會發生這種情況?我不確定我是否正確使用模塊「pygame.key.get_pressed()」。python's'pygame.key.get_pressed()'模塊沒有識別按鍵

import pygame 
from pygame.locals import * 
def move(): 
    for event in pygame.event.get(): 
      if event.type == QUIT: 
       pygame.QUIT() 
       sys.exit() 
    while True: 
     pressed = pygame.key.get_pressed() 
     if pressed[pygame.K_UP]: 
      print("something happens") 
     #runs this, but when up arrow key is pressed does nothing 
     if event.type == KEYUP: 
      False 

screen = pygame.display.set_mode((512,384)) 
move()   
pygame.display.update() 
+0

'get_pressed()'如果你不執行'pygame.event.get(不工作)' - 但你執行'pygame.event.get( )'只有一次。 – furas

回答

1

get_pressed()返回列表更關鍵的名字,但這個名單是由更新pygame.event.get()和其他事件功能,所以你必須始終執行pygame.event.get()。這就是爲什麼我們這樣做是在while-loop

import pygame 

pygame.init() 
screen = pygame.display.set_mode((512,384)) 

while True: 

    # get events and (somewhere in background) update list 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      sys.exit() 

    # get current list. 
    pressed = pygame.key.get_pressed() 
    if pressed[pygame.K_UP]: 
     print("UP") 
1

你可以做
`

def move(): 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.QUIT() 
      sys.exit() 

     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_UP: 
       print("up pressed") 

      # etc. 

     if event.type == pygame.KEYUP: 
      if event.key == pygame.K_UP: 
       print("up released") 

      # etc. 

` 因爲你可以去約按鍵信息pygame key docs

+0

這似乎沒有產生不同的結果 - 仍然沒有印刷聲明。但是,我沒有得到一個錯誤? – Tyler

+0

我已經刪除了我的while循環,它現在可以工作。謝謝! – Tyler

+0

沒問題,樂於幫忙! –