Script jeu de rôle (suite au mentorat THibault)
# Méthodes
# Orienté objet
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...
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte