不知道如何显示精灵

时间:2017-06-13 22:25:24

标签: python-3.x class pygame sprite

我正试图为我的游戏产生一个敌人,我被告知更新我的精灵组会做到这一点。出于某种原因,敌人根本不会产卵。没有任何错误或任何错误。这是我的班级:

class Spawn(pygame.sprite.Sprite):
    def __init__(self,primaryx,primaryy):
        pygame.sprite.Sprite.__init__(self)
        global directionM
        self.directionM=directionM
        x1=random.randint(100,400)
        y1=random.randint(100,400)
        self.x1=x1
        self.y1=y1
        self.primaryx=primaryx
        self.primaryy=primaryy
    def AIPrototype(self):
        minionup=pygame.image.load("Alien.png").convert_alpha()
        miniondown=pygame.image.load("Aliendown.png").convert_alpha()
        minionleft=pygame.image.load("Alienleft.png").convert_alpha()
        minionright=pygame.image.load("Alienright.png").convert_alpha()
        global x,y,posx,posy
        seperate=random.randint(1,1000)
        screen.blit(self.directionM,(self.primaryx,self.primaryy))
        if seperate==2:
            self.primaryx=x+100
        if seperate==20:
            self.primaryx=x-100
        if seperate==150:
            self.primaryy=y+100
        if seperate==200:
            self.primaryy=y-100
        self.x1=self.primaryx
        self.y1=self.primaryy
        if self.x1<x:
            xspeed1=1
            slopex1=x-self.x1
        if self.x1>x:
            xspeed1=-1
            slopex1=self.x1-x
        if self.y1<y:
            yspeed1=1
            slopey1=y-self.y1
        if self.y1>y:
            yspeed1=-1
            slopey1=self.y1-y       
    #
        hypo1=((slopex1**2)+(slopey1**2))**0.5
        speedmark1=hypo1/1
        speedy1=slopey1/speedmark1
        speedx1=slopex1/speedmark1
        movex1=speedx1
        movey1=speedy1
        if self.x1<=640 and self.x1>=0:
            if self.x1>x:
                self.x1+=xspeed1*movex1
                if self.x1<x:
                    xspeed1=0
        if self.y1<=480 and self.x1>=0:
            if self.y1>y:
                self.y1+=yspeed1*movey1
                if self.y1<y:
                    yspeed1=0
        if self.x1<=640 and self.x1>=0:
            if self.x1<x:
                self.x1+=xspeed1*movex1
                if self.x1>x:
                    xspeed1=0
        if self.y1<=480 and self.x1>=0:
            if self.y1<y:
                self.y1+=yspeed1*movey1
                if self.y1>y:
                    yspeed1=0
    #
        if self.x1>640:
            self.x1=640
        if self.x1<0:
            self.x1=0
        if self.y1>480:
            self.y1=480
        if self.y1<0:
            self.y1=0
        if self.y1>=posy-20 and self.y1<=posy+20 and self.x1>=x-20 and self.x1<=x+20:
            Spawn.kill()
        self.primaryx=self.x1
        self.primaryy=self.y1

这就是我称之为的所有内容:

spritegroup = pygame.sprite.Group()
spawn = Spawn(600,200)
spritegroup.add(spawn)
clock = pygame.time.Clock() 
keepGoing = True        

try:
    while keepGoing:
        clock.tick(60) 
        screen.fill(THECOLORS['red'])
        char()#start
        x+1
        posxlist.append(x)
        posylist.append(y)
        spritegroup.update()
        spritegroup.draw(screen)
        pygame.display.flip()

如何显示/调用精灵?我为我凌乱而无效的代码道歉。我是新手使用课程和精灵。

1 个答案:

答案 0 :(得分:0)

调用spritegroup.update()不会产生新的精灵,它会调用所有包含的精灵的update方法。由于您的Spawn sprite子类没有update方法,spritegroup.update()实际上对您的程序没有任何影响。

你可以通过创建一个实例并将它添加到sprite组来生成新的sprite,就像你在这里一样:

spawn = Spawn(600, 200)
spritegroup.add(spawn)