From d13f8d883449bec51d18ef81322f928b4d732c78 Mon Sep 17 00:00:00 2001 From: Maxiwere45 Date: Tue, 23 Jun 2026 12:00:50 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20rewrite=20README=20to=20reflect=20Pok?= =?UTF-8?q?=C3=A9guess=20(game,=20architecture,=20stack)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- README.md | 98 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 74 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 2372cfe..42be58a 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,87 @@ -# pokedex +# Pokéguess -Projet d'exemple d'application Flutter pour les cours de bootcamp Ynov 2023. -Ce projet contient un début de pokédex, une application listant des pokémons et permettant d'en voir les détails. +> 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://github.com/Efilown/pokedex-example.git -cd pokedex-example +git clone https://gitea.losvernos.com/guillaumev/quel-est-ce-pokemon.git +cd quel-est-ce-pokemon flutter pub get ``` -Ensuite, ouvrir le projet avec un IDE (tel que vscode) et le lancer sur le device de votre choix (téléphone, émulateur ou navigateur). +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 -Pour les images (remplacer par l'id du pokémon désiré): +- [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) -- [Sprite normal](https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/official-artwork/6.png) -- [Sprite shiny](https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/official-artwork/shiny/6.png) +## Pistes d'amélioration -Autres liens - -- [l'API pour récupérer les informations](https://pokeapi.co/api/v2/pokemon/6) -- [Les cris de bataille](https://pokemoncries.com/cries/1.mp3) -- [La documentation du paquet SQFlite](https://pub.dev/packages/sqflite) -- [La documentation du paquet HTTP](https://pub.dev/packages/http) - -## Améliorations possible - -- Mettre un lecteur audio pour écouter les cris des pokémons -- Rajouter la traduction (en fonction de la langue de l'application ? ☺) -- Compléter la vue détail avec des informations tirées de l'API -- Faire une vue "mon équipe" contenant 6 pokémons choisis en rajoutant un bouton "ajouter à mon équipe" sur la vue détail. - -Amusez-vous ! +- Lecteur audio pour écouter le cri du Pokémon +- Internationalisation (FR / EN) +- Vue « mon équipe » (6 Pokémon choisis)