Heim > Artikel > Backend-Entwicklung > Wie kann man das Verschwinden von Spielern beheben und das Schießen von Kugeln mit der Leertaste in Pygame implementieren?
Wie kann ich mit der Leertaste eine Kugel abschießen?
In Ihrem Code ist das Verschwinden des Players beim Drücken der Leertaste vorgesehen wahrscheinlich aufgrund der separaten Schlaufen für das Schießen und die Bewegung des Spielers. Um dies zu beheben, integrieren Sie beide Aktionen in die Hauptanwendungsschleife.
Verwenden Sie zum Abfeuern von Kugeln eine Liste (z. B. Bullet_list), um die Positionen der Kugeln zu speichern. Fügen Sie beim Abfeuern die Startposition des Objekts, das die Kugel abfeuert, zur Liste hinzu. Durchlaufen Sie die Aufzählungsliste, aktualisieren Sie die Position jedes Aufzählungszeichens und entfernen Sie alle, die den Bildschirm verlassen.
Die while-Schleife für die Shoot-Methode in Ihrer Aufzählungsklasse wird trotz der Bedingung, dass y <= 0 ist, nicht unterbrochen. Dies ist der Fall weil die Bedingung nie erfüllt ist, da y eher zunimmt als abnimmt. Um dies zu beheben, ändern Sie y -= self.speed in y = self.speed.
Implementieren Sie außerdem die Ereignisbehandlung in Ihrer Hauptanwendungsschleife, um Tastendrücke zu erfassen. Verwenden Sie pygame.key.get_pressed(), um kontinuierlich den Status der Schlüssel abzurufen. Aktualisieren Sie basierend auf dem Tastendruck die Position des Spielers und lösen Sie das Abfeuern von Kugeln aus.
Hier ist ein überarbeiteter Codeausschnitt, der diese Korrekturen enthält:
<code class="python">bullets = [] while True: # Event handling for event in pygame.event.get(): pass if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: bullets.append(Bullet(p.x+p.width//2, p.y)) if event.key == pygame.K_LEFT: p.move_left() if event.key == pygame.K_RIGHT: p.move_right() # Update objects keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: p.move_left() if keys[pygame.K_RIGHT]: p.move_right() for b in bullets: b.update() if b.y <= 0: bullets.remove(b) # Clear display d.fill((98, 98, 98)) # Draw scene for b in bullets: b.draw() p.draw() # Update display win.update()</code>
Das obige ist der detaillierte Inhalt vonWie kann man das Verschwinden von Spielern beheben und das Schießen von Kugeln mit der Leertaste in Pygame implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!