Add missing providers (locale, theme, genFilter, caughtCount), all 6 pages, full widget inventory, core/l10n layers, and game mechanics (hints, skips, shiny, bonuses, bilingual input, gen filter). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pokéguess
Devine le Pokémon à partir de sa silhouette !
Application mobile Flutter développée dans le cadre du cours DEV MOBILE (Ynov). À l'origine basée sur l'exemple de pokédex du bootcamp, le projet est devenu un jeu complet « Who's that Pokémon ? » adossé à un pokédex.
Fonctionnalités
- Jeu de devinette : une silhouette de Pokémon à identifier, avec un système de vies, d'indices et de passes (skips), des Pokémon shiny (bonus de points), un score courant et un meilleur score persistant.
- Filtre par génération : on choisit les générations (I à IX) dont les Pokémon peuvent tomber pendant le jeu.
- Pokédex : liste nationale des Pokémon avec filtre
ALL/CAUGHTet compteur de progression (découverts / total). - Fiche détaillée : statistiques de base, description, types, bascule normal/shiny.
- Page Système : statistiques globales (attrapés, vus, complétion, meilleur score) et choix de la palette de couleurs de l'app.
- Offline-first : les données sont mises en cache localement (SQLite) ; l'app reste utilisable hors-ligne une fois la synchronisation initiale faite.
Architecture
Le projet suit une Clean Architecture allégée en trois couches, avec Riverpod pour la gestion d'état :
lib/
├── core/ # constantes, logger (Dart pur)
├── domain/ # entités, interface de repository, moteur de jeu (Dart pur, testé)
├── data/ # DTO de parsing, datasources SQLite/HTTP, implémentation du repository
└── presentation/ # providers Riverpod, pages et widgets (chacun < 150 lignes)
La règle de dépendance pointe vers l'intérieur : domain ne dépend de rien,
data et presentation dépendent de domain. Détails dans
docs/ARCHITECTURE.md.
Stack technique
- Flutter / Dart
- flutter_riverpod — gestion d'état
- sqflite — persistance locale (SQLite)
- http — appels réseau
- shared_preferences — préférences (meilleur score, palette)
- google_fonts — police rétro
Installation
git clone https://gitea.losvernos.com/guillaumev/quel-est-ce-pokemon.git
cd quel-est-ce-pokemon
flutter pub get
Puis lancer l'application sur le device de votre choix (téléphone, émulateur ou navigateur) :
flutter run
Tests
flutter test
Les tests couvrent le moteur de jeu (GameEngine), le parsing (PokemonDto) et le
repository.
Ressources utilisées
- API Tyradex — données des Pokémon (français)
- Sprites officiels via le dépôt TyraDex/sprites
(remplacer
<id>par le numéro du Pokémon) :- normal :
.../sprites/<id>/regular.png - shiny :
.../sprites/<id>/shiny.png
- normal :
- Cris des Pokémon
Languages
Dart
44%
HTML
40.8%
C++
7.3%
CMake
5.8%
Ruby
0.9%
Other
1.1%