Merge: update README for current project state

This commit is contained in:
Maxiwere45 2026-06-23 12:00:50 +02:00
commit 409ab9c1dd

View File

@ -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 `<id>` par le numéro du Pokémon) :
- normal : `.../sprites/<id>/regular.png`
- shiny : `.../sprites/<id>/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)