Ich versuche, einen Feind für mein Spiel zu spawnen, und mir wurde gesagt, dass das Aktualisieren meiner Sprite-Gruppe das tun würde. Aus irgendeinem Grund spawnt der Feind überhaupt nicht. Keine Fehler oder irgendetwas erhalten. Hier ist meine Klasse:Nicht sicher, wie man Sprite anzeigt
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
Und hier ist, wo ich es und alles nennen:
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()
Wie kann ich Anzeigen/rufen Sie die Sprite? Ich entschuldige mich für meinen unordentlichen und ineffektiven Code. Ich bin neu in der Verwendung von Klassen und Sprites.
Weitere Informationen zu Sprites und Sprite-Gruppen können in [Programm Arcade Spiele] (http: //programarcadegames.com/index.php?chapter=introduction_to_sprites&lang=de#section_13) (das vorhergehende Kapitel handelt von Klassen). – skrx
Aber ich habe das im Code getan, und keine Sprites wurden erzeugt. Recht? – Qartx
Ihre Sprite-Klasse benötigt auch ein 'self.image' (ein pygame.Surface) und ein' self.rect' (ein pygame.Rect) Attribut um korrekt zu funktionieren. Ich habe das übersehen, weil dein Beispiel nicht vollständig war und ich es nicht testen konnte. Sie sollten den Code in Ihrer Frage bearbeiten und ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) bereitstellen. Und lies das Tutorial, das ich oben verlinkt habe, da es dir die Grundlagen beibringt. – skrx