Skip to content

Etschmia/pacman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

22 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฎ Pac-Man Clone - Neon Edition

Ein moderner Pac-Man-Klon mit Neon-Grafik, entwickelt mit Phaser 3 und TypeScript.

Pac-Man TypeScript Phaser License

๐ŸŒŸ Features

  • 8 Level mit steigendem Schwierigkeitsgrad
  • 5 verschiedene Maze-Layouts fรผr Abwechslung
  • 4 Geister mit einzigartigen KI-Persรถnlichkeiten:
    • ๐Ÿ”ด Blinky - Verfolgt direkt
    • ๐Ÿฉท Pinky - Lauert voraus
    • ๐Ÿฉต Inky - Komplexe Flankenmanรถver
    • ๐ŸŸ  Clyde - Schรผchtern (wechselt zwischen Jagd und Flucht)
  • Modernes Neon-Design mit glatten Animationen
  • Responsive Design fรผr Desktop und Mobile
  • Touch-Steuerung mit Swipe-Gesten
  • Highscore-System mit LocalStorage-Persistenz
  • Sound-Effekte (stummschaltbar)
  • Pause-Funktion

๐Ÿš€ Schnellstart

Voraussetzungen

  • Node.js 18+
  • npm 9+

Installation

# Repository klonen
git clone <repository-url>
cd pacman-clone

# Abhรคngigkeiten installieren
npm install

# Entwicklungsserver starten
npm run dev

Das Spiel ist dann unter http://localhost:5173 erreichbar.

Build fรผr Produktion

npm run build

Die Build-Dateien werden im dist/ Ordner erstellt.

๐ŸŽฎ Steuerung

Desktop (Tastatur)

Taste Aktion
โ†‘ / W Nach oben
โ†“ / S Nach unten
โ† / A Nach links
โ†’ / D Nach rechts
ESC Pause
Q Beenden (im Pause-Menรผ)

Mobile (Touch)

  • Swipe in die gewรผnschte Richtung
  • Tap zum Starten/Fortsetzen

๐Ÿ—๏ธ Projektstruktur

src/
โ”œโ”€โ”€ audio/              # Audio-System
โ”‚   โ”œโ”€โ”€ AudioManager.ts # Sound-Verwaltung
โ”‚   โ””โ”€โ”€ audio-generator.ts
โ”œโ”€โ”€ entities/           # Spielfiguren
โ”‚   โ”œโ”€โ”€ PacMan.ts      # Pac-Man Entity
โ”‚   โ””โ”€โ”€ Ghost.ts       # Geister mit KI
โ”œโ”€โ”€ game/              # Spiellogik
โ”‚   โ”œโ”€โ”€ ScoreManager.ts # Punkteverwaltung
โ”‚   โ”œโ”€โ”€ LivesManager.ts # Leben-System
โ”‚   โ””โ”€โ”€ LevelManager.ts # Level-Progression
โ”œโ”€โ”€ input/             # Eingabe-System
โ”‚   โ””โ”€โ”€ InputManager.ts # Tastatur & Touch
โ”œโ”€โ”€ maze/              # Labyrinth-System
โ”‚   โ”œโ”€โ”€ Maze.ts        # Maze-Klasse
โ”‚   โ”œโ”€โ”€ maze-loader.ts # Layout-Laden
โ”‚   โ”œโ”€โ”€ maze-validation.ts
โ”‚   โ””โ”€โ”€ layouts/       # 5 Maze-Layouts
โ”œโ”€โ”€ persistence/       # Datenpersistenz
โ”‚   โ”œโ”€โ”€ serialization.ts
โ”‚   โ””โ”€โ”€ storage.ts     # LocalStorage
โ”œโ”€โ”€ responsive/        # Responsive Design
โ”‚   โ””โ”€โ”€ ResponsiveManager.ts
โ”œโ”€โ”€ scenes/            # Phaser Scenes
โ”‚   โ”œโ”€โ”€ BootScene.ts   # Asset-Loading
โ”‚   โ”œโ”€โ”€ MenuScene.ts   # Hauptmenรผ
โ”‚   โ”œโ”€โ”€ GameScene.ts   # Hauptspiel
โ”‚   โ”œโ”€โ”€ GameOverScene.ts
โ”‚   โ””โ”€โ”€ WinScene.ts
โ”œโ”€โ”€ types/             # TypeScript Typen
โ”‚   โ”œโ”€โ”€ enums.ts       # Enumerationen
โ”‚   โ””โ”€โ”€ interfaces.ts  # Interfaces
โ”œโ”€โ”€ ui/                # UI-Komponenten
โ”‚   โ”œโ”€โ”€ ScoreDisplay.ts
โ”‚   โ”œโ”€โ”€ LivesDisplay.ts
โ”‚   โ”œโ”€โ”€ LevelIndicator.ts
โ”‚   โ””โ”€โ”€ FrightenedTimer.ts
โ””โ”€โ”€ main.ts            # Einstiegspunkt

๐Ÿงช Tests

Das Projekt verwendet Vitest fรผr Unit-Tests und fast-check fรผr Property-Based-Tests.

# Alle Tests ausfรผhren
npm test

# Tests im Watch-Modus
npm run test:watch

# Coverage-Report
npm run test:coverage

Test-Statistiken

  • 396 Tests insgesamt
  • 24 Test-Dateien
  • Unit-Tests und Property-Based-Tests

๐ŸŽฏ Spielmechanik

Punktesystem

Aktion Punkte
Pellet sammeln 10
Power-Pellet sammeln 50
1. Geist fressen 200
2. Geist fressen 400
3. Geist fressen 800
4. Geist fressen 1600

Frucht-System

  • 7 Fruchtarten: Kirsche (50), Himbeere (100), Pfirsich (150), Apfel (200), Banane (250), Weintrauben (350), Melone (450)
  • Zufรคlliges Erscheinen: Pro Level erscheinen zufรคllig 2-7 Frรผchte in Abstรคnden von 15-30 Sekunden.
  • Lebensdauer: Jede Frucht hat eine Lebensdauer von 8-12 Sekunden und blinkt, bevor sie verschwindet.

Level-Progression

Level Geister-Geschwindigkeit Frightened-Dauer
1 75 6s
2 85 5s
3 95 4s
4 95 3s
5 100 2s
6 100 2s
7 105 1s
8 110 0.5s

Geister-Modi

  1. Chase - Geister verfolgen Pac-Man
  2. Scatter - Geister ziehen sich in ihre Ecken zurรผck
  3. Frightened - Geister fliehen (nach Power-Pellet)
  4. Eaten - Geister kehren zum Ghost House zurรผck

๐Ÿ› ๏ธ Technologie-Stack

๐Ÿ“ Architektur

Das Projekt folgt einer komponentenbasierten Architektur:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        Phaser Game Instance                      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  BootScene โ†’ MenuScene โ†’ GameScene โ†” GameOverScene/WinScene     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                         Game Scene                               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  Entity Layer: PacMan, Blinky, Pinky, Inky, Clyde        โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  Maze Layer: Walls, Pellets, Tunnels, Ghost House        โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  UI Layer: Score, Lives, Level, Timer                    โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Manager Systems: Input, Audio, Score, Level, Responsive        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŽจ Design-Prinzipien

  1. Composition over Inheritance - Spielobjekte durch Komposition
  2. State Machine Pattern - Fรผr Geister-KI und Spielzustรคnde
  3. Event-Driven Communication - Lose Kopplung zwischen Komponenten
  4. Data-Driven Design - Level-Konfiguration รผber Daten

๐Ÿ“ Entwicklung

Neue Maze-Layouts hinzufรผgen

  1. Erstelle eine neue Datei in src/maze/layouts/
  2. Definiere das Grid mit CellType-Werten
  3. Exportiere in src/maze/layouts/index.ts

Neue Geister-Persรถnlichkeit

  1. Fรผge neuen GhostType in src/types/enums.ts hinzu
  2. Implementiere Targeting-Logik in Ghost.ts
  3. Definiere Farbe und Scatter-Ziel

๐Ÿ› Bekannte Einschrรคnkungen

  • Audio-Dateien mรผssen manuell in public/assets/audio/ hinzugefรผgt werden
  • Web Audio API wird fรผr Sound benรถtigt (Fallback auf stumm)

๐Ÿ“„ Lizenz

MIT License - siehe LICENSE fรผr Details.

๐Ÿ™ Credits

  • Inspiriert vom Original Pac-Man (1980) von Namco
  • Entwickelt mit Phaser 3
  • Icons und Design: Eigene Kreation im Neon-Stil

Viel SpaรŸ beim Spielen! ๐ŸŽฎ

About

Das geniale Spiel der 80er. Diesmal von mir.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published