2017-06-17 76 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()功能是什么)

相关问题