# Ejercicio 1 class Persona(): def __init__(self, vida, posicion, velocidad): self._vida = vida self._posicion = posicion self._velocidad = velocidad def recibir_ataque(self, ataque): if (self._vida <= ataque): self._vida = 0 print("La vida de la persona llego a 0") else: self._vida -= ataque def mover(self, direccion): if (direccion == "up"): self._posicion["y"]+=self._velocidad elif (direccion == "down"): self._posicion["y"]-=self._velocidad elif (direccion == "left"): self._posicion["x"]-=self._velocidad elif (direccion == "right"): self._posicion["x"]+=self._velocidad def state(self): return f"vida: {self._vida }, posicion: {self._posicion}, velocidad: {self._velocidad}" # Ejercicio2 class Soldado(Persona): def __init__(self, vida, posicion, velocidad, ataque): super().__init__(vida, posicion, velocidad) self._ataque = ataque def atacar(self, personaje): personaje.recibir_ataque(self._ataque) #Ejercicio 3 class Campesino(Persona): def __init__(self, vida, posicion, velocidad, cosecha): super().__init__(vida, posicion, velocidad) self._cosecha = cosecha def cosechar(self): print(f"Cantidad Cosechada {self._cosecha} ") # ejercicio 4. ?? el campesino no puede atacar soldado = Soldado(10, {"x": 0, "y":0}, 5, 5 ) campe = Campesino(10, {"x":0,"y":0}, 2, 50) persona = Persona(10, {"x":0, "y":0}, 10) print("=====Estado Inicial======") print(soldado.state()) print(campe.state()) print(persona.state()) print("=====Campesino muestra cosecha=====") campe.cosechar() print("=====Soldado se mueve=====") soldado.mover("up") soldado.mover("left") print(soldado.state()) print("=====Soldado ataca 2 veces al campesino y una a la persona=====") soldado.atacar(campe) soldado.atacar(campe) soldado.atacar(persona) print(campe.state()) print(persona.state())