feat: initialize Tab Shooter Chrome extension game

This commit is contained in:
Janik Dietz 2026-08-04 07:13:45 +02:00
commit 0f566b02ac
Signed by: Tronax
SSH key fingerprint: SHA256:2pKKXDZucWvaF/GzXNz0FY53EAO1YDLN80bqS+TTz/o
11 changed files with 1614 additions and 0 deletions

96
README.md Normal file
View file

@ -0,0 +1,96 @@
# 🚀 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! 🛸💥