Ein Coding-Dojo: Du baust ein „Wer ist dieses Pokémon?"-Spiel mit der PokéAPI.
Ziel der Session ist nicht das perfekte Spiel, sondern ein vorführbares Ergebnis am Ende.
Baue ein Spiel, das
- ein zufälliges Pokémon auswählt,
- es als Silhouette anzeigt (oder als gleichwertiges Äquivalent — siehe Konsolen-Modus),
- den Namen vom Spieler entgegennimmt,
- das Pokémon bei korrektem Tipp oder auf Anforderung auflöst.
Wie du das umsetzt, ist deine Sache.
Wähle einen der folgenden Stacks. Andere Frameworks oder Sprachen sind nicht zugelassen.
| Stack | Eignung |
|---|---|
| HTML + CSS (+ Vanilla JS) | Schnellster Weg zu einem lauffähigen Ergebnis |
| Angular | Komponenten, Routing, Signals |
| .NET + WPF | Desktop-UI mit nativer Bildverarbeitung |
| .NET-Konsolenanwendung | Reduziert, konzeptionell anspruchsvoller |
| .NET-Backend (ASP.NET) + eines der obigen Frontends | Wenn du eine Proxy- oder Caching-Schicht willst |
Nicht zugelassen: React, Vue, Svelte, Blazor, MAUI oder andere UI-Frameworks. CSS-Bibliotheken wie Bootstrap, Tailwind oder Material sind erlaubt.
Base-URL: https://pokeapi.co/api/v2/
Keine Authentifizierung nötig, CORS aktiviert.
Einstiegs-Endpoints (vollständige Referenz in den PokéAPI-Docs):
GET /pokemon/{id-or-name} Stats, Typen, Sprites
GET /pokemon-species/{id} Pokédex-Text, Generation, Evolution
GET /generation/{id} Pokémon nach Generation
IDs 1 bis 1025 decken die aktuellen Hauptserien-Pokémon ab.
Der Response von /pokemon/{id} enthält ein sprites-Objekt mit mehreren Bild-URLs, z. B.:
sprites.front_default
sprites.other["official-artwork"].front_default
sprites.other.home.front_default
Welche Quelle für dein Spiel passt, ist Teil der Designentscheidung. Eine vollständige Übersicht zeigt der Beispiel-Response für Pikachu.
Eine Konsolenanwendung kann keine Bilder anzeigen. Wenn du diesen Pfad wählst, musst du den Begriff „Silhouette" fürs Terminal selbst definieren. Diese Definition ist Teil der Aufgabe.
Bereiche, in denen erfahrungsgemäss Zeit verloren geht — ohne Lösungen:
- Einige Pokémon-Namen enthalten ungewöhnliche Zeichen. Direkter String-Vergleich reicht nicht.
- Nicht jedes Pokémon liefert unter jeder Sprite-URL ein Bild. Einige Felder sind
null. - Die PokéAPI hat Rate-Limits. Häufige Anfragen während der Entwicklung können sich auswirken.
fetch(JS) undHttpClient(.NET) arbeiten asynchron. Den UI-Thread nicht blockieren.
Du bist fertig, sobald
- ein zufälliges Pokémon über die API geladen wird,
- dessen Silhouette (oder das Konsolen-Äquivalent) angezeigt wird,
- eine Eingabe entgegengenommen wird,
- der Tipp gegen den tatsächlichen Namen geprüft wird,
- das Pokémon bei korrektem Tipp aufgelöst wird.
Alles darüber hinaus ist Bonus.
- Punktestand und Streak-Tracking
- Timer
- Schwierigkeitsstufen (z. B. nur Generation 1, alle Generationen)
- Multiple-Choice-Modus
- Schrittweise aufgedeckte Hinweise
- Stat-Anzeige nach Auflösung
- Zwei-Spieler-Modus
- Cry-Wiedergabe
- Auflösungs-Animation
- Nur ein Stack pro Teilnehmer.
- Default-Timebox: 90 Minuten fürs MVP, danach Zeit für Erweiterungen.
- Demo am Ende der Session — unabhängig vom Fertigstellungsgrad.