Résolue

Script jeu de rôle (suite au mentorat THibault)

# Méthodes # Orienté objet

Gabriel Trouvé

Mentor


EDIT : Je pense avoir une solution

Thibault tu pensais à un truc de ce genre là ?


def attaquer(self, adversaire):
        if adversaire.bouclier > 0:
            adversaire.bouclier -= self.attaque_force
        else:
            adversaire.vie -= self.attaque_force
        self.attaque_force = random.randint(5, 10)
        return adversaire


Bonjour,


Suite au mentorat de jeudi.

L'idée est de choisir si l'attaque va modifier la variable self.vie, ou une autre variable comme self.bouclier.

Car dans l'état actuel def attaquer ne modifie que la vie.


Merci


import random, time



class Personnage:
    def __init__(self):
        self.vie = 50
        self.bouclier = 100
        self.nombre_potions = 3
        self.potions = random.randint(10, 30)
        self.attaque_force = random.randint(5, 10)
    
    def attaquer(self, adversaire):
        if adversaire.bouclier > 0:
            adversaire.bouclier -= self.attaque_force
        else:
            adversaire.vie -= self.attaque_force
        self.attaque_force = random.randint(5, 10)
        return adversaire


    def prendre_potion(self):
        self.nombre_potions -= 1
        self.vie += self.potions
        self.potions = random.randint(10, 30)
        return self.vie



class Ennemi(Personnage):
    def __init__(self):
        super().__init__()
        self.attaque_force = random.randint(5, 15)
        self.nombre_potions = 0
        self.potions = 0
    
    def prendre_potion(self):
        return "L'ennemi n'a pas de potion !"




perso1 = Personnage()
ennemie = Ennemi()
MENU_CHOICE = ["1", "2"]



while True:
    choix_joueur = input("1 : Attaquer, 2 : prendre une potion ==> ")



    while choix_joueur not in MENU_CHOICE:
        choix_joueur = input("1 : Attaquer, 2 : prendre une potion ==> ")
        if choix_joueur not in MENU_CHOICE:
            print("Veuillez faire un choix valide svp")



    if choix_joueur == "1":


        perso1.attaquer(adversaire=ennemie)
        print(f"Vous avez infligé {perso1.attaque_force} de dégats !")
        print(f"Points de vie restant à l'ennemi : {ennemie.vie}")
        if ennemie.vie <= 0:
            break
            
        
        ennemie.attaquer(adversaire=perso1)
        print(f"L'ennemi vous a infligé {ennemie.attaque_force} de dégats !")
        print(f"Points de vie restant au joueur : {perso1.vie}")
        if perso1.vie <= 0:
            break
            


    elif choix_joueur == "2":
        if perso1.nombre_potions == 0:
            print("Vous n'avez plus de potions")
            continue
        perso1.prendre_potion()


        print(f"La potions vous a redonné {perso1.potions} de vie !")
        print(f"Points de vie restant au joueur : {perso1.vie}")
        print("Attendez vous avez pris une potion l'ennemi va attaquer...")
        if perso1.nombre_potions == 2:
            time.sleep(3)
            print("Sauvegarde... ... ... ")


            time.sleep(5)
            print("Nan je rigole ça ne sauvegarde pas c'est un jeu tout pourrave pas besoin !")


            time.sleep(3)
        
        ennemie.attaquer(adversaire=perso1)
        print(f"L'ennemi vous a infligé {ennemie.attaque_force} de dégats !")
        print(f"Points de vie restant au joueur : {perso1.vie}")
        print(f"Points de vie restant à l'ennemi : {ennemie.vie}")
        if perso1.vie <= 0:
            break
if perso1.vie <= 0:
    print("L'ennemie a gagné la partie !")


elif ennemie.vie <= 0:
    print("Le joueur a gagné la partie !")



#Thibault : on pourrait vouloir agire sur la vie, un bouclier etc...

Salut Gabriel !

Effectivement on pourrait faire cela ! Après tu ne laisses pas le choix de ce que tu souhaites attaquer, mais c'est logique en même temps qu'on attaque en premier le bouclier s'il y en a un avant d'impacter la vie.

Gabriel Trouvé

Mentor

Aller on prend ! ^^ Merci ! :)

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.