Pygame bug增加了

时间:2016-11-03 00:09:14

标签: python pygame

这是我的代码Python与Pygame模块的一部分。

gravity = 0.06   
play = 1
while play:
    touch = 0
    while touch == 0:  
        for event in pygame.event.get():
           if event.type == QUIT:
                continuer = 0
            if (event.type == MOUSEBUTTONDOWN) and (event.button == 1): 
                y_flappy = y_flappy - 50            
            if (event.type == KEYDOWN) and (event.key == K_UP): 
                y_flappy = y_flappy - 50                 
        y_flappy = y_flappy+gravity  

        fenetre.blit(background,(0,0))    
        fenetre.blit(ground,(0,400))
        fenetre.blit(flappy,(x_flappy,y_flappy))
        pygame.display.flip()
        if y_flappy > 400:
            touch = touch + 1 

但是当y_flappy> 400,触摸不会增加。

2 个答案:

答案 0 :(得分:1)

您是否尝试过在最后添加print("y_flappy: %f touch: %f" % (y_flappy, touch))(与if y_flappy > 400:相同的缩进级别)以查看会发生什么?

touch变量不会大于1,因为那样你就离开了while循环并重新初始化touch = 0

<强>更新

如果仍然无效,请从这样的最小脚本开始:

y_flappy = 0
gravity = 0.06
play = 1
while play:
    print("Next iteration, reset touch.")
    touch = 0
    print("y_flappy: %f  touch: %f" % (y_flappy, touch))
    while touch == 0:
        y_flappy = y_flappy+gravity

        if y_flappy > 400:
            touch = touch + 1
        print("y_flappy: %f  touch: %f" % (y_flappy, touch))

仔细检查每个缩进。您应该得到以下输出:

Next iteration, reset touch.
y_flappy: 0.000000  touch: 0.000000
y_flappy: 0.060000  touch: 0.000000
y_flappy: 0.120000  touch: 0.000000
y_flappy: 0.180000  touch: 0.000000
...
y_flappy: 399.960000  touch: 0.000000
y_flappy: 400.020000  touch: 1.000000
Next iteration, reset touch.
y_flappy: 400.020000  touch: 0.000000
y_flappy: 400.080000  touch: 1.000000
Next iteration, reset touch.
y_flappy: 400.080000  touch: 0.000000
...

如果这样做,请逐行扩展您的脚本以查看它何时失败。

答案 1 :(得分:0)

我试过这个。例如,当y_flappy为425.3时,触摸为0(其中应为1或更多)。

是的我知道触摸不会超过1,我可以插入休息动作但对我来说更简单。