# 🚀 Tab Shooter A small Chrome browser game that turns your open tabs into targets. Pilot a spaceship, blast the tabs you no longer need, and they really get closed. > Für alle, die zu viele Tabs offen haben. Schieß sie ab — und sie verschwinden wirklich. --- ## 📦 Installation (in Chrome laden) 1. Chrome öffnen → `chrome://extensions` aufrufen. 2. Oben rechts den **Entwicklermodus** (Developer mode) einschalten. 3. Auf **„Entpackt laden“** (Load unpacked) klicken. 4. Den Ordner `tab-shooter` auswählen. 5. Das Tab-Shooter-Icon 🚀 erscheint in der Toolbar. Anklicken → Spiel startet. > Nach Code-Änderungen in `popup.js`/`manifest.json` die Extension auf > `chrome://extensions` einfach neu laden (🔄-Button). --- ## 🎮 Spielen 1. Auf das Toolbar-Icon klicken. 2. Wählen: **Aktuelles Fenster** oder **Alle Fenster**. 3. **SPIEL STARTEN** drücken. 4. Deine echten Tabs erscheinen als gegnerische Raumschiffe (mit echtem Favicon + Titel). 5. Schießen — jeder Tab, den du triffst, wird in Chrome **wirklich geschlossen**. ### Steuerung | Aktion | Tastatur | Maus | |---|---|---| | Bewegen | `←` `→` oder `A` `D` | Maus bewegen | | Schießen | `Leertaste` | Klick (halten) | ### Features - **Echte Tabs als Gegner** – Favicon & Titel, verknüpft via Tab-ID. - **Bewegte Gegner** – manche sind „feindlich" und schießen zurück. - **Power-Ups** (zufälliger Drop): - 🔫 **Triple Shot** – drei Schüße gleichzeitig (6 s) - ⚡ **Rapid Fire** – schnellere Schussfolge (6 s) - 🛡️ **Shield** – absorbiert einen Treffer - **Score & Highscore** – gespeichert via `chrome.storage.local`. - **3 Leben**, danach Game Over mit Statistik. --- ## 🗂 Projektstruktur ``` tab-shooter/ ├── manifest.json # MV3-Manifest, Berechtigungen ├── popup.html # Overlay-UI: Start-, Spiel- & Game-Over-Screen ├── popup.css # Space-Theme Styling ├── popup.js # Game-Engine + Chrome-API-Anbindung ├── background.js # Service Worker (MV3) ├── generate_icons.py # Icon-Generator (pure stdlib, keine Abhängigkeiten) ├── README.md └── icons/ ├── icon16.png ├── icon48.png └── icon128.png ``` --- ## 🔐 Berechtigungen & Privatsphäre | Permission | Zweck | |---|---| | `tabs` | Offene Tabs lesen (Titel, Favicon, ID) und getroffene Tabs schließen. | | `favicon` | Favicons über die `_favicon`-API laden. | | `storage` | Highscore lokal speichern. | **Es werden keine Inhaltsdaten (Page content) von Tabs gelesen** — nur Titel und Favicon-URL. Tabs werden **ausschließlich dann** geschlossen, wenn sie im Spiel getroffen wurden. Der aktive Popup-Tab und interne `chrome://`-Seiten sind nie Ziele. --- ## 🛠 Icons neu generieren Falls du die Icons anpassen willst (Farben, Form in `generate_icons.py`): ```bash python generate_icons.py ``` Das Skript nutzt nur die Python-Standardbibliothek (`zlib` + `struct`) — keine PIL nötig. --- Viel Spaß beim Aufräumen! 🛸💥