In [9]:
################################ ABSTRACCIÓN #################################
################################ ABSTRACCIÓN #################################
class Personaje:
    def __init__(self, nombre, fuerza, inteligencia, defensa, vida):
        self.nombre = nombre
        self.__fuerza = fuerza
        self.__inteligencia = inteligencia
        self.__defensa = defensa
        self.__vida = vida
        self.__aguante = fuerza * vida
        self.__turno = False

    def atributos(self):
        print(self.nombre, ":", sep="")
        print("-Fuerza : ", self.__fuerza)
        print("-Inteligencia : ", self.__inteligencia)
        print("-Defensa : ", self.__defensa)
        print("-Vida: ", self.__vida)

    def subir_nivel(self, fuerza, inteligencia, defensa):
        self.__fuerza = self.__fuerza + fuerza
        self.__inteligencia = self.__inteligencia + inteligencia
        self.__defensa = self.__defensa + defensa

    def esta_vivo(self):
        return self.vida > 0

    def morir(self):
        self.vida = 0
        print(self.nombre, "ha muerto")

    # mecanismo por el que el personaje hace daño

    def daño(self, enemigo):
        return self.__fuerza - enemigo.defensa

    def atacar(self, enemigo):
        daño = self.daño(enemigo)
        enemigo.vida = enemigo.__vida - daño
        print(
            self.nombre,
            "hizo la cantida de ",
            daño,
            "puntos de daño a ",
            enemigo.nombre,
        )
        if enemigo.esta_vivo():
            print("La vida de ", enemigo.nombre, "es", enemigo.vida)
        else:
            enemigo.morir()




mi_Personaje = Personaje("MILEI", 1000, 100, 55, 100)
# mi_Personaje.atributos()
mi_Personaje.subir_nivel(1, 2, 0)
# mi_Personaje.atributos()
#mi_Personaje.morir()
mi_Personaje.atributos()
mi_enemigo = Personaje("LA CASTA", 250, 0, 33, 100)
mi_Personaje.atacar(mi_enemigo)
mi_enemigo.atributos()

# print(mi_Personaje.daño(mi_enemigo))
MILEI:
-Fuerza :  1001
-Inteligencia :  102
-Defensa :  55
-Vida:  100
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-9-e634c5327466> in <cell line: 62>()
     60 mi_Personaje.atributos()
     61 mi_enemigo = Personaje("LA CASTA", 250, 0, 33, 100)
---> 62 mi_Personaje.atacar(mi_enemigo)
     63 mi_enemigo.atributos()
     64 

<ipython-input-9-e634c5327466> in atacar(self, enemigo)
     36 
     37     def atacar(self, enemigo):
---> 38         daño = self.daño(enemigo)
     39         enemigo.vida = enemigo.__vida - daño
     40         print(

<ipython-input-9-e634c5327466> in daño(self, enemigo)
     33 
     34     def daño(self, enemigo):
---> 35         return self.__fuerza - enemigo.defensa
     36 
     37     def atacar(self, enemigo):

AttributeError: 'Personaje' object has no attribute 'defensa'
In [ ]: