2016-11-11 4 views
1

Hallo Leute, ich fragte mich, ob ich ein bisschen Hilfe dabei bekommen könnte. Ich lerne Klassen in Python und versuche, es in mein aktuelles Projekt für Uni zu integrieren.Pygame | Bliteled Bild springt über den ganzen Ort springt

So unten ist der Code für die Klasse als-auch einige von ihm verwendeten Variablen

class Asteroid(): 
    def __init__(self, char, startX, startY): 
     self.char = char 
     self.startX = startX 
     self.startY = startY 
     self.drawChar() 

    def drawChar (self): 
     self.space = pygame.image.load (self.char) 
     self.space = self.space.convert_alpha() 
     gameDisplay.blit(self.space, 
      (random.randint(0,display_width), 
      random.randint(0,display_height))) 

Grundsätzlich ist dieser Klasse alle Daten enthält ich brauche ‚Asteroids‘ laden in.

unten ist Teil des Haupt Code, in dem die Klasse tatsächlich verwendet wird:

Asteroid(random.choice(asteroid),200,300) 

Auch unten ist der Code für die Variable asteroid:

asteroid = [ 
    'Sprites/Asteroid1.png', 
    'Sprites/Asteroid2.png', 
    'Sprites/Asteroid3.png'] 

So das eigentliche Problem, das auftritt, wird Wenn ich den Code starte, sind die Asteroiden auf die Oberfläche gebleicht, aber sie springen überall herum. Nicht nur das, sondern auch verschiedene Asteroiden werden gebleicht anstatt eines ausgewählten Asteroiden. Warum passiert das?

Auf einer Randnotiz haben die Asteroiden auch einen weißen Hintergrund, ich habe versucht, sie zu konvertieren, aber das hilft nicht.

+0

Nicht sicher, warum Sie einen Downvote erhalten haben. Es ist eine legitime Frage, auch wenn es eine noobish ist. –

Antwort

1

Weil du es sagst. Der Code

gameDisplay.blit(self.space, 
      (random.randint(0,display_width), 
      random.randint(0,display_height))) 

sagt buchstäblich "blit das Bild auf dem Display an einem zufälligen Ort." Insbesondere wählt random.randint(0,...) zufällige Positionen von Null auf die Bildschirmgröße.

Beachten Sie, dass dieser Anzeigecode jedes Mal aufgerufen wird, wenn der Bildschirm aktualisiert werden muss, nicht nur, wenn Sie das Spiel starten. Um statische Koordinaten anzuzeigen, machen Sie die Koordinaten statisch:

gameDisplay.blit(self.space, (self.startX, self.startY)) 
+0

Wow, ich war mir dessen nicht bewusst. Entschuldigung, wenn ich dumm aussehe und immer noch die Konzepte der Klasse betrachte. Irgendwelche Ideen über mein Bild mit weißem Hintergrund? – Lucky38i

+1

Wenn diese Antwort Ihnen hilft, wählen Sie sie bitte aus. Der weiße Hintergrund ist ein völlig separates Problem, daher empfehle ich Ihnen, eine separate Frage zu stellen. –