THE
TYPING DEADTYPING DEADTYPING DEAD
Dokumentation
Spielübersicht
The Typing Dead ist ein Typing-Game mit einem einzigartigen Twist. Jedes Wort ist eine Kugel in deinem Magazin, und jeder Tippfehler kostet dich wertvolle Zeit. Tippe schnell und präzise, um die höchstmögliche Punktzahl zu erreichen.
Spielfunktionen
- Dynamische Schwierigkeitsgrade mit verschiedenen Zeitlimits und Multiplikatoren
- Sound-Effekte für Treffer, Nachladen und Fehler
- Hintergrundmusik mit Ein/Aus-Funktion
- Highscore-System mit lokaler Speicherung
- Mehrsprachige Unterstützung (Deutsch/Englisch/Türkisch)
- Dark Mode / Light Mode
- Echtzeit-WPM und Genauigkeitsberechnung
- Echtzeit-Feedback für Tastatureingaben
- Visuelles Feedback im Resident Evil Stil
- Zombie-Timer mit visueller Fortschrittsanzeige
- Leben-System mit visueller Anzeige
- Debug-Modus für detaillierte Performance-Analyse
Neue Features
- Echtzeit-Feedback:
- Farbkodierung für korrekte/falsche Eingaben
- Animationen für Tastatureingaben
- Visueller Fortschritt im aktuellen Wort
- Verbessertes Audio-System:
- Persistente Musikeinstellungen
- Automatische Wiederaufnahme nach Pause
- Lautstärkeanpassung für verschiedene Sounds
- Erweiterte Sprachunterstützung:
- Türkische Lokalisierung hinzugefügt
- Dynamischer Sprachwechsel ohne Neuladen
Schwierigkeitsgrade
Tutorial
- Zeitlimit: 60 Sekunden
- Zeitstrafe: -1 Sekunden
- Punktemultiplikator: 0.875x
- Erste Schritte im Labor
Leicht
- Zeitlimit: 40 Sekunden
- Zeitstrafe: -2 Sekunden
- Punktemultiplikator: 1.425x
- Perfekt für Anfänger. Mehr Zeit, weniger Stress.
Normal
- Zeitlimit: 30 Sekunden
- Zeitstrafe: -3 Sekunden
- Punktemultiplikator: 1.7x
- Die klassische Herausforderung.
Schwer
- Zeitlimit: 20 Sekunden
- Zeitstrafe: -5 Sekunden
- Punktemultiplikator: 2.2249999999999996x
- Für erfahrene Überlebende. Weniger Zeit, höhere Belohnung.
Schwer
- Zeitlimit: 15 Sekunden
- Zeitstrafe: -8 Sekunden
- Punktemultiplikator: 2.3x
- Nur die Besten überleben. Maximale Punktzahl möglich.
Leicht
- Zeitlimit: 45 Sekunden
- Zeitstrafe: -4 Sekunden
- Punktemultiplikator: 1.425x
- Eine Test-Karte zum Überprüfen der Anzeige.
Schwer
- Zeitlimit: 25 Sekunden
- Zeitstrafe: -7 Sekunden
- Punktemultiplikator: 2.125x
- Eine brillante, aber von Schuldgefühlen geplagte Wissenschaftlerin, die die Verhaltensmuster der Infizierten studiert. Ihre Fort-12 ist präzise und tödlich effizient.
Normal
- Zeitlimit: 28 Sekunden
- Zeitstrafe: -5 Sekunden
- Punktemultiplikator: 1.95x
- Eine brillante Schülerin, die ihr Wissen nutzt, um Überlebensstrategien zu entwickeln und das Verhalten der Zombies zu analysieren.
Schwer
- Zeitlimit: 25 Sekunden
- Zeitstrafe: -6 Sekunden
- Punktemultiplikator: 2.25x
- Ein hochrangiger Bushi-Krieger, der die Steam Gun mit tödlicher Präzision einsetzt.
Schwer
- Zeitlimit: 35 Sekunden
- Zeitstrafe: -8 Sekunden
- Punktemultiplikator: 2.375x
- Ein brillanter Wissenschaftler, der seine Armbrust mit taktischer Präzision einsetzt.
Schwer
- Zeitlimit: 30 Sekunden
- Zeitstrafe: -7 Sekunden
- Punktemultiplikator: 2.4x
- Ein brillanter Virologe, der mit seiner M4A1 Sturmgewehr die Infizierten studiert.
Punktesystem
Die Punktzahl wird basierend auf mehreren Faktoren berechnet:
- Grundpunkte pro korrektem Wort
- WPM (Words Per Minute) Bonus
- Genauigkeits-Bonus
- Schwierigkeitsgrad-Multiplikator
Tippfehler führen zu Zeitstrafen, die je nach Schwierigkeitsgrad variieren.
Technische Details
Frontend Stack:
- Next.js 13 mit App Router
- React mit Client-side Hooks
- Tailwind CSS für Styling
- TypeScript für Type Safety
Komponenten:
- Game Components (GameControls, GameInput, GameTimer, etc.)
- UI Components (NavigationWrapper, NotebookMenu, SettingsOverlay)
- Debug Tools (DebugBox, ScoreToast)
- Modal Dialogs (HighscoreModal)
Custom Hooks:
- useLanguage - Mehrsprachigkeit
- useAudio - Sound Management
- useTheme - Dark/Light Mode
- usePlatform - Geräte-Erkennung
- useGameControl - Spiellogik
- useInputHandling - Tastatureingaben
Features:
- Zentrales Navigation System
- Responsive Design
- Lokale Speicherung für Highscores
- Audio-System mit verschiedenen Soundeffekten
- Mehrsprachige Unterstützung (DE/EN/TR)
Performance-Tipps
- Beginne mit dem leichten Schwierigkeitsgrad, um dich mit dem Timing vertraut zu machen
- Achte auf die Soundeffekte - sie geben wichtiges Feedback
- Konzentriere dich auf Genauigkeit vor Geschwindigkeit
- Nutze die Pause-Funktion (ESC), wenn du eine Pause brauchst
- Beobachte deine WPM und Genauigkeit in der Debug-Anzeige
Design System
Light & Dark Mode
Light Mode
Text: text-gray-800
Accent: text-orange-500
Secondary: text-gray-600
Dark Mode
Text: text-gray-200
Accent: text-orange-400
Secondary: text-gray-400
Typografie
Game Title
font-title text-4xl text-orange-500
Section Heading
text-2xl font-title
Standard game text with base size
text-base
Small UI text for scores and stats
text-sm text-gray-600 dark:text-gray-400
Komponenten
Buttons
bg-orange-500 hover:bg-orange-600 text-white px-4 py-2 rounded transition-colors
Game Input
bg-white dark:bg-gray-800 border-2 border-gray-300 dark:border-gray-600 focus:border-orange-500
Score Display
Score: 1000
px-3 py-1 bg-orange-500 text-white rounded-full
Responsive Design
Breakpoint | Class | Dimension | Beispiel |
---|---|---|---|
Mobile (Default) | - | < 640px | text-sm p-4 |
Tablet | sm: | ≥ 640px | sm:text-base sm:p-6 |
Desktop | md: | ≥ 768px | md:text-lg md:p-8 |
Large Desktop | lg: | ≥ 1024px | lg:text-xl lg:p-12 |
Code-Beispiele
Game Component
import { useState } from 'react';
import { useGameControl } from '../hooks/useGameControl';
export function GameComponent() {
const [score, setScore] = useState(0);
const {
startGame,
pauseGame,
gameState
} = useGameControl();
return (
<div className="game-container">
<div className="score-display">
Score: {score}
</div>
{/* Game controls */}
</div>
);
}
Custom Hook
import { useState, useEffect } from 'react';
export function useGameTimer(initialTime: number) {
const [timeLeft, setTimeLeft] = useState(initialTime);
const [isRunning, setIsRunning] = useState(false);
useEffect(() => {
let timer: NodeJS.Timeout;
if (isRunning && timeLeft > 0) {
timer = setInterval(() => {
setTimeLeft(prev => prev - 1);
}, 1000);
}
return () => clearInterval(timer);
}, [isRunning, timeLeft]);
return { timeLeft, isRunning, setIsRunning };
}
Spielsteuerung
Spielsteuerung
- Tippe die angezeigten Wörter so schnell und genau wie möglich
- Jeder Tippfehler kostet Zeit und Punkte
- Drücke ESC um das Spiel zu pausieren/fortzusetzen
- Das Spiel endet wenn:
- Die Zeit abläuft
- Du keine Leben mehr hast
- Während der Pause:
- Der Timer wird angehalten
- Die Eingabe ist deaktiviert
- Ein Overlay zeigt den Pause-Status
- Nutze die Debug-Anzeige um deine Performance zu überwachen