You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.5 KiB

10 months ago
# Importations
import interface # Dépendances : PIL(Pillow) et tkinter
import donnees
# Déclaration des fonctions
def ihm_signale_evenement(evenement:'tkinter.Event', manoir:'Manoir', ihm:'IHM') -> None:
"""Fonction où on récupère des informations sur l'événément reçu via l'IHM"""
# On récupère la touche sur laquelle on vient d'appuyer
touche = evenement.char
print(f"\nEVENEMENT RECU : {evenement}") # Permet de voir le vrai événement
print(f"CODE PERSO : {touche}") # L'IHM permet de connaitre la touche utilisée
# Il faut maintenant gérer l'événement : modifier les données et redemander une affichage à l'IHM
h = manoir.heros
if touche == 'N' or touche == 'n':
if h.aller_nord(): # Si aller au nord est possible et c'est bien passé
modifier_affichage(manoir, ihm)
if touche == 'S' or touche == 's':
if h.aller_sud(): # Si aller au sud est possible et c'est bien passé
modifier_affichage(manoir, ihm)
if touche == 'Q' or touche == 'q':
if h.aller_ouest(): # Si aller a l'ouest est possible et c'est bien passé
modifier_affichage(manoir, ihm)
if touche == 'D' or touche == 'd':
if h.aller_est(): # Si aller a l'est est possible et c'est bien passé
modifier_affichage(manoir, ihm)
if touche == 'C' or touche == 'c':
if h.combattre_monstre_actuel(): # Si combattre est possible et c'est bien passé
modifier_affichage(manoir, ihm)
def modifier_affichage(manoir:'Manoir', ihm:'IHM') -> None:
"""Modifie les 5 champs de l'interface graphique"""
h = manoir.heros
ihm.afficher_txt_1( h.observer() ) # affiche le texte descriptif
ihm.afficher_txt_2( h.reflechir() ) # affiche les actions possibles
ihm.afficher_txt_3( h.get_carac() ) # affiche les caractéristiques du héros
ihm.afficher_img_1( h.lieu.image ) # affiche l'image éventuelle du lieu
if h.lieu.occupant:
ihm.afficher_img_2( h.lieu.occupant.img) # affiche l'image éventuelle du monstre
# PROGRAMME PRINCIPAL
# Création des données et de l'interface graphique
m = donnees.peupler_manoir() # Création des données du manoir
ihm = interface.IHM() # Création de l'interface graphique
# ihm_signale_evenement va récupérer les événements sur l'ihm
ihm.signaler_evenement(lambda event: ihm_signale_evenement(event, m, ihm))
modifier_affichage(m, ihm)