3.4 KiB
3.4 KiB
Retro Arcade Platform — Design Spec
Date: 2026-03-31
Overview
Erweiterung des bestehenden Snake-Spiels zu einer kleinen Retro-Arcade-Plattform mit vier Spielen. Alle Dateien sind plain HTML/CSS/JS, kein Build-Schritt, kein Server, kein Package Manager — direkt im Browser öffenbar.
Spiele
- Snake — bestehendes
snake.html, minimal angepasst - Tetris — neu
- Breakout — neu
- Space Invaders — neu
Dateistruktur
testprojekt/
├── index.html ← Startmenü (neu)
├── style.css ← gemeinsame Styles (neu)
├── scores.js ← Highscore-Logik (neu)
├── snake.html ← angepasst (shared assets einbinden)
├── tetris.html ← neu
├── breakout.html ← neu
└── spaceinvaders.html ← neu
Architektur
Gemeinsame Assets
style.css
- Navy/Teal-Theme: Hintergrund
#1a1a2e, Akzent#4ecca3, SchriftCourier New - Gemeinsame Klassen: Body-Layout, Überschriften, HUD, Canvas-Border, Overlay, Buttons, Game-Kacheln
- Wird von allen HTML-Dateien via
<link rel="stylesheet" href="style.css">eingebunden
scores.js
getHighscore(game)— liest auslocalStorage(hs_snake,hs_tetris,hs_breakout,hs_spaceinvaders), gibt0zurück wenn kein EintragsetHighscore(game, score)— speichert nur wennscore > getHighscore(game)- Wird via
<script src="scores.js"></script>eingebunden
Startmenü (index.html)
- Titel: "RETRO ARCADE" in Teal, zentriert
- 2×2 Grid mit einer Kachel pro Spiel
- Jede Kachel zeigt: Spielname + aktuellen Highscore (gelesen beim Seitenload via
scores.js) - Klick auf Kachel → öffnet die jeweilige Spieldatei (
href="snake.html"etc.) - Highscores werden beim Öffnen von
index.htmlfrisch auslocalStoragegelesen — immer aktuell
Einzelne Spiele
Jedes Spiel bekommt:
<link rel="stylesheet" href="style.css">und<script src="scores.js"></script>im Head- "← Menü"-Button oben links, verlinkt auf
index.html - Beim Game Over:
setHighscore('tetris', score)(bzw. jeweiliger Spielname) aufrufen, bevor der Overlay angezeigt wird - Spielspezifische Styles (z.B. Tetris-Blockfarben) inline im jeweiligen
<style>-Block
Snake-Anpassung
snake.html wird minimal geändert:
- Inline-CSS für gemeinsame Stile auf
style.cssauslagern scores.jseinbinden- "← Menü"-Button hinzufügen
setHighscore('snake', score)bei Game Over aufrufen
Highscore-Speicherung
| localStorage-Key | Spiel |
|---|---|
hs_snake |
Snake |
hs_tetris |
Tetris |
hs_breakout |
Breakout |
hs_spaceinvaders |
Space Invaders |
Ein Highscore wird nur überschrieben wenn der neue Score höher ist.
Visueller Stil
Einheitliches Navy/Teal-Theme, abgeleitet vom bestehenden Snake-Design:
- Background:
#1a1a2e - Akzentfarbe:
#4ecca3 - Text:
#e0e0e0 - Sekundärtext:
#a0a0c0 - Schrift:
'Courier New', monospace - Canvas/Kachel-Border:
2px solid #4ecca3, Glow viabox-shadow
Jedes Spiel behält seine eigenen Spielmechanik-spezifischen Farben (z.B. Tetris-Blockfarben), aber das Rahmenlayout (HUD, Overlay, Menübutton) ist identisch.
Nicht im Scope
- Sound / Musik
- Mobile-Touch-Steuerung
- Globale Ranglisten / Server
- Animierte Übergänge zwischen Spielen
- Schwierigkeitsstufen