2016-02-09 30 views
0
player_1 = pygame.image.load(player1) 
    # 

    def player1(x,y): 
     window.blit(player_1, (x,y)) 

    x = (110) 
    y = (150) 
    x_change = 0 
    y_change = 0 
    player1_speed = 0 

    while not gameover: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       gameover = True 

      if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_LEFT: 
       x_change = -5 
       elif event.key == pygame.K_RIGHT: 
        x_change = 5 

       elif event.key == pygame.K_UP: 
        y_change = -5 

       elif event.key == pygame.K_DOWN: 
       y_change = 5 

     if event.type == pygame.KEYUP: 
     if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT or event.key == pygame.K_UP or event.key == pygame.K_DOWN: 
      x_change = 0 


     x += x_change 
     y += y_change   

     player1(x,y) 
     pygame.display.update() 
     fpsClock.tick(60) 
     screen.blit(background_surface, (0,0)) 

# update display 
pygame.display.flip() 

您好,我有一个程序,其中unfortunatley移动对象时,它移动左向右&完美,但上下似乎没有停下来。还有一个屏幕闪烁的问题。对不起,长期的问题,但任何帮助,将不胜感激。谢谢pygame的简单的问题,对象移动和显示

+1

您只能在键盘上重置'x_change' ... – StephenTG

+0

感谢您的回复,我将如何修复我应该放在哪里,屏幕闪烁的任何原因,我认为这是与screen.blit( background_surface,(0,0)) – rogersinclair

回答

1

1.据我看你只是blitting player1。 player2在哪里?

2.您在代码中缺少一些缩进。我想正确的形式是:

if event.type == pygame.KEYUP: 
    if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT or event.key == pygame.K_UP or event.key == pygame.K_DOWN: 
     x_change = 0 

那么你只设置x_change为0。我猜你想y_change设置为0,以及...即使你必须让你的查询通过分组垂直和水平键更具体。

像:

if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: 
    x_change = 0 
if event.key == pygame.K_UP or event.key == pygame.K_DOWN: 
    y_change = 0 

4.你叫更新屏幕之后的块传输方法。移动screen.blit(..)之后pygame.display.update()会解决一些事情......

5.翻盖方法是你的循环之外。只有当你的游戏循环中断时才会调用它!

小提示:复制粘贴是一个非常糟糕的做法。尝试自己做,而不是!

+0

嗨,谢谢你的回复,在screen.blit ...之后放置pygame.displau.update()后,玩家似乎根本没有出现。 – rogersinclair

+0

也许这是因为你blitting他到窗口,甚至没有提到你的代码^^ –

+0

抱歉不知道你的意思,player_1 = pygame.image.load(player1) 这是错的吗? def player1(x,y): window.blit(player_1,(x,y)) – rogersinclair