在Pygame的另一个Sprite类中引用Sprite坐标

时间:2018-07-30 21:13:40

标签: python pygame sprite

我在代码中碰壁,试图在另一个小组和班级中让另一个精灵跟随另一个精灵。我尝试过将x,y放入两个变量中,但是它给了我可怕的“在定义之前调用”或任何错误提示。有没有一种方法可以获取变量并将其放在“跟随者”精灵类内部?如果我在另一个sprites中有一个x,y,我知道如何使它们彼此跟随,但这是我在pygame中对Sprites的首次尝试。这是我的代码,不包括初始化中的图像文件/显示变量等。 (忽略崩溃功能,不知道它是怎么进入的)

class playerShip(pg.sprite.Sprite):
    #playership sprite
    def __init__(self):
        pg.sprite.Sprite.__init__(selfP)
        self.image=spaceship
        self.rect=self.image.get_rect()
        self.rect.center=(displayWidth/2,displayHeight/2)
    def update(self):
        keyPress=pg.key.get_pressed()
        if (self.rect.right >= displayWidth):
            yR=0
        elif not (self.rect.right >= displayWidth):
            yR=5
        if (self.rect.left <= 0):
            yL=0
        elif not (self.rect.left <= 0):
            yL=-5
        if (self.rect.top <= 0):
            yT=0
        elif not (self.rect.top <= 0):
            yT=-5
        if (self.rect.bottom >= displayHeight):
            yB=0
        elif not (self.rect.bottom >= displayHeight):
            yB=5
        if keyPress[pg.K_DOWN]:
            self.rect.y += yB
        if keyPress[pg.K_UP]:
            self.rect.y += yT
        if keyPress[pg.K_RIGHT]:
            self.rect.x += yR
        if keyPress[pg.K_LEFT]:
            self.rect.x += yL
class enemyShip(pg.sprite.Sprite):
    #enemyship sprite
    def __init__(self):
        pg.sprite.Sprite.__init__(self)
        self.image=enemCRCeasyB
        self.rect=self.image.get_rect()
        self.rect.center=(random.randrange(displayHeight-self.rect.height),
                          random.randrange(displayWidth-self.rect.width))

def crash():
    message_display_end('Fail',115)
    #checkpoint?
def gameLoop():
    gameExit=False
    initVar()
    all_sprites=pg.sprite.Group()
    enemyFac=pg.sprite.Group()
    neutralFac=pg.sprite.Group()
    allyFac=pg.sprite.Group()
    player=playerShip()
    allyFac.add(player)
    allyFac.update()
    for i in range(8):
        Eship=enemyShip()
        enemyFac.add(Eship)
    while not gameExit:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                gameExit = True
                pg.quit()
                sys.exit()
        clock.tick(60)
        #update
        all_sprites.update()
        enemyFac.update()
        neutralFac.update()
        allyFac.update()
        #draw
        gamedisplay.fill(black)
        enemyFac.draw(gamedisplay)
        all_sprites.draw(gamedisplay)

        #dsplyupdate
        pg.display.update()
gameLoop()
pg.quit()

0 个答案:

没有答案