Python 当pong到达屏幕边界时为玩家添加点数 def pong_碰撞(桨叶、乒乓球、大小): “球拍和乒乓球出界,科里森” 对于划桨中的划桨: 末端=[0,大小[0]-桨叶矩形宽度] #乒乓桨碰撞 如果桨叶矩形碰撞矩形(乒乓矩形): pong.vel.x=-pong.vel.x pong.music.sound.play(循环=0,最大时间=0,衰减=0) 如果(结束[1]

Python 当pong到达屏幕边界时为玩家添加点数 def pong_碰撞(桨叶、乒乓球、大小): “球拍和乒乓球出界,科里森” 对于划桨中的划桨: 末端=[0,大小[0]-桨叶矩形宽度] #乒乓桨碰撞 如果桨叶矩形碰撞矩形(乒乓矩形): pong.vel.x=-pong.vel.x pong.music.sound.play(循环=0,最大时间=0,衰减=0) 如果(结束[1],python,pygame,collision,pong,Python,Pygame,Collision,Pong,,因为你有桨中桨的:,如果球出界,在它迭代通过两个桨之前就会重置,我猜左边的桨是一组桨中的第一个 解决这一问题的一种方法是,当您确定球在界外时,迭代划桨,以确保对两个划桨进行评估。您是对的,这就是问题所在,现在太糟糕了,我必须添加额外的代码来解决它。如果只是额外的循环,代码应该是额外的1行,总共2个操作(两个if语句),如果使用elif,则可将其减少为1。 def pong_collision(paddles, pong, size): ''' paddles and pong out

,因为你有桨中桨的
,如果球出界,在它迭代通过两个桨之前就会重置,我猜左边的桨是一组桨中的第一个


解决这一问题的一种方法是,当您确定球在界外时,迭代划桨,以确保对两个划桨进行评估。

您是对的,这就是问题所在,现在太糟糕了,我必须添加额外的代码来解决它。如果只是额外的循环,代码应该是额外的1行,总共2个操作(两个if语句),如果使用elif,则可将其减少为1。
def pong_collision(paddles, pong, size):
    ''' paddles and pong out of bounds collison '''

    for paddle in paddles:
        ends = [0, size[0] - paddle.rect.width]

        # pong|paddle collision
        if paddle.rect.colliderect(pong.rect):
            pong.vel.x = -pong.vel.x
            pong.music.sound.play(loops=0, maxtime=0, fade_ms=0)


        if (ends[1] <= pong.rect.x or pong.rect.x <= ends[0]):
        # pong out of bounds collision

            if pong.rect.x <= ends[0]:
                # add point to right paddle if pong is < 0
                if paddle.side == 'right':
                    paddle.text.value += 1

            if pong.rect.x >= ends[1]:
                # add poitn to left paddle if pong is > screen size
                if paddle.side == 'left':
                    paddle.text.value += 1


            # freezes ball until user starts game
            pong.state = False

            # resets pong position to initial
            pong.rect.topleft = [
                (size[0]-pong.rect.width)/2,
                (size[1]-pong.rect.height)/2
            ]