diff --git a/Lieu.py b/Lieu.py new file mode 100644 index 0000000..7e09456 --- /dev/null +++ b/Lieu.py @@ -0,0 +1,66 @@ + +class Lieu: + + def __init__(self, nom, dsc, img=None) -> None: + self.nom = nom + self.dsc = dsc + self.image = None + self.nord = None + self.sud = None + self.est = None + self.ouest = None + self.occupant = None + self.objets = [] + self.action_supp = None + + + def decrire_lieu(self): + """Renvoie une description de la salle et le monstre éventuellement présent + + :: param self(Lieu) :: une instance de Lieu + :: return (str) :: un string contenant la description globale + + """ + reponse = self.dsc + + if self.occupant: # cela veut dire si self.occupant existe (n'est pas 0, vide ou None) + reponse = reponse + f" \nLa salle contient également un(e) {self.occupant.nom} : {self.occupant.get_description()}" + return reponse + def decrire_actions_possibles(self:'Lieu') -> str: + """Renvoie un string de toutes les actions possibles""" + actions_possibles = "" + if self.occupant: + actions_possibles =+ "C : Combattre" + actions_possibles =+ "F : Fuire" + if self.objets: + actions_possibles =+ "R : Ramasser" + if self.nord: + actions_possibles =+ "Z : Porte Nord" + if self.sud: + actions_possibles =+ "S : Porte Sud" + if self.ouest: + actions_possibles =+ "D : Porte Ouest" + if self.est: + actions_possibles =+ "Q : Porte Est" + if self.objet: + actions_possibles =+ "U : utiliser objet" + + def set_occupant(self:'Lieu', occupant:'None|Monstre|Personnage') -> bool: + '''Cette méthode permet de mettre en place un occupant dasn un lieu''' + if not self.occupant or occupant.est_hs(): + self.occupant = occupant + + def ouvrir(self:'Personnage', lieu:'Lieu'): + '''permet de verifier si on a un objet dans l'inventaire pour ouvrir''' + if self.objet == 'clé cadena': + lieu.nord = + entree.nord = couloire_sud + couloire_sud.sud = entree + if self.objet == "Croc d'Hydra": + picine.est = cuisine.ouest + if self.objet == 'Boutielle de vodka': + salle_NSI.ouest = salle_arcade.est + + + + diff --git a/combat.py b/combat.py new file mode 100644 index 0000000..06d7405 Binary files /dev/null and b/combat.py differ diff --git a/main.py b/main.py new file mode 100644 index 0000000..b236ea0 --- /dev/null +++ b/main.py @@ -0,0 +1,11 @@ +from personnage import * +from monstre import * + +if __name__ == '__main__': + Alice = Personnage("Alice") + Monstre = Monstre("Gobelin", "") + Alice.combattre(Monstre) + cmd =input() + print(Alice.nom) + + print(cmd) diff --git a/manoir.py b/manoir.py new file mode 100644 index 0000000..bcbbaed --- /dev/null +++ b/manoir.py @@ -0,0 +1,46 @@ +from personnage import * +from monstre import * +from Lieu import * +class Manoir: + + def __init__(self): + self.heros = None + self.depart = None + self.lieux = [] + self.monstres = [] + + +def peupler_manoir(): + # Création du personnage du joueur + aventurier = Personnage("Alice") + + # Création et agencement des lieux + des = """Vous êtes devant l'entrée qui mène au nord. Une solide porte en bois est entreouverte""" + exterieur = Lieu("Entrée", des, "manoir.jpg") + + des = "Vous êtes dans le hall d'entrée du manoir." + hall = Lieu("Hall", des, "hall.jpeg") + + exterieur.nord = hall + hall.sud = exterieur + + # Création et positionnement d'un monstre + squelette_1 = Monstre("Squelette", "Un squelette semblant bouger seul et muni d'une épée.", "squelette.png") + hall.set_occupant(squelette_1) + + # Affectation d'un lieu de départ à l'aventurier + aventurier.lieu = exterieur + + # Création du manoir + manoir = Manoir() + manoir.heros = aventurier + manoir.depart = aventurier.lieu + manoir.lieux.append(exterieur) + manoir.lieux.append(hall) + manoir.monstres.append(squelette_1) + + return manoir + + +if __name__ == '__main__': + m = peupler_manoir() \ No newline at end of file diff --git a/monstre.py b/monstre.py index 516047b..360393a 100644 --- a/monstre.py +++ b/monstre.py @@ -1,51 +1,96 @@ -# Importation -import random as rd -# Déclaration des CONSTANTES - -# Déclaration Classes -class Monstre : - - def __init__(self, nom, dsc, img=None, obj=None) -> None: - self.nom = nom - self.dsc = dsc - self.img = img - self.obj = obj - self.habilite = rd.randint(1,10) - self.endurance = 5 - self.force = 2 - self.courage = rd.randint(1,10) - - if "Squelette" in self.nom: - self.habilite = rd.randint(1,10) - self.endurance = rd.randint(1,10) - self.force = rd.randint(1,2) - self.courage = rd.randint(1,10) - - - def get_description(self:'Monstre') -> str: - return self.dsc - - def get_carac(self:'Montres') -> str: - return f"{self.nom} H{self.habilite} E{self.endurance} F{self.force} C{self.courage}" - - def est_hs(self:'Monstre') -> bool: - if self.endurance <= 0: - return True - else: - return False - - - - - - - - - - - - -# Déclaration de Fonctions - - -# Le corps du module en lui-même \ No newline at end of file +import random as rd +import time + + +class Monstre: + + def __init__(self, nom, dsc, img=None, obj=None) -> None: + self.nom = nom + self.dsc = dsc + self.img = img + self.obj = obj + self.habilite = rd.randint(1, 10) + self.endurance_max = 15 + self.endurance = self.endurance_max + self.force = 2 + self.courage = rd.randint(1, 10) + self.objet = [] + + if "Squelette" in self.nom: + self.habilite = rd.randint(1, 7) + self.endurance = rd.randint(1, 4) + self.force = rd.randint(1, 2) + self.courage = rd.randint(1, 10) + + if 'Chauve-souris' in self.nom: + self.habilite = rd.randint(5, 10) + self.endurance = rd.randint(1, 3) + self.force = 1 + self.courage = 10 + self.objet = ['clé cadena'] + + if 'Limace-geante' in self.nom: + self.habilite = 1 + self.endurance = 7 + self.force = 1 + self.courage = 10 + + if 'Zombie' in self.nom: + self.habilite = rd.randint(1, 4) + self.endurance = 7 + self.force = 1 + self.courage = 8 + + if 'Zombie_sur_poulet' in self.nom: + self.habilite = rd.randint(4, 7) + self.endurance = 4 + self.force = 2 + self.courage = 8 + + if 'Hydra' in self.nom: + self.habilite = rd.randint(8, 10) + self.endurance = 10 + self.force = 3 + self.courage = 10 + self.objet = ["Croc d'Hydra"] + + if 'Poutine' in self.nom: + self.habilite = 10 + self.endurance = 12 + self.force = 4 + self.courage = 10 + self.objet = ["Bouteille de vodka"] + + if 'Pikachu' in self.nom: + self.habilite = 12 + self.endurance = 5 + self.force = 2 + self.courage = 10 + + def modifier_endurance(self: 'Monstre', modificateur): + endurance_modifie = self.endurance + modificateur + if endurance_modifie < 0: + self.endurance = 0 + elif endurance_modifie > self.endurance_max: + self.endurance = self.endurance_max + else: + self.endurance = endurance_modifie + + def subir_degats(self: 'Monstre', degats: int) -> None: + if degats > 0: + self.modifier_endurance(-degats) + + def get_description(self: 'Monstre') -> str: + return self.dsc + + def get_carac(self: 'Montres') -> str: + return f"{self.nom} H{self.habilite} E{self.endurance} F{self.force} C{self.courage}" + + def est_hs(self: 'Monstre') -> bool: + if self.endurance <= 0: + return True + else: + return False + + def getEndurance(self): + return self.endurance \ No newline at end of file