GameStore est une application console (CLI) robuste simulant une boutique de jeux vidéo en ligne. Elle permet aux utilisateurs de parcourir un catalogue, d'acheter des jeux, de gérer leur bibliothèque, de suivre leur progression et d'exporter leurs données.
Le projet met l'accent sur la programmation orientée objet, la gestion des erreurs personnalisées, la persistance des données (JSON) et la documentation technique.
- Catalogue Varié : Prise en charge de jeux Solo, Multijoueur, Indépendants et à Abonnement (MMO).
- Système d'Achat Sécurisé : Vérification du solde, contrôle des doublons (interdiction de racheter un jeu possédé).
- Politique de Prix : Architecture souple (Pattern Strategy) pour gérer les promotions et les prix dynamiques.
- Bibliothèque : Liste des jeux possédés avec temps de jeu et progression.
- Historique : Trace complète des achats et activités.
- Progression : Mise à jour du pourcentage d'avancement d'un jeu.
- Remboursement : Système automatisé (refus si > 2h de jeu ou achat trop ancien).
- Sauvegarde JSON : État complet (utilisateurs + catalogue) sauvegardé automatiquement à la fermeture (
donnees.json). - Log & Monitoring : Système de logs configuré (
AppLogger) pour le débogage. - Exceptions Métier : Gestion fine des erreurs (
AchatInterditException,SoldeInsuffisantException, etc.). - Export HTML : Génération d'un récapitulatif visuel de la bibliothèque utilisateur.
Le projet respecte une architecture en couches :
fr.esiea.gamestore.model: Les objets métiers (POJO). Utilisation de l'héritage (Jeu->JeuSolo,JeuMulti) et des interfaces (IEnLigne).fr.esiea.gamestore.service: La logique applicative (GamePlatformService). Utilisation du pattern Facade pour centraliser les actions.fr.esiea.gamestore.storage: Gestion de la persistance avec la bibliothèque Jackson.fr.esiea.gamestore.exception: Hiérarchie d'exceptions personnalisées héritant deApplicationException.fr.esiea.gamestore.main: Point d'entrée avec boucle REPL (Read-Eval-Print Loop) pour l'interaction console.
L'application se pilote via des arguments en ligne de commande. Une fois lancée, utilisez les commandes suivantes :
| Commande | Description | Exemple |
|---|---|---|
--c |
Créer un nouveau compte utilisateur | --c (suivre les instructions) |
--i |
Se connecter (Identification) | --i |
--g |
Afficher le catalogue des jeux (Games) | --g |
--b |
Acheter un jeu (Buy) via son UUID | --b 123e4567-e89b... |
--a |
Afficher ma bibliothèque (Assets) | --a |
--p |
Mettre à jour la progression d'un jeu | --p 123e4567-e89b... 50 (50%) |
--r |
Demander un remboursement | --r "Titre du Jeu" |
--trace |
Voir l'historique d'activité | --trace |
--export |
[Nouveau] Exporter ma bibliothèque en HTML | --export |
--exit |
Sauvegarder et quitter | --exit |
- Java JDK 17 ou supérieur.
- **gestion des dépendances via IntelliJ
- Bibliothèque Jackson (déjà incluse dans les dépendances du projet).
- Ouvrir le projet.
- Lancer la classe
fr.esiea.gamestore.main.MainLauncher.
La Javadoc complète est disponible :
Ouvrir doc/index.html.
Projet réalisé dans le cadre du Challenge Technique - Pro du Jeu.
- Cléo SITAL
- Stéphanie MANGOUA