fbpx

Responder a: Problema con la property. Módulo 8- Ejercicios propuestos, ejercicio 11

  • Leandro Martin Villafuerte

    Miembro
    8 mayo, 2020 en 3:39 pm

    Hola Cesar muchas gracias por la ayuda ya logré que funcione.

    Saludos

    Me quedó así

    class Guerrero:
    def __init__(self,vida=100,estado_arma=100,estado = "ataque",estado_escudo = 100):

    self.vida = vida
    self.estado_arma = estado_arma
    self.estado = estado
    self.estado_escudo = estado_escudo

    @property
    def estado(self):
    return self._estado
    @estado.setter
    def estado(self, cambio):
    if cambio == "ataque" or cambio == "defensa":
    if cambio == "defensa" and self.estado_escudo ==0:
    raise ValueError("No se puede cambiar a defensa, Escudo=0")
    self._estado = cambio
    else: raise ValueError("El estado no existe")

    @property
    def is_alive(self):
    if self.vida > 0:
    return True
    else: return False

    def atacar(self,guerrero):
    if self.is_alive == True:
    if self.estado == "ataque":
    if self.estado_arma >= 2 and guerrero.estado == "ataque":
    guerrero.vida = guerrero.vida - 20
    self.estado_arma = self.estado_arma - 2
    elif self.estado_arma >= 2 and guerrero.estado == "defensa":
    guerrero.estado_escudo = guerrero.estado_escudo - 5
    self.estado_arma = self.estado_arma - 2
    else:
    print("El arma no funciona, Arma=",self.estado_arma)
    else:
    print("El guerrero tiene que estar en ataque")
    else:
    print("El guerrero no está vivo")
    w = Guerrero()
    '''w.estado_escudo = 0
    w.estado = "defensa"
    print(w.estado)'''
    #print(w.is_alive)
    w2 = Guerrero()
    '''w.atacar(w2)
    print("La vida de w2 es",w2.vida)
    print("El estado de arma de w es",w.estado_arma)'''
    '''w.estado_arma = 1
    w.atacar(w2)'''
    '''w2.estado = "defensa"
    w.atacar(w2)
    print("el escudo de w2 es",w2.estado_escudo)
    print("el estado del arma de w es",w.estado_arma)'''
    '''w.estado = "defensa"
    w.atacar(w2)
    print("la vida de w2 es",w2.vida)'''
    '''w.vida = 0
    w.atacar(w2)
    print("La vida de w2 es",w2.vida)'''