我在代码中碰壁,试图在另一个小组和班级中让另一个精灵跟随另一个精灵。我尝试过将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()