Le tamagotchi est un jouet électronique portable qui simule un animal de compagnie virtuel, nécessitant des soins et une attention régulière de la part de son propriétaire. Sorti au Japon en 1996, ce jouet a connu un succès planétaire en 1997.
Cet atelier est destiné à découvrir la programmation python et son environnement de développement en codant un Tamagotchi. Le parti pris de l’auteur est démarrer avec un code objet fonctionnel avec un formalisme assez poussé, notemment par l’utilisation systématiques de docstring pour documenter le code.
While True:
pour continuer à interagir avec l'utilisateur jusqu'à ce qu'il décide de quitter.print()
avec des char, des docstrings et de l’interpolation avec print(f“{bitin}”)
Dans une optique pythoniste, les stagiaires doivent récupérer un code source à modifier depuis un dépôt git en ligne.
tamagotchi.py
(par convention on enregistre les fichiers python avec l’extension .py
)
Le Tamagotchi traditionnel se manifeste par un bip. Nous allons ajouter un bip à notre tamagotchi.
Pour cela, nous allons récupérer le son “Alerte” de notre système d’exploitation. Le son produit pourra donc être différent selon la machine sur laquelle nous exécuterons notre script python tamagotchi.py
Aller à la ligne n°124, while True:
, créer une nouvelle ligne et ajouter le code suivant print(“\a”)
En python, c’est en utilisant des tabulations que l’on délimite les blocs de code, à partir du bord gauche de la “page” (l’écran).
Ta ligne print(“\a”)
doit donc être alignée avec les instructions qui suivent le While True:
while True: # BIP ! print("\a") print("\nChoisis une action: ") print("1. Nourrir") print("2. Jouer") print("3. Dormir") print("4. Statut") print("5. Quitter")
Relance le jeu
On va ajouter une pause entre chaque action. Pendant cette pause, le Tamagotchi pourra de lui-même soit dormir, soit se nourrir, soit jouer, soit faire ses besoins (et donc salir). Le fait de faire ces actions par lui-même fera varier les niveaux de bonheur, fatigue et faim du Tamogotchi.
On va également ajouter des seuils. Ex : si le Tamagotchi a 10 de faim et 10 de fatigue, il meurt. Si le Tamagotchi à 0 de bonheur, il refuse de manger et veut jouer
pour faire un calin à son Tamagotchi la fonction caliner n’existe pas encore …)
test_sleep.py
avec un exemple fonctionnel de l’utilisation de sleep, en faisant une pause de 30 secondes.test_sleep.py
tamagotchi.py
exemple de code avec une pause de 30 secondes
import time print("Cela commence ici : %s" % time.ctime()) time.sleep(30) print("Le temps est maintenant écoulé : %s" % time.ctime())
Les lignes importantes sont
import time
qui permet d’importer la libraire time
time.sleep(30)
qui utilise la libraire time
pour faire une pause de 30 secondes
À la ligne 24, avant la déclaration de la class Tamagotchi
, ajouter la ligne d’import
""" [...] Licence: Ce programme est distribué sous licence GPL V3. Pour plus de détails, voir https://www.gnu.org/licenses/gpl-3.0.html """ import time class Tamagotchi: """ Classe représentant un Tamagotchi virtuel. [...] """
À la ligne 127, avant l’action print(“\a”)
(BIP), on va ajouter la pause
while True: # pause time.sleep(30) # BIP ! print("\a")
Actuellement, la pause s’execute systématiquement : après avoir nommé le tamagotchi et même quand on consulte son statut. On pourrait améliorer ça en faisant une pause uniquement lorsque le tamagotchi effectue une action comme dormir, manger ou jouer ?
Comment faire pour marquer une pause uniquement dans les actions dormir, manger ou jouer ?
on va déplacer l’instruction sleep(30) dans la définition d’une methode d’action (ex nourrir)
def dormir(self): """ Fait dormir le Tamagotchi, augmentant son énergie. Si le niveau d'énergie est inférieur à 10, il est augmenté de 2. Si le niveau d'énergie est déjà à 10, un message indiquant que le Tamagotchi est déjà plein d'énergie est affiché. """ if self.energie < 10: self.energie += 2 sleep(30) print(f"{self.name} a dormi. Énergie: {self.energie}") else: print(f"{self.name} est déjà plein d'énergie!")
On va maintenant ajouter cette pause à chacune des méthodes dormir(), manger() et jouer().
On va également attribuer un temps de pause différent pour chacune de ces actions
}
Si le tamagotchi a faim, il refusera le calin. Sinon, grâce au calin, ses niveaux d’energie et de bonheur augmenteront
caliner()
dans la class Tamagotchi()
en s’inspirant des méthodes nourrir()
, dormir()
ou manger()
.
While True:
) et prendre en compte le choix de l’utilisateur (if choice ==
)
Bonus récupérer des pikachu en ASCII art pour illustrer le mood du Tamagotchi (print de docstring)