Selbst die einfachsten Feinde müssen sich irgendwie bewegen, also lassen Sie sich inspirieren, wie Sie mit der Codierung hinter Angriffsmustern umgehen.
Eines der Schlüsselelemente eines großartigen Videospiels ist die Anwesenheit von Feinden. Egal, ob es sich um Zombies, Aliens oder andere Spieler handelt, Feinde können ein Spiel herausfordernder und aufregender machen.
In PyGame können Sie ganz einfach eine Vielzahl von feindlichen Bewegungsverhalten programmieren, z. B. dem Spieler folgen, sich zufällig bewegen oder bestimmte Pfade nehmen.
Erstellen eines einfachen Spiels
Erstellen Sie zunächst ein einfaches Spiel, bei dem sich ein Spieler horizontal und vertikal bewegt. Wenn der Spieler den Feind berührt, stirbt der Spieler.
Den vollständigen Code finden Sie darin GitHub-Repository.
Beginnen Sie damit, das erforderliche PyGame-Modul zu importieren und zu initialisieren.
importieren Pygame
pygame.init()
Richten Sie als Nächstes den Bildschirm ein und erstellen Sie die Spieler- und Feindobjekte mithilfe der Pygame. Rechteck() Funktion.
# Richten Sie den Bildschirm ein
screen = pygame.display.set_mode((800, 600))# Stellen Sie die Farben ein
schwarz = (0, 0, 0)
weiß = (255, 255, 255)
# Richten Sie das Spielerrechteck und das feindliche Objekt ein
Spieler = Pygame. Rechteck(350, 500, 50, 50)
Feind = Pygame. Rechteck(350, 0, 50, 50)
Erstellen Sie danach eine Spielschleife, die läuft, bis der Spieler entweder mit dem Feind kollidiert oder das Spiel verlässt. Prüfen Sie auch nach Kollision zwischen dem Spieler und dem Feind, und zeichnen Sie die Spielobjekte auf dem Bildschirm.
# Richten Sie die Spielschleife ein
läuft = WAHRwährend Betrieb:
für Fall In pygame.event.get():
Wenn event.type == Pygame. AUFHÖREN:
läuft = FALSCH# Füllen Sie den Bildschirm mit Weiß
screen.fill (weiß)# Bewegen Sie das Player-Rechteck
Tasten = pygame.key.get_pressed()Wenn Schlüssel[pygame. K_LINKS]:
Spieler.x -= 5Wenn Schlüssel[pygame. K_RECHTS]:
Spieler.x += 5Wenn Schlüssel[pygame. K_UP]:
Spieler.y -= 5Wenn Schlüssel[pygame. K_DOWN]:
Spieler.y += 5# Auf Kollision zwischen Spieler und Feind prüfen
Wenn player.colliderect (Feind):
läuft = FALSCH# Zeichnen Sie das Spielerrechteck und das feindliche Objekt auf den Bildschirm
pygame.draw.rect (Bildschirm, schwarz, Spieler)
pygame.draw.rect (Bildschirm, schwarz, Feind)# Aktualisieren Sie den Bildschirm
pygame.display.update()
# Das Spiel verlassen
pygame.quit()
Richte Feinde auf den Spieler
Um den Feind auf den Spieler zuzubewegen, müssen Sie die Entfernung zwischen den beiden berechnen, was Sie mit dem Satz des Pythagoras tun können. Sie können diese Entfernung dann verwenden, um die Bewegungsgeschwindigkeit und -richtung des Feindes auf den Spieler zu bestimmen.
Um dies zu implementieren, erstellen Sie eine Geschwindigkeitsvariable und verwenden Sie sie, um die Position des Feindes zum Spieler zu aktualisieren.
# Berechnen Sie die Entfernung zwischen dem Feind und dem Spieler
distance_x = Spieler.x - Feind.x
distance_y = player.y - feind.y
Abstand = (Abstand_x ** 2 + Abstand_y ** 2) ** 0.5# Bewegen Sie den Feind auf den Spieler zu
Geschwindigkeit = 2
Wenn Abstand != 0:
feind.x += geschwindigkeit * entfernung_x / entfernung
feind.y += Geschwindigkeit * Distanz_y / Distanz
Randomisieren Sie die feindliche Bewegung auf dem Bildschirm
Sie können den Feind auch zufällig auf dem Bildschirm bewegen lassen, um das Spiel herausfordernder zu machen.
Generieren Sie dazu mit dem Zufallsmodul in Python eine zufällige Richtung, in die sich der Feind bewegen soll. Verwenden Sie die Auswahl() Funktion, um eine zufällige Richtung aus einer Liste von Richtungen auszuwählen, in die sich der Feind bewegen kann. Aktualisieren Sie dann die Position des Feindes basierend auf der gewählten Richtung.
importieren willkürlich
# Bewegen Sie den Feind zufällig auf dem Bildschirm
Richtung = random.choice (['links', 'Rechts', 'hoch', 'runter'])
Wenn Richtung == 'links':
feind.x -= 5
elf Richtung == 'Rechts':
feind.x += 5
elf Richtung == 'hoch':
feind.y -= 5
elf Richtung == 'runter':
feind.y += 5
Auf Nähe basierende feindliche Bewegung
In einigen Spielen bewegt sich der Feind nur, wenn der Spieler in seiner Nähe ist. Sie können dies erreichen, indem Sie die Entfernung zwischen dem Feind und dem Spieler berechnen.
Wenn die Entfernung kleiner als ein bestimmter Wert ist, bewegen Sie den Feind auf den Spieler zu. Dies macht das Spiel strategischer und zwingt den Spieler, bei seinen Bewegungen vorsichtiger zu sein.
# Bewegen Sie den Feind auf den Spieler zu, wenn der Spieler in der Nähe ist
Geschwindigkeit = 2
Wenn Abstand < 300:
Wenn Abstand != 0:
feind.x += geschwindigkeit * entfernung_x / entfernung
feind.y += Geschwindigkeit * Distanz_y / Distanz
Gegner weicht Spielerangriffen aus
Sie können den Feind auch dazu bringen, der Bewegung des Spielers auszuweichen. Der Feind wird versuchen, dem Spieler auszuweichen, indem er sich senkrecht zur Position des Spielers bewegt.
Um dies zu erreichen, berechnen Sie den Einheitsvektor in Richtung des Spielers, indem Sie die zuvor berechneten distance_x und distance_y verwenden. Berechnen Sie dann den senkrechten Vektor, um den Feind senkrecht zum Einheitsvektor zu bewegen. Berechnen Sie schließlich das Skalarprodukt des senkrechten Vektors und des Einheitsvektors, um die Richtung der feindlichen Bewegung zu bestimmen.
Um dies zu implementieren, fügen Sie nach der Entfernungsberechnung das unten stehende Code-Snippet hinzu.
Geschwindigkeit = 2
Wenn Abstand < 400:
Wenn Abstand != 0:
# Berechne den Einheitsvektor zum Spieler
unit_vector_x = distance_x / distance
unit_vector_y = distance_y / distance# Berechnen Sie den senkrechten Vektor
senkrechter_Vektor_x = -Einheitsvektor_y
senkrechter_Vektor_y = Einheitsvektor_x# Berechnen Sie das Skalarprodukt des senkrechten Vektors und der
# Einheitsvektor
Punktprodukt = senkrechter_Vektor_x * Einheitsvektor_x
+ senkrechter_Vektor_y * Einheitsvektor_y
# Bewegen Sie den Feind senkrecht zum Einheitsvektor
Wenn dot_product > 0:
feind.x += Geschwindigkeit * senkrechter_Vektor_x
feind.y += Geschwindigkeit * senkrechter_Vektor_y
anders:
feind.x -= Geschwindigkeit * senkrechter_Vektor_x
feind.y -= Geschwindigkeit * senkrechter_Vektor_y
Mit diesen Modifikationen versucht der Feind zu vermeiden, dem Spieler zu nahe zu kommen. Dies macht das Spiel anspruchsvoller und macht Spaß zu spielen.
Zusätzliche Funktionen hinzufügen
Sie können Ihrem Spiel auch weitere Funktionen hinzufügen, um es herausfordernder zu machen. Sie können beispielsweise mehrere Feinde hinzufügen, die sich zufällig auf dem Bildschirm bewegen, Hindernisse, die der Spieler beim Bewegen vermeiden muss, Power-Ups, die die Fähigkeiten des Spielers verbessern, und so weiter.
Du kannst Verwenden Sie das Clock-Modul, um die Framerate einzustellen Ihres Spiels und sorgen Sie dafür, dass es flüssiger läuft. Nachfolgend die Umsetzung:
# Fügen Sie mehrere Feinde hinzu, die sich zufällig auf dem Bildschirm bewegen
Feinde = []für ich In Bereich(5):
Feind = Pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)Feinde.anhängen (Feind)
# Fügen Sie Hindernisse hinzu, die der Spieler vermeiden muss
Hindernis = Pygame. Rechteck(200, 250, 50, 50)# Richten Sie die Spielschleife ein
Uhr = pygame.time. Uhr()
läuft = WAHRwährend Betrieb:
für Fall In pygame.event.get():
Wenn event.type == Pygame. AUFHÖREN:
läuft = FALSCH# Füllen Sie den Bildschirm mit Weiß
screen.fill (weiß)# Bewegen Sie das Player-Rechteck
Tasten = pygame.key.get_pressed()Wenn Schlüssel[pygame. K_LINKS]:
Spieler.x -= 5
Wenn Schlüssel[pygame. K_RECHTS]:
Spieler.x += 5
Wenn Schlüssel[pygame. K_UP]:
Spieler.y -= 5
Wenn Schlüssel[pygame. K_DOWN]:
Spieler.y += 5# Bewegen Sie die Feinde zufällig auf dem Bildschirm
für Feind In Feinde:
Richtung = random.choice (['links', 'Rechts', 'hoch', 'runter'])Wenn Richtung == 'links':
feind.x -= 5
elf Richtung == 'Rechts':
feind.x += 5
elf Richtung == 'hoch':
feind.y -= 5
elf Richtung == 'runter':
feind.y += 5# Auf Kollision zwischen Spieler und Feind prüfen
Wenn player.colliderect (Feind):
läuft = FALSCH# Zeichnen Sie das Spielerrechteck, die feindlichen Objekte und das Hindernis auf
# der Bildschirm
pygame.draw.rect (Bildschirm, schwarz, Spieler)für Feind In Feinde:
pygame.draw.rect (Bildschirm, schwarz, Feind)pygame.draw.rect (Bildschirm, schwarz, Hindernis)
# Aktualisieren Sie den Bildschirm
pygame.display.update()# Stellen Sie die Bildrate des Spiels ein
Uhr.Tick (60)
# Das Spiel verlassen
pygame.quit()
Verbessern Sie Ihr Spielerlebnis mit Feinden
Indem Sie Feinde mit einzigartigen Bewegungen, Verhaltensweisen und Fähigkeiten hinzufügen, können Sie Ihre Spiele fesselnder und herausfordernder für die Spieler gestalten. Die Spieler müssen ihr Gameplay strategisch planen und anpassen, um verschiedene Arten von Feinden zu besiegen. Dies kann das Engagement erhöhen, den Wiederspielwert verbessern und die Spieler dazu bringen, immer wiederzukommen.