我正试图为我的游戏产生一个敌人,我被告知更新我的精灵组会做到这一点。出于某种原因,敌人根本不会产卵。没有任何错误或任何错误。这是我的班级:
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()
如何显示/调用精灵?我为我凌乱而无效的代码道歉。我是新手使用课程和精灵。
答案 0 :(得分:0)
调用spritegroup.update()
不会产生新的精灵,它会调用所有包含的精灵的update
方法。由于您的Spawn
sprite子类没有update
方法,spritegroup.update()
实际上对您的程序没有任何影响。
你可以通过创建一个实例并将它添加到sprite组来生成新的sprite,就像你在这里一样:
spawn = Spawn(600, 200)
spritegroup.add(spawn)