2014-01-18 41 views
1

我只是試圖讓圖像在使用WASD的pygame中向左,向右,向上和向下移動。如果我只從左向右移動或僅向上移動和向下移動,它會正常工作。但是當我從左右移動到上移或下移(或其他方式)時,圖像開始向對角線移動。有人知道爲什麼pygame中的圖像是對角線移動而不是左,右,上和下

使用python 3.3.0的Im。 Pygame 1.9.2

import pygame, sys 
from pygame.locals import * 

pygame.init() 

screen=pygame.display.set_mode((640,480)) 
image = pygame.image.load('Player.png') 

x,y=0,0 
movex, movey=0,0 

while True: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
     if event.type==KEYDOWN: 
      if event.key==K_d: 
       movex=+10 
      elif event.key==K_a: 
       movex=-10 
      elif event.key==K_s: 
       movey=+10 
      elif event.key==K_w: 
       movey=-10 

      x+=movex 
      y+=movey 
screen.fill((200, 200, 200)) 
screen.blit(image, (x,y)) 
pygame.display.flip() 

回答

0

您應該重置精靈在迴路中的速度。向下移動movexmovey

x,y=0,0 

while True: 
    movex, movey=0,0 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
     if event.type==KEYDOWN: 
      if event.key==K_d: 
       movex=+10 
      elif event.key==K_a: 
       movex=-10 
      elif event.key==K_s: 
       movey=+10 
      elif event.key==K_w: 
       movey=-10 

      x+=movex 
      y+=movey 

現在,當釋放A並按下W時,它將向上移動而不是對角移動。

+0

問題解決!謝謝! – user3210610

0

你走在正確的道路上,卻忽視了一件事。如果我按右鍵,movex = 10吧?那麼如果我按下上鍵,movey = 10,但movex = 10仍然是因爲你沒有擺脫它而改變了它的價值。因此,在您上下塊(如果/ elif的/人)作出肯定地說

Movex = 0 

而在你的左邊和右邊塊

Movey = 0 

而且我敢打賭,你會繼續前進後,你放手按鈕的權利?要解決這個問題,請將KEYDOWN塊與所有控件一起復制,並將KEYDOWN更改爲KEYUP。然後,在你所有的字母塊的,如:if event.key == K_aif it is w or s得到它擺脫了代碼,並添加

Movey = 0 

而且相對來說a和d:

Movex = 0 

希望這有助於!

相關問題