Merge: update README for current project state
This commit is contained in:
commit
409ab9c1dd
98
README.md
98
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 `<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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user