如果在pygame中声明

时间:2013-06-06 21:46:06

标签: python loops if-statement pygame

我正在写一个pygame你基本上要躲闪星星。它有一个商店,你可以买一个力场,但我只想要力场工作3次,然后当你购买有效的力场force_field = True时离开,但我碰撞碰撞部分有问题self.force_count -=1问题是这会循环每一秒钟,因为碰撞发生了一秒钟,它会循环三次然后你输了

以下是我的If Statments:

    star_col = self.player_r.colliderect(self.star_r)or self.player_r.colliderect(self.star2_r)or self.player_r.colliderect(self.star3_r)

    if self.force_field == True and star_col == True:
        self.force_count+=1
        print "ship hit"
        if self.force_count == 3:
            self.force_field = False


    if star_col == True and self.force_field == False:
        self.force_field = 0
        self.state = 0
        if self.money > 0:
            self.money = self.money - 25

打印只是用于测试,但是当我与一个星星碰撞时,它会打印3次,然后通过屏幕进入游戏,而不是只计数到一个然后进入agian

所以我想知道我怎么能做到这一点,只需在瞬间加上3并结束

如果你仔细阅读了所有这些,那么请帮助我!

-ChristianCareaga

1 个答案:

答案 0 :(得分:3)

一种选择是,当它击中船时让你的星星消失。也许爆炸或其他东西:)

否则,如果您已经击中此星,则可以将带有bool标记的星标记为“碰撞”以请求。但是这样一来,即使你的船已经“离开”了这颗恒星再次遇到它,你也只能击中它一次。