Heim >Backend-Entwicklung >Python-Tutorial >Wie bringt man einen Spieler dazu, in einem Spiel Kugeln abzuschießen, während der Spieler sichtbar bleibt?

Wie bringt man einen Spieler dazu, in einem Spiel Kugeln abzuschießen, während der Spieler sichtbar bleibt?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 11:46:02622Durchsuche

How to Make a Player Shoot Bullets in a Game While Keeping the Player Visible?

Kugeln mit der Leertaste abschießen

Bei dieser Frage geht es darum, die Fähigkeit zu implementieren, Kugeln abzufeuern, wenn die Leertaste gedrückt wird, während ein Spielercharakter auf dem Bildschirm bleibt.

Problem und Lösung

Der Code des Fragestellers hatte zunächst ein Problem, bei dem der Spielercharakter beim Schießen verschwand. Dies liegt daran, dass das Schießen und die Spielerbewegung in verschiedene Schleifen unterteilt wurden. Um dieses Problem zu lösen, müssen wir sie in einer einzigen Hauptschleife kombinieren, in der beide Verhaltensweisen gleichzeitig aktualisiert werden.

Ein weiteres Problem war die Unfähigkeit, die Schussschleife zu unterbrechen, wenn die Kugel den oberen Bildschirmrand erreichte. Der ursprüngliche Code verwendete eine While-Schleife, die unendlich fortgesetzt wurde. Um dies zu beheben, müssen wir eine While-Schleife mit einer Bedingung verwenden, die prüft, ob das Aufzählungszeichen oben angekommen ist.

Code-Erklärung

Hier ist eine überarbeitete Version des Codes:

<code class="python">import pygame, os

# Boilerplate setup omitted for brevity

class Player:
    def __init__(self, x, y, height, width):
        ...

    def draw(self):
        ...

    def move_left(self):
        ...

    def move_right(self):
        ...


class Bullet:
    def __init__(self, x, y):
        ...

    def update(self):
        ...

    def draw(self):
        ...


# Lists of bullets
bullets = []

# Initialize player
p = Player(600, 500, 50, 30)

# Main game loop
run = True
while run:
    clock.tick(100)
    
    # Handle events
    for event in pygame.event.get():
        if event.type ==  pygame.QUIT:
            run = False
        if event.type ==  pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                bullets.append(Bullet(p.x+p.width//2, p.y))

    # 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()
        # Update position and remove bullet if it goes off-screen
        if b.y < 0:
            bullets.remove(b)

    # Update frame
    d.fill((98, 98, 98))
    for b in bullets:
        b.draw()
    p.draw()
    win.update()</code>

Wichtige Änderungen:

  • Die Schuss- und Spielerbewegungslogik ist jetzt in einer einzigen Hauptspielschleife zusammengefasst.
  • Die Bullet-Update-Funktion prüft jetzt, ob das Bullet verschwunden ist außerhalb des Bildschirms und entfernt es entsprechend.
  • Die Hauptschleife aktualisiert und zeichnet den Player und die Kugeln kontinuierlich und stellt sicher, dass beide auf dem Bildschirm vorhanden sind.

Das obige ist der detaillierte Inhalt vonWie bringt man einen Spieler dazu, in einem Spiel Kugeln abzuschießen, während der Spieler sichtbar bleibt?. 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