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 man das Verschwinden von Spielern beheben und das Schießen von Kugeln mit der Leertaste in Pygame implementieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 07:22:30391Durchsuche

How to Fix Player Disappearance and Implement Bullet Shooting with Space Bar in Pygame?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn