2015-12-26 95 views
0

我有这样的循环运动的蛇一样的游戏游戏循环事件监听

运动
while not gameExit: 
    for event in pygame.event.get(): 
     if event.type == pygame.KEYDOWN: 
     #Arrow keys move snake head. 
      if event.key == pygame.K_LEFT: 
       lead_y_change=0 
       lead_x_change -= 10 
      if event.key == pygame.K_RIGHT: 
       lead_y_change=0 
       lead_x_change += 10 
      if event.key == pygame.K_UP: 
       lead_x_change=0 
       lead_y_change -= 10 
      if event.key == pygame.K_DOWN: 
       lead_x_change=0 
       lead_y_change += 10 

     lead_x += lead_x_change 
     lead_y += lead_y_change 

     gameDisplay.fill(white) 
     pygame.draw.rect(gameDisplay, black, [lead_x, lead_y, 10, 10]) 
     pygame.display.update() 

应该发生什么:

当我按下任何箭头键的循环应该跑过去,在更新动作和小黑色矩形应该飞过屏幕再也看不到。

会发生什么:

矩形在关键钥匙后向上移动10下来,然后10。然后按20键和20键,等等。 。 。它似乎也对鼠标运动有反应。我不知道为什么。我使用python 3.4和pygame 1.9。

这是怎么回事?我如何纠正它以获得预期的结果?

感谢您的帮助!

+2

如何减少以'lead_x + = lead_x_change'开头的行的缩进?现在只有在事件发生时才会发送到这些行。 –

+0

你能提供一个可运行的[MCVE](http://stackoverflow.com/help/mcve)并准确解释你想要程序做什么吗?你想在单次按键后以恒定速率移动盒子?或者是其他东西? – TigerhawkT3

+0

Ohhhh,我现在看到了缩进问题。非常感谢! – az89

回答

1

[张贴作为一个答案所以这个问题能够得到妥善完成]

看起来开始lead_x += lead_x_change线需要被outdented一个级别。现在只有在事件发生时才会发送到这些行。