🔎 Überblick
Ziel
- Zwei Spieler fahren auf derselben Strecke (Top‑Down‑Ansicht).
- Wer zuerst 3 Runden korrekt beendet, gewinnt.
- Abkürzen gilt nicht: Mittel‑Checkpoint nötig.
Steuerung
- Auto 1: WASD (W=Gas, S=Bremse, A/D=Lenken)
- Auto 2: Pfeiltasten (↑=Gas, ↓=Bremse, ←/→=Lenken)
- Optional: Handbremse (Shift / Strg) als kurzer Drift‑Boost
Tipp: Zeichne Ziellinie und Mittel‑Linie als separate Sprites. Wähle klare Farben für Straße (Grau) und Offroad (Grün).
🧱 Variablen & Nachrichten
Pro Auto
SPEED_P1
LAP_P1
MID_P1
LAPTIME_P1
SPEED_P2
LAP_P2
MID_P2
LAPTIME_P2
Global
BEST_P1
BEST_P2
RACE_ON
COUNTDOWN
StartRace
LapDone_P1
LapDone_P2
🏁 Start & Countdown
Logik
- Beide Autos auf Startposition, Richtung zur Strecke.
- 3‑2‑1‑Go! – erst dann RACE_ON=1, Timer starten.
Pseudoblöcke
[Wenn grüne Flagge angeklickt] setze [RACE_ON v] auf (0) setze [COUNTDOWN v] auf (3) setze [LAP_P1 v] auf (0) // ebenso P2 setze [BEST_P1 v] auf (0) // ebenso P2 positioniere Autos auf Start wiederhole bis <(COUNTDOWN) = (0)> warte (1) Sek.; ändere [COUNTDOWN v] um (-1) ende setze [RACE_ON v] auf (1) sende [StartRace v]
🎮 Steuerung & Physik
Auto 1 (WASD)
// Sprite: CAR_P1
[Wenn ich empfange (StartRace)] setze [SPEED_P1 v] auf (0)
immer
wenn <Taste [w] gedrückt?> dann ändere [SPEED_P1 v] um (0.5)
wenn <Taste [s] gedrückt?> dann ändere [SPEED_P1 v] um (-0.25)
wenn <(SPEED_P1) > (0)> dann
wenn <Taste [a] gedrückt?> drehe dich um (-4) Grad
wenn <Taste [d] gedrückt?> drehe dich um (4) Grad
ende
setze [SPEED_P1 v] auf ((SPEED_P1) * (0.95)) // Reibung
wenn <berührt Farbe [#2E7D32]?> dann setze [SPEED_P1 v] auf ((SPEED_P1) * (0.8))
gehe (SPEED_P1) er Schritt(e)
end
Auto 2 (Pfeiltasten)
// Sprite: CAR_P2
[Wenn ich empfange (StartRace)] setze [SPEED_P2 v] auf (0)
immer
wenn <Taste [Pfeil nach oben] gedrückt?> dann ändere [SPEED_P2 v] um (0.5)
wenn <Taste [Pfeil nach unten] gedrückt?> dann ändere [SPEED_P2 v] um (-0.25)
wenn <(SPEED_P2) > (0)> dann
wenn <Taste [Pfeil nach links] gedrückt?> drehe dich um (-4) Grad
wenn <Taste [Pfeil nach rechts] gedrückt?> drehe dich um (4) Grad
ende
setze [SPEED_P2 v] auf ((SPEED_P2) * (0.95))
wenn <berührt Farbe [#2E7D32]?> dann setze [SPEED_P2 v] auf ((SPEED_P2) * (0.8))
gehe (SPEED_P2) er Schritt(e)
end
Passe die Werte 0.5/−0.25/0.95/0.8 an deine Strecken‑Geometrie an (Grip, Bremse, Reibung, Offroad‑Faktor).
⏱️ Runden‑Logik mit Anti‑Cheat
Prinzip
- Mittel‑Linie setzt MID_P1/MID_P2 auf 1.
- Ziellinie zählt Runde nur, wenn MID=1 war.
- LAPTIME je Auto hochzählen; BEST aktualisieren, wenn schneller.
Pseudoblöcke
// Sprite: MIDLINE
immer
wenn <berührt [CAR_P1 v]?> dann setze [MID_P1 v] auf (1)
wenn <berührt [CAR_P2 v]?> dann setze [MID_P2 v] auf (1)
end
// Sprite: FINISH
immer
wenn <berührt [CAR_P1 v]?> dann
wenn <(MID_P1) = (1)> dann
ändere [LAP_P1 v] um (1)
wenn <(BEST_P1) = (0) oder (LAPTIME_P1) < (BEST_P1)> dann setze [BEST_P1 v] auf (LAPTIME_P1)
sende [LapDone_P1 v]
setze [LAPTIME_P1 v] auf (0); setze [MID_P1 v] auf (0)
ende
ende
// analog für CAR_P2
end
// Szene: Timer
immer wenn <(RACE_ON) = (1)> dann
ändere [LAPTIME_P1 v] um (0.02)
ändere [LAPTIME_P2 v] um (0.02)
warte (0.02) Sek.
end
💥 Kollisionen & Fair‑Play
- Auto–Auto: Bei Berührung beide kurz abbremsen und leicht voneinander wegdrehen.
- Öl/Falle: Kurzer Dreher (90°) + 0.4 s Kontrollverlust.
- Wand/Offroad: Speed dämpfen (×0.6–0.8), kein Runden‑Exploit.
// Beispiel Auto‑Kontakt (im jeweiligen Auto) wenn <berührt [CAR_P2 v]?> dann setze [SPEED_P1 v] auf ((SPEED_P1) * (0.6)) drehe dich um (zufällig von (-12) bis (12)) Grad end
🖥️ HUD & Reset
- Zeige oben: LAP_P1 / BEST_P1 links, LAP_P2 / BEST_P2 rechts.
- Reset‑Taste (R): Autos auf Start, SPEED=0, MID=0; RACE_ON bleibt (Schnell‑Reset).
- Optional: Best‑of‑3 – wer zuerst 3 Siege (Rennen) hat.
// Reset (Szene) wenn Taste [r] gedrückt? dann sende [Reset v] end // Auto bei Reset [Wenn ich empfange (Reset)] gehe zu Start; setze [SPEED_* v] auf (0); setze [MID_* v] auf (0)
✅ Test‑Checkliste
🧰 Häufige Fehler & Fixes
- Doppelte Rundenzählung: Prüfe MID_*
- Steuerungs‑Lag: Reduziere Klone/Effekte; verwende leichte Kostüme
- Autos clippen in Wänden: Vor dem Bewegen prüfen; bei Kontakt Position minimal zurücksetzen
🚀 Erweiterungen
- Boxenstopp: Reifenwechsel → Grip‑Boost für 10 s
- Gummiband‑Logik (leicht) – Zurückliegendes Auto bekommt +5–10% Speed
- Split‑Times S1/S2/S3 für tiefere Analyse