Struktur & Kernfunktionen
Jede Arcade-App folgt einem strengen Lebenszyklus. Wer diesen versteht, kann jedes Spiel bauen.
__init__
Einmaliger Aufruf. Hier definierst du Fenstergröße, Titel und lädst alle Bilder (Assets).
on_key_press
Reagiert sofort auf Tasten. Perfekt zum Inkrementieren von Variablen oder für Sprünge.
on_draw
Wird ca. 60x pro Sekunde aufgerufen. Hier darf NUR gezeichnet werden (clear, draw_text, etc.).
📝 Test 1: Funktions-Zuordnung
Sprites & Geschwindigkeiten
Ein Sprite ist mehr als ein Bild. Es hat Positionen (x, y) und Geschwindigkeiten (change_x, change_y).
Koordinatensystem
- +X: Nach Rechts bewegen
- -X: Nach Links bewegen
- +Y: Nach Oben bewegen
- -Y: Nach Unten bewegen
📝 Test 2: Vektoren & Frames
figur.center_x = 120
figur.center_y = 120
figur.change_y = -2
Aufgabe: Nach wie vielen Frames erreicht "figur" die Y-Position 80?
change_y =
change_x =
Kollision & Punktesystem
Ein Spiel wird erst durch Interaktion lebendig. Wir prüfen Berührungen und ändern daraufhin den Spielzustand.
if arcade.check_for_collision(spieler, gegenstand):
gegenstand.kill() # Entfernt das Sprite aus allen Listen
score += 5 # Erhöht die Punkte
📝 Test 3: Teleporter & Sammler
# Spieler startet bei (800, 50)
self.spieler.center_x =
self.spieler.center_y =
# Wenn Teleporter bei (230, 170) berührt wird:
if arcade.(self.spieler, self.teleporter):
# Zurück zum Start teleportieren:
self.spieler.position = ()
Zeit & Game Loops
Verstehe den Unterschied zwischen FPS-abhängigem Rendern und konstanten Physik-Updates.
Zeitstrahl-Simulator
📝 Test 4: Countdown-Logik
Implementiere einen Countdown, der bei 100 startet und bei 0 "Zeit abgelaufen" zeigt.
self.zeit =
def on_update(self, delta_time):
self.zeit delta_time
def on_draw(self):
if self.zeit 0:
arcade.draw_text("Zeit abgelaufen", 400, 300)
UI & High Performance
Lerne, wie du hunderte Texte anzeigst, ohne dass dein Spiel ruckelt.
Schlechte Performance
arcade.draw_text() in jedem Frame neu zu berechnen, kostet viel CPU-Zeit.
arcade.draw_text("Score: 10", 10, 10)
Profi Performance
Erstelle ein arcade.Text Objekt in __init__. Es wird nur einmal gerendert!
self.t = arcade.Text("Score", 10, 10)
# In on_draw:
self.t.draw()
📝 Test 5: Effizienz-Check
Stell dir vor, das Spiel läuft 10 Minuten (60 FPS). Wie oft wird der Text in Situation A (draw_text) erstellt?
(Tipp: 60 FPS * 60 Sek * 10 Min)Wie oft wird der Text in Situation B (Text-Objekt) erstellt?