2016-07-05 26 views
-2

Ich benutze Python 2.7 und Pygame, um Asteroid Spiel mit OOP und Sprite-Klasse zu erstellen. Ich habe einen Spieler und Asteroiden. Wenn ich mit Spritecollide eine Kollision zwischen einem Spieler und einem Asteroiden feststelle, wird der Asteroid aus der Gruppe entfernt und ich entferne den Spieler mit kill. Der Spieler verschwindet vom Bildschirm, aber er ist immer noch dort versteckt. Wenn ein anderer Asteroid dort vorbeifährt, wo der Spieler war, registriert er eine Kollision und verschwindet, als wäre der Spieler noch da. Ist das das richtige Verhalten? Wie entferne ich den Player vollständig aus dem Spiel? Oder verschiebe ich es einfach aus dem Spielfeld?Python OOP sprite.Sprite.kill entfernt es wirklich

+1

Willkommen bei SO, Sie erhalten bessere Antworten, wenn Sie Ihren Code mit einem minimalen, vollständigen und überprüfbaren Beispiel (MCVE) http://stackoverflow.com/help/mcve einschließen. – dbugger

Antwort

1

Von the documentation:

kill()

Das Sprite wird aus allen Gruppen entfernt, die sie enthalten. Das ändert nichts am Zustand des Sprite. Es ist möglich, den Sprite nach dem Aufruf dieser Methode weiter zu verwenden, einschließlich Hinzufügen zu Gruppen.

Das bedeutet, dass der Spieler nur aus allen Sprite-Gruppen entfernt wird. Ich nehme an, du benutzt Gruppen, deshalb wird dein Spieler nicht mehr ausgelost. Wenn Sie jedoch irgendwo in Ihrer Gameloop nach dem bestimmten Spielerobjekt suchen, ob es mit irgendwelchen Asteroiden kollidiert, wird dies immer noch funktionieren.

Wie Sie damit umgehen, hängt davon ab, was Ihr gewünschtes Spielverhalten ist. Sollte das Spiel vorbei sein? Beenden Sie dann Ihre Hauptschleife und zeichnen Sie ein Spiel über den Bildschirm. Sollte der Spieler respawnen? Setzen Sie dann die Position des Players zurück und fügen Sie das Player-Sprite den entsprechenden Gruppen wieder hinzu.