„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann man einen Spieler in einem Spiel auf Kugeln schießen und den Spieler sichtbar halten?

Wie kann man einen Spieler in einem Spiel auf Kugeln schießen und den Spieler sichtbar halten?

Gepostet am 2025-02-22
Durchsuche:759

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

schießen Kugeln mit der Space Bar

Diese Frage beinhaltet die Implementierung der Fähigkeit, Kugeln zu schießen, wenn die Space -Leiste gedrückt wird, während ein Spielercharakter auf dem Bildschirm beibehält. [

Problem und Lösung

Der Code des ABSER hatte zunächst ein Problem, bei dem der Spielercharakter beim Schießen verschwand. Dies liegt daran, dass die Schießerei und die Spielerbewegung in verschiedene Schleifen unterteilt wurden. Um dies anzugehen, müssen wir sie in einer einzelnen Hauptschleife kombinieren, in der beide Verhaltensweisen gleichzeitig aktualisiert werden.

Ein weiteres Problem war die Unfähigkeit, die Aufnahmeschleife zu brechen, als die Kugel die Spitze des Bildschirms erreichte. Der ursprüngliche Code wurde eine Weile Schleife verwendet, die unendlich fortgesetzt wurde. Um dies zu beheben, müssen wir eine Weile Schleife mit einer Bedingung verwenden, die überprüft, ob die Kugel die Oberseite erreicht hat.

Code Erläuterung

Hier ist eine überarbeitete Version des Code:

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()

Schlüsseländerungen:

  • Die Schieß- und Spielerbewegungslogik werden jetzt zu einer einzigen Hauptspielschleife kombiniert.
  • Die Bullet -Update -Funktion jetzt Überprüft, ob die Kugel außerhalb des Bildschirms gegangen ist und entsprechend entfernt.
  • Die Hauptschleife aktualisiert und zeichnet den Spieler und die Kugeln. Sicherstellen, dass sie beide auf dem Bildschirm anwesend sind.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3