Python 确定循环中的第一次出现

Python 确定循环中的第一次出现,python,python-3.x,pygame,Python,Python 3.x,Pygame,我对Python非常陌生,但我环顾四周,没有看到任何与我正在尝试的工作相匹配的东西 我正在使用PyGame检测三个对象(一个球、一个正方形a、一个正方形B)之间的碰撞。我想做的是,如果球撞到了正方形B,那么X发生,但前提是它之前撞到了正方形A。因为这是在一个连续发生的循环中,所以我不能简单地将ballAcollide设置为true,因为它会立即重置 我目前有一些有效的方法,但我确信这是一个丑陋的解决方法,有更好的方法。下面是有问题的代码片段: def fastball(ball, squareA

我对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

根据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

如果满足某些条件,则在循环中的不同点刷新列表。谢谢你的帮助

为什么球上没有写着hitAfirst的旗子?此外,如果球击中B且A未击中,则代码看起来像是执行X,而不是仅当A先击中为什么没有
ball
A大小的三角形(2)这就得到了附加的点击量,你检查前/后的a/b,看看它是否以正确的顺序击中了他们?@PatrickArtner我编辑了我的问题,包括我根据你的建议写的内容(或者至少是我认为你的建议!)添加它作为自我回答,你需要等待48小时,然后才能接受。很好,它起了作用。