2016-09-28 42 views
0

以下是我用於使用矩形移動遊戲的代碼。但每次按下上下鍵時,都會左右移動。如果你可以在你的答案中粘貼正確的版本。謝謝!!!!我無法上下移動我的代碼

PS的#是註釋

#to start pygame 
import pygame 

pygame.init() 

#game window 
gameWindow = pygame.display.set_mode((1000, 600)) 
pygame.display.set_caption("SimpleShooter") 

#moving character 
class PlayerActive(): 
    def __init__(self): 

     self.image = pygame.Surface((50, 50)) 
     self.image.fill((0, 0, 255)) 
     self.rect = self.image.get_rect() 

     self.rect.x = 50 
     self.rect.y = 50 

     self.speed = 1 

    def move(self, xdir, ydir): 
     self.rect.x += xdir*self.speed 
     self.rect.x += ydir*self.speed 

player = PlayerActive() 

#starting and ending the game 
gameActive = True 
while gameActive: 
    for event in pygame.event.get(): 
     #print event (optional) 
     if event.type == pygame.QUIT: 
      gameActive = False 

    #moving character 
    activekey = pygame.key.get_pressed() 

    if activekey[pygame.K_RIGHT]: 
     player.move(1, 0) 
    if activekey[pygame.K_LEFT]: 
     player.move(-1, 0) 
    if activekey[pygame.K_UP]: 
     player.move(0, -1) 
    if activekey[pygame.K_DOWN]: 
     player.move(0, 1) 

    #change the main screen 
    gameWindow.fill((255, 255, 255)) 
    #place moving character 
    gameWindow.blit(player.image, player.rect) 
    #how to draw rectangles 
    pygame.draw.rect(gameWindow, (0, 0, 0), (50, 195, 50, 50), 5) 
    #use to show shapes on gameWindow 
    pygame.display.update() 

#quit game 
pygame.quit() 
quit() 

回答

1

以下:

def move(self, xdir, ydir): 
    self.rect.x += xdir*self.speed 
    self.rect.x += ydir*self.speed 

應改爲:

def move(self, xdir, ydir): 
    self.rect.x += xdir*self.speed 
    self.rect.y += ydir*self.speed 

你總是遞增x不管是否變化是在xdirydir。對於xdir,變更rect.yydirrect.x