确定循环中的第一次出现

时间:2018-05-09 19:00:02

标签: python python-3.x pygame

我对Python很陌生,但我环顾四周,没有看到任何与我想要做的事情相符的事情。

我正在使用PyGame在三个物体(球,方形A,方形B)之间进行碰撞检测。我想要做的是,如果球击中方形B,则会出现X,但前提是它已击中方形A.因为这是一个连续发生的循环,我不能简单地将ballAcollide设置为true,因为它会立即重置。

我目前有一些有用的东西,但我确信这是一个丑陋的解决方法,而且还有更好的方法。以下是相关代码段:

def fastball(ball, squareA, squareB):
    # This needs to be improved
    if ball.rect.colliderect(squareA.rect):
        # do unrelated
        global firsthit
        firsthit = False
    elif ball.rect.colliderect(squareB.rect):
        try:
            if not firsthit:
                # do X
        except NameError:
            # do nothing

1 个答案:

答案 0 :(得分:1)

根据PatrickArtner的建议回答:

def fastball2(ball, squareA, squareB, list):
    if ball.rect.colliderect(squareA.rect):
        if len(list) == 0:
            list.append('A')
        # do unrelated
    elif ball.rect.colliderect(squareB.rect) and len(list) > 0:
        # do x
然后,如果满足某些条件,则在循环中的不同点刷新

列表。感谢帮助!