feat: initialize Tab Shooter Chrome extension game
This commit is contained in:
commit
0f566b02ac
11 changed files with 1614 additions and 0 deletions
96
README.md
Normal file
96
README.md
Normal 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! 🛸💥
|
||||
Loading…
Add table
Add a link
Reference in a new issue