2017-07-02 47 views
-2

我想在pygame中製作一個簡單的遊戲,我用WASD鍵移動字符(一個正方形)。我已經有所成就,但運動不順暢,當我移動我的鼠標時,角色拒絕移動。當我的鼠標移動時,我的Pygame腳本讓我在屏幕上的字符暫停

我認爲它是事做我的for循環

for event in pygame.event.get(): 
     if event.type is pygame.QUIT: 
      pygame.quit() 
      sys.exit() 

我知道它是停留在循環,同時有輸入,但我不知道如何解決它沒有不能夠關閉該程序。

下面是遊戲主循環:

while launchGame: 
    for event in pygame.event.get(): 
     if event.type is pygame.QUIT: 
      pygame.quit() 
      sys.exit() 
    screen.fill(WHITE) 
    player.draw() 
    player.move() 
    pygame.display.flip() 

這裏是我的舉動腳本是否有幫助:

def move(self): 
    if event.type == pygame.KEYDOWN: 
     if pygame.key.get_pressed()[K_w]: 
      self.y -= self.speed 
     if pygame.key.get_pressed()[K_s]: 
      self.y += self.speed 
     if pygame.key.get_pressed()[K_a]: 
      self.x -= self.speed 
     if pygame.key.get_pressed()[K_d]: 
      self.x += self.speed 

我怎樣才能解決這個問題。

回答

0

它是一個簡單的錯字。在第二行,你有if event.type is pygame.QUIT:

而且應該是if event.type == pygame.QUIT:

如果沒有工作,請嘗試:

while RUNNING: 
    for event in pygame.event.get(): 
     if event.type is pygame.QUIT: 
      RUNNING = False; 
    screen.fill(WHITE) 
    player.draw() 
    player.move() 
    pygame.display.flip() 

而且在命令行中運行程序,看它是否是一個問題pycharm

+0

它沒有什麼不同,它的效果相同。 – Michael

+0

你有錯誤嗎?你在用什麼IDE?也許你可以嘗試使用 '而RUNNING'和代替 'pygame.quit()'' sys.exit()' 做'RUNNING = FALSE' 如果這都不能工作。發佈完整的代碼或github回購,我會檢查出來 –

+0

沒有錯誤,我使用pycharm,並且我嘗試了RUNNING = False,但它仍然無法工作。 – Michael

0

我發現了這個問題。我不需要,如果event.type == pygame.KEYDOWN:如果我使用pygame.key.get_pressed(),因爲它不是一個事件函數。

謝謝,但不,謝謝我猜xD

相關問題