No description
  • JavaScript 61%
  • CSS 15.7%
  • HTML 14.9%
  • Python 8.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Janik Dietz 25fc6fb345
feat: add fullscreen mode and extract shared game engine
- Add new fullscreen game mode playable in a dedicated browser tab
- Extract shared game logic into `engine.js` to be used by both popup and fullscreen modes
- Implement self-protection to prevent closing the game tab or popup tab
- Update documentation and bump version to 1.1.0
2026-08-04 08:02:53 +02:00
icons feat: initialize Tab Shooter Chrome extension game 2026-08-04 07:13:45 +02:00
.gitignore feat: initialize Tab Shooter Chrome extension game 2026-08-04 07:13:45 +02:00
background.js feat: initialize Tab Shooter Chrome extension game 2026-08-04 07:13:45 +02:00
engine.js feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
game.css feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
game.html feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
game.js feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
generate_icons.py feat: initialize Tab Shooter Chrome extension game 2026-08-04 07:13:45 +02:00
manifest.json feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
popup.css feat: initialize Tab Shooter Chrome extension game 2026-08-04 07:13:45 +02:00
popup.html feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
popup.js feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00
README.md feat: add fullscreen mode and extract shared game engine 2026-08-04 08:02:53 +02:00

🚀 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

Zwei Spielmodi

Modus Wie
Popup (kompakt, 420×600) Toolbar-Icon klicken → SPIEL STARTEN
Vollbild (eigener Tab, bis 900×680) Toolbar-Icon klicken → 🖥️ Im Vollbild spielen

Im Vollbild-Modus öffnet sich das Spiel in einem eigenen Tab. Dieser Tab ist geschützt – er taucht nie als Ziel auf und lässt sich nicht abschießen. Perfekt, wenn du mehr Platz und eine bessere Übersicht willst.

Ablauf

  1. Modus wählen & Scope wählen: Aktuelles Fenster oder Alle Fenster.
  2. SPIEL STARTEN drücken.
  3. Deine echten Tabs erscheinen als gegnerische Raumschiffe (mit echtem Favicon + Titel).
  4. Schießen — jeder Tab, den du triffst, wird in Chrome wirklich geschlossen.

🛡️ Selbstschutz: Folgende Tabs sind nie Ziele:

  • der Tab, der das Popup trägt (sonst würde sich das Spiel selbst beenden)
  • der Game-Tab im Vollbild-Modus
  • alle internen Chrome-Seiten (chrome://, devtools://, …)
  • alle Seiten dieser Extension selbst

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
├── engine.js            # Geteilte Game-Engine (Klasse TabShooterGame)
├── popup.html           # Popup-UI (kompakt)
├── popup.css            # Shared Space-Theme Styling
├── popup.js             # Popup-Controller (nutzt engine.js)
├── game.html            # Vollbild-UI (eigener Tab)
├── game.css             # Vollbild-Overrides
├── game.js              # Vollbild-Controller (nutzt engine.js)
├── 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):

python generate_icons.py

Das Skript nutzt nur die Python-Standardbibliothek (zlib + struct) — keine PIL nötig.


Viel Spaß beim Aufräumen! 🛸💥