Tamagochi
Projet “Tamagotchi Terminal”
Contexte
Tu adoptes une créature virtuelle qui vit dans le terminal. Elle a faim, se fatigue, s’ennuie. À toi d’analyser le besoin, de modéliser proprement et de coder une version jouable en PHP. Pas d’ésotérisme : on vise simple, lisible, fun.
Objectifs d’apprentissage
-
Transformer un texte en diagramme de classes UML clair.
-
Concevoir une boucle de jeu avec un temps simulé.
-
Gérer une petite persistance sur disque pour reprendre une partie.
-
Produire une interface CLI minimale et compréhensible.
Fonctionnalités attendues
-
Caractéristiques
-
La créature possède au moins 3 valeurs numériques (ex. faim, énergie, amusement).
-
Les valeurs doivent rester dans une plage raisonnable (par ex. 0–100).
-
-
Temps simulé (tick)
-
À chaque tour/tick, les valeurs évoluent (au moins une monte, au moins une descend).
-
Définir au moins un état final qui met fin à la partie (ex. “game over” si faim trop haute).
-
-
Actions utilisateur
-
Au moins 3 actions différentes (ex. nourrir, jouer, dormir) qui modifient les valeurs.
-
Certaines actions peuvent devenir indisponibles selon la situation (ex. impossible de jouer si trop fatigué).
-
-
Boucle de jeu & menu
-
Au lancement, afficher un menu :
-
Reprendre une partie si une sauvegarde existe.
-
Nouvelle partie (réinitialise).
-
Quitter.
-
-
Pendant le jeu : proposer les actions disponibles, appliquer l’action, avancer le temps, réafficher l’état.
-
-
Persistance
-
Sauvegarde automatique ou manuelle dans un fichier local (format libre : JSON, CSV, ou texte simple).
-
La sauvegarde doit contenir tout le nécessaire pour reprendre (valeurs, nom, progression, etc.).
-
-
Affichage minimal (CLI)
-
Afficher le nom de la créature, ses valeurs et un état/humeur (une étiquette ou un petit émoji ASCII).
-
Une représentation simple type barres ou nombres suffit (pas de chef-d’œuvre ASCII requis).
-
-
Fin de partie
- Quand la condition de fin est atteinte, afficher un court bilan (ex. nombre de tours, dernière action) et proposer de revenir au menu.
Livrables
-
Diagramme de classes UML (image) montrant les classes principales, attributs importants, et liens pertinents.
-
Code PHP (plusieurs fichiers .php ; pas d’arborescence imposée).
Scénarios d’acceptation (à couvrir en démo)
-
Démarrage : menu affiché ; si un fichier de sauvegarde existe, la reprise fonctionne.
-
Cycle de jeu : enchaîner plusieurs actions fait évoluer les valeurs conformément à votre description.
-
Sauvegarde/Reprise : quitter puis relancer permet de retrouver la partie au même état.
-
Fin de partie : la condition choisie déclenche bien l’arrêt et le bilan.
Contraintes techniques
-
PHP en exécution CLI (≥ 8.x).
-
Entrées/sorties standard (lecture clavier, affichage texte).
-
Fichier de sauvegarde dans le même dossier que le script, nom libre (ex.
save.json).
Libertés & extensions (optionnel)
-
Magasin avec items (jouets, nourriture, potions…) achetés avec une monnaie simple :
-
Un catalogue d’items, un inventaire, des effets sur les valeurs.
-
Prix fixes ; pas de persistance complexe nécessaire au-delà de l’inventaire.
-
-
Difficulté qui augmente avec le temps (ex. faim qui grimpe plus vite).
-
Skin d’humeur : visage ASCII qui change selon la situation.
Conseils de clarté (courts)
-
Décrivez en 5–10 lignes vos règles (évolution par tick + effets de chaque action).
-
Gardez des noms explicites et un fichier de sauvegarde lisible.
-
Si ça devient confus, réduisez : mieux vaut 3 règles propres que 10 bancales.
