Erfahren Sie, wie Sie die Zeit messen und damit verschiedene Aspekte Ihres Spiels steuern.
In der Spieleentwicklung kann das Hinzufügen zeitbasierter Ereignisse die Spielmechanik erheblich verbessern und Spiele für Spieler ansprechender machen. Durch die Integration von Timern können Sie Herausforderungen einführen, zeitlich begrenzte Ziele festlegen oder bestimmten Spielelementen ein Gefühl der Dringlichkeit verleihen.
Erstellen Sie ein einfaches Spiel
Erstellen Sie zunächst ein einfaches Spiel, um die Grundlagen zu verstehen. Erstellen Sie ein Spiel, bei dem sich der Spieler nach links und rechts bewegen kann und es eine einzige Plattform gibt. Erstellen Sie eine neue Datei mit dem Namen simple-game.py und importieren Sie das Arcade-Modul, das die notwendigen Funktionen zum Erstellen des Spiels bereitstellt.
Der in diesem Artikel verwendete Code ist hier verfügbar GitHub-Repository Die Nutzung steht Ihnen unter der MIT-Lizenz kostenlos zur Verfügung.
Als nächstes definieren Sie die GameWindow
Klasse, die eine Unterklasse von ist Arkade. Fenster. Definieren Sie innerhalb der GameWindow-Klasse die __drin__ Methode, die das Fenster mit der angegebenen Breite, Höhe und dem angegebenen Titel initialisiert.Der on_key_press Die Methode erkennt das Drücken der linken oder rechten Pfeiltaste. Durch Drücken nach links wird verringert Spieler_x um 10 Einheiten, während Sie mit der rechten Maustaste den Wert um 10 Einheiten erhöhen. Das ermöglicht es dem Spieler, sich zu bewegen horizontal im Spielfenster.
Um das Spiel auszuführen, definieren Sie die Hauptfunktion, erstellen Sie eine Instanz von GameWindow, rufen Sie die Setup-Methode auf, um das Spielfenster einzurichten, und starten Sie schließlich die Spielschleife mit arcade.run().
Entwerfen der Timer-Klassenstruktur
Um Timer in Ihrem Spiel zu implementieren, können Sie eine Timer-Klasse mit den erforderlichen Attributen und Methoden erstellen. Diese Klasse stellt Funktionen zum Starten und Stoppen des Timers, zum Abrufen der verstrichenen Zeit und zum Überprüfen, ob der Timer abgelaufen ist, bereit. Hier ist die Grundstruktur der Timer-Klasse:
importieren Zeit
KlasseTimer:
def__drin__(Selbst, Dauer):
self.duration = Dauer
self.start_time = 0
self.is_running = FALSCHdefStart(selbst):
self.start_time = time.time()
self.is_running = WAHRdefstoppen(selbst):
self.is_running = FALSCHdefget_elapsed_time(selbst):
Wenn self.is_running:
zurückkehren time.time() - self.start_time
zurückkehren0
defist abgelaufen(selbst):
zurückkehren self.get_elapsed_time() >= self.duration
Die Timer-Klasse benötigt eine Dauer Parameter in Sekunden während der Initialisierung. Die Klasse enthält Attribute wie Startzeit um die Zeit zu speichern, zu der der Timer gestartet wurde, und läuft um den Status des Timers zu verfolgen.
Der Start() Methode setzt die start_time auf die aktuelle Zeit mit Zeit Zeit() und setzt is_running auf WAHR. Der stoppen() Die Methode setzt is_running einfach auf FALSCH. Der get_elapsed_time() Die Methode berechnet die verstrichene Zeit, indem sie die Startzeit von der aktuellen Zeit subtrahiert.
Wenn der Timer läuft, gibt er die verstrichene Zeit zurück; andernfalls wird 0 zurückgegeben. Der ist abgelaufen() Die Methode prüft, ob die verstrichene Zeit größer oder gleich der Dauer ist, was darauf hinweist, dass der Timer abgelaufen ist.
Countdown-Timer implementieren
Um einen Countdown in Ihrem Spiel zu demonstrieren, können Sie den Timer starten, wenn der Spieler eine bestimmte Taste drückt, beispielsweise die Leertaste. Drucken Sie den Countdown mit dem Druckbefehl von Python auf der Konsole aus. Erstellen Sie eine neue Datei mit dem Namen timer.py und fügen Sie den Code mit diesen Updates hinzu:
importieren Zeit
KlasseGameWindow(Arkade. Fenster):
def__drin__(selbst):
super().__init__(WIDTH, HEIGHT, „Einfaches Spiel“)
self.player_x = WIDTH // 2
self.player_y = HEIGHT // 2
self.timer = Timer(10)defon_key_press(selbst, Schlüssel, Modifikatoren):
Wenn Schlüssel == arcade.key. RAUM:
self.timer.start()
defon_draw(selbst):
# Vorhandener Code
Wenn self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration – verstrichene_Zeit
verbleibende_Zeit = max (r_Zeit, 0)
drucken(f"Countdown: {verbleibende Zeit:.1F} Sekunden")
Stellen Sie sicher, dass Sie das Terminalfenster und das Spielfenster gleichzeitig sehen können. Drücken Sie dann die Leertaste und Sie sehen den Countdown des Timers:
Umgang mit Timer-Ereignissen und Auslösen von Aktionen
Sie können auch eine Funktion auslösen zeichnet ein Rechteck wenn der Countdown-Timer abläuft. Erstellen Sie eine neue Datei mit dem Namen handle-event.py und fügen Sie den Code mit den folgenden Updates hinzu:
defon_draw(selbst):
# Vorhandener Code
Wenn self.timer.is_expired():
self.draw_rectangle()
defdraw_rectangle(selbst):
arcade.draw_rectangle_filled (WIDTH // 2, HÖHE // 2, 100, 100, Rot)
Unten ist die Ausgabe:
Anhalten, Zurücksetzen und Fortsetzen des Timers
Um Funktionen zum Anhalten, Zurücksetzen und Fortsetzen des Timers hinzuzufügen, können Sie die erweitern Timer Klasse mit geeigneten Methoden. Hier ist ein Beispiel:
KlasseTimer:
# Vorhandener CodedefPause(selbst):
self.duration -= self.get_elapsed_time()
self.is_running = FALSCHdefzurücksetzen(selbst):
self.start_time = 0
self.is_running = FALSCH
deffortsetzen(selbst):
self.start_time = time.time()
self.is_running = WAHR
Visuelles Feedback zum Timer hinzufügen
Um dem Timer visuelles Feedback zu geben, können Sie Text- oder Grafikelemente auf dem Spielbildschirm einbinden. Erstellen Sie eine neue Datei mit dem Namen visual.py und fügen Sie den Code mit den folgenden Updates hinzu:
defon_draw(selbst):
# Vorhandener Code
Wenn self.timer.is_running:
Text = f"Countdown: {verbleibende Zeit:.1F} Sekunden"
arcade.draw_text (Text, 10, 10, Schwarz, 18)
Sie sehen den Timer jetzt direkt im Spielfenster statt auf der Konsole:
Inklusive zusätzlicher Funktionen
Um zeitbasierte Ereignisse weiter zu verbessern, können Sie die folgenden zusätzlichen Funktionen in Ihre Spiele integrieren.
Zeitbasierte Power-Ups oder Boni
Führen Sie Power-Ups oder Boni ein, die im Laufe des Spiels regelmäßig erscheinen. Diese Power-Ups könnten vorübergehende Fähigkeiten, zusätzliche Punkte, erhöhte Geschwindigkeit oder verbesserte Waffen bieten.
Da sie zeitlich begrenzt sind, müssen die Spieler sie innerhalb eines bestimmten Zeitrahmens strategisch sammeln, um sich einen Vorteil zu verschaffen. Das erhöht die Spannung und belohnt schnelles Denken.
Zeitlich begrenzte Herausforderungen
Erstellen Sie zeitlich begrenzte Herausforderungen, bei denen Spieler eine Aufgabe innerhalb eines bestimmten Zeitrahmens erledigen müssen. Zum Beispiel ein Puzzle- oder Jump'n'Run-Abschnitt, der innerhalb einer bestimmten Zeit gelöst werden muss.
Dies fordert die Spieler zu schnellem Denken und Handeln heraus und verleiht dem Gameplay ein spannendes Gefühl der Dringlichkeit. Der erfolgreiche Abschluss dieser Herausforderungen kann Belohnungen freischalten oder die Geschichte vorantreiben.
Zeitgesteuerte Hindernisse oder Feinde
Implementieren Sie zeitgesteuerte Hindernisse oder Feinde, die eine Bedrohung für den Spieler darstellen. Zum Beispiel bewegliche Plattformen, die in regelmäßigen Abständen erscheinen und verschwinden, oder Feinde, die für eine begrenzte Zeit unbesiegbar werden.
Spieler müssen ihre Aktionen und Bewegungen richtig timen, um diese Hindernisse zu überwinden oder Feinde zu besiegen, bevor die Zeit abläuft. Dies fügt dem Gameplay eine Ebene der Strategie und Koordination hinzu.
Best Practices für zeitbasierte Ereignisse
Bei der Implementierung zeitbasierter Ereignisse in Ihren Spielen ist es wichtig, diese Best Practices zu befolgen.
Test und Balance
Testen Sie Ihre zeitbasierten Ereignisse gründlich, um sicherzustellen, dass sie fair und ausgewogen sind. Passen Sie die Dauer, den Schwierigkeitsgrad und die Belohnungen genau an, um unterhaltsame Spielerlebnisse zu schaffen.
Benutzer-Feedback
Geben Sie den Spielern klares und intuitives Feedback zum Status des Timers und zu zeitbasierten Ereignissen. Soundeffekte hinzufügen, visuelle Indikatoren oder Texthinweise können den Spielern helfen, die zeitlichen Einschränkungen und die Konsequenzen ihrer Handlungen zu verstehen.
Konsistente Zeitmessung
Verwenden Sie während Ihres Spiels ein einheitliches Zeitmesssystem. Verwenden Sie beispielsweise Sekunden als Einheit für alle Timer und zeitbezogenen Berechnungen. Dies gewährleistet Konsistenz und leichte Verständlichkeit sowohl für die Spieler als auch für die Entwickler.
Behandeln Sie Randfälle
Denken Sie an Szenarien, in denen das Spiel angehalten, minimiert oder im Hintergrund ausgeführt wird. Gehen Sie mit diesen Situationen vorsichtig um, um ein genaues Timing zu gewährleisten und unbeabsichtigtes Verhalten zu verhindern, wenn das Spiel fortgesetzt wird.
Indem Sie diese Best Practices befolgen, können Sie zeitbasierte Ereignisse erstellen, die das Gameplay verbessern, die Spieler herausfordern und ein ausgewogenes und unterhaltsames Erlebnis bieten.
Machen Sie Spiele mit zeitbasierten Ereignissen unterhaltsamer
Indem Sie zeitbasierte Ereignisse in Ihre Spiele integrieren, können Sie den Spielern ein dynamisches und ansprechendes Erlebnis bieten. Zeitlich begrenzte Herausforderungen sorgen für Spannung und Dringlichkeit, während zeitgesteuerte Power-Ups oder Hindernisse strategische Entscheidungsmöglichkeiten schaffen können.
Experimentieren Sie mit verschiedenen zeitbasierten Mechanismen, um die richtige Balance für Ihr Spiel zu finden, und denken Sie daran, Spiele zu testen und zu iterieren, um den Spaß und die Freude zu maximieren.