多个 类 handlin - Pygame

multiple classes handlin - Pygame

我正在创建一个我使用多个文件的游戏,下面的代码是我有精灵的文件,2 classes Player() 代表一个水坑,和一个球 Ball()

所以我想以某种方式(我不知道也许从玩家 class 继承但不能用它做任何事情)控制我在 Player() 在 [=16] 创建的水坑的边缘=]以便当球位于 Player() 的水坑边缘之间并且当球为:>= 560 像素

时弹跳
class Player(pg.sprite.Sprite):

    def __init__(self):
        pg.sprite.Sprite.__init__(self)
        self.image = pg.Surface((130,20))
        self.image.fill(black)
        self.rect = self.image.get_rect()
        self.rect.centerx = width/2
        self.rect.y = 560

    def update(self):
        self.vx = 0
        keys = pg.key.get_pressed()

        if keys[pg.K_LEFT]:
            self.vx = -15
        if keys[pg.K_RIGHT]:
            self.vx = 15
        if self.rect.left <= 0:
            self.rect.left = 0
        if self.rect.right >= width:
            self.rect.right = width

        self.rect.x += self.vx


class Ball(pg.sprite.Sprite):

    def __init__(self):
        pg.sprite.Sprite.__init__(self)
        self.image = pg.Surface((10,10))
        self.image.fill(black)
        self.rect = self.image.get_rect()
        self.rect.centerx = width / 2
        self.rect.centery = height / 2
        self.vx = -4
        self.vy = 10

    def update(self):
        if self.rect.y >= 560:# and... how do i declare the puddle here???
            self.vy = -self.vy
        if self.rect.top <= 0:
            self.vy = -self.vy
        if self.rect.right <= 0:
            self.vx = -self.vx
        if self.rect.left >= width:
            self.vx = -self.vx

        self.rect.x += self.vx
        self.rect.y += self.vy

您可以使用 paddle.rect.colliderect(ball.rect) 来测试球和桨之间的碰撞。不过之后您需要将球移出碰撞区域。