2014-01-18 5 views
1

WASD를 사용하여 파이 게임에서 왼쪽, 오른쪽, 위아래로 이미지를 이동하려고하는 것입니다. 왼쪽에서 오른쪽으로 또는 단지 위아래로 움직이는 것으로 시작하면 잘 작동합니다. 그러나 내가 왼쪽에서 오른쪽으로 움직이거나 위아래로 움직일 때 (또는 다른 방향으로 움직일 때) 이미지가 대각선으로 움직이기 시작합니다. 왜 그런지 알아?파이 게임에있는 이미지가 왼쪽, 오른쪽, 위, 아래 대신에 대각선으로 움직입니다.

나는 python 3.3.0을 사용합니다. 파이 게임 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 

, 당신은 눌러 W를 출시, 그것은 대각선으로 대신 이동합니다.

+0

문제가 해결되었습니다. 감사! – user3210610

0

당신은 올바른 길을 가고 있지만 한 가지를 간과하고 있습니다. 오른쪽 키를 누르면 movex = 10이 맞습니까? 그럼 내가 위로 키를 누르면 movey = 10이지만 movex = 10은 여전히 ​​값을 변경하지 않았기 때문에 사라집니다. 그래서 당신의 위로와 블록 아래로 (/의 elif이/다른 경우) 있는지 확인

Movex = 0 

말을하고 왼쪽과 오른쪽 블록

Movey = 0 

그리고 난 당신이 가자 후 이동 계속됩니다 내기에 버튼의 오른쪽 너무? 이 문제를 해결하려면 KEYDOWN 블록을 모든 컨트롤과 함께 복사하고 KEYDOWN을 KEYUP으로 변경하십시오. 그런 다음처럼 문자 블록의 모든 지역 : if event.key == K_a, if it is w or s 그 안에 코드를 제거하고 A와 D에 대한

Movey = 0 

그리고 반대를 추가

Movex = 0 

희망이 도움이!

관련 문제