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.
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.
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>
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!