2017-06-17 89 views
-2

我不明白爲什麼當我按下向上鍵時,矩形不會改變它的y位置。我沒有得到任何錯誤,一切都顯現出來。Pygame,爲什麼我的矩形不能移動

進口pygame的 從pygame.locals導入*

類SnekHead(對象):

def __init__(self, screensize): 

    self.screensize = screensize 

    self.center_x = int(screensize[0]*0.5) 
    self.center_y = int(screensize[1]*0.5) 

    self.width = 50 
    self.height = 50 

    self.rect = pygame.Rect(self.center_x-25, self.center_y-50, self.width, self.height) 

    self.color = (100, 255, 100) 

    self.speed = 10 

    self.direction = 0 

def update(self): 

    self.center_y += self.direction*self.speed 



def render(self, screen): 
    pygame.draw.rect(screen, self.color, self.rect, 0) 

DEF run_game(): pygame.init()

screensize = (640, 480) 


background_image = pygame.image.load('Sky_back_layer.png') 

screen = pygame.display.set_mode(screensize) 

clock = pygame.time.Clock() 

snake = SnekHead(screensize) 

running = True 

while running: 

    clock.tick(64) 

    for event in pygame.event.get(): 

     if event.type == KEYDOWN: 
      if event.key == K_ESCAPE: 
       running = False 

      elif event.key == K_UP: 
       snake.direction = -1 

    snake.update() 

    screen.blit(background_image, (0, 0)) 

    snake.render(screen) 

    pygame.display.flip() 

pygame.quit() 

run_game( )

+0

嘗試重新發布代碼,以便它更容易閱讀。首先發布代碼,然後突出顯示所有代碼,然後按代碼按鈕。它會更好地格式化。 –

回答

0

問問你自己這個問題ñ。按下鍵後self.rect的值是多少? (您遞減snake.direction按下按鍵時,則進行更新snake.center_y,但snake.rect保持不變,這樣做的矩形的位置,因爲這是要傳遞到pygame.draw.rect()render()功能是什麼)