2026-06-23 12:22:37 +02:00

83 lines
3.1 KiB
Markdown

# 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 `<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)