# 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` / `CAUGHT` et 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 : ```text 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](docs/ARCHITECTURE.md). ## Stack technique - [Flutter](https://flutter.dev) / Dart - [flutter_riverpod](https://pub.dev/packages/flutter_riverpod) — gestion d'état - [sqflite](https://pub.dev/packages/sqflite) — persistance locale (SQLite) - [http](https://pub.dev/packages/http) — appels réseau - [shared_preferences](https://pub.dev/packages/shared_preferences) — préférences (meilleur score, palette) - [google_fonts](https://pub.dev/packages/google_fonts) — police rétro ## Installation ```sh 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) : ```sh flutter run ``` ## Tests ```sh flutter test ``` Les tests couvrent le moteur de jeu (`GameEngine`), le parsing (`PokemonDto`) et le repository. ## Ressources utilisées - [API Tyradex](https://tyradex.app) — données des Pokémon (français) - Sprites officiels via le dépôt [TyraDex/sprites](https://raw.githubusercontent.com/Yarkis01/TyraDex/images/sprites/) (remplacer `` par le numéro du Pokémon) : - normal : `.../sprites//regular.png` - shiny : `.../sprites//shiny.png` - [Cris des Pokémon](https://pokemoncries.com/cries/1.mp3)