# 🏆 EXIT-Game Highscore & Sammlungs-Manager Ein modernes, PHP-basiertes Dashboard zur Verwaltung von EXIT-Spielen, Adventure Games und anderen Rätselspielen. Tracke Highscores, verwalte den Besitzstatus deiner Teams und behalte den Überblick über deine gesamte Sammlung. --- ## 🤖 Über dieses Projekt Dieses gesamte Projekt wurde zu **100% von Gemini (KI-Modell von Google)** im Rahmen eines interaktiven Pair-Programming-Prozesses generiert. **Entwicklungs-Philosophie:** - **Code-Struktur:** Trennung von Logik und Konfiguration (Git-ready). - **Design:** Modernes Dark-Mode UI mit Fokus auf Usability (Swiper.js Integration). - **Sicherheit:** Passwortgeschützter Admin-Bereich und Prepared Statements (PDO). --- ## 🚀 Features - **Interaktives Dashboard:** Swiper-Carousel mit den neuesten Spielen und Highscores. - **Bestandsverwaltung:** Matrix-Ansicht (`besitz.php`), um zu tracken, welches Team welches Spiel besitzt, nicht besitzt oder bereits verkauft hat. - **Admin-Panel:** Passwortgeschützter Bereich zum Anlegen von Spielen, EAN-basiertem Bild-Download und Verwaltung von Spielertypen. - **Gesamtliste:** Sortierbare und filterbare Übersicht aller Spiele inklusive Bestwerten und Besitzstatus. - **Automatisierung:** Automatischer Download von Cover-Bildern über bereitgestellte URLs. --- ## 🛠 Installation 1. **Datenbank vorbereiten:** Erstelle eine MySQL-Datenbank und führe den folgenden SQL-Befehl aus, um die Tabellenstruktur anzulegen: ```sql CREATE TABLE game_typen (id INT AUTO_INCREMENT PRIMARY KEY, bezeichnung VARCHAR(100)); CREATE TABLE spiele (id INT AUTO_INCREMENT PRIMARY KEY, titel VARCHAR(255), typ_id INT, ean VARCHAR(50), level VARCHAR(50), bild_url VARCHAR(255), FOREIGN KEY (typ_id) REFERENCES game_typen(id)); CREATE TABLE spieler (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100)); CREATE TABLE scores (id INT AUTO_INCREMENT PRIMARY KEY, spieler_id INT, spiel_id INT, zeit INT, hilfe INT, sterne INT, FOREIGN KEY (spieler_id) REFERENCES spieler(id), FOREIGN KEY (spiel_id) REFERENCES spiele(id)); CREATE TABLE besitzstatus (spieler_id INT, spiel_id INT, status ENUM('besitzt', 'nicht besitzt', 'verkauft') DEFAULT 'nicht besitzt', PRIMARY KEY (spieler_id, spiel_id), FOREIGN KEY (spieler_id) REFERENCES spieler(id) ON DELETE CASCADE, FOREIGN KEY (spiel_id) REFERENCES spiele(id) ON DELETE CASCADE);