diff --git a/34_oop_pokrocile/dedicnost.py b/34_oop_pokrocile/dedicnost.py new file mode 100644 index 0000000..a65dd77 --- /dev/null +++ b/34_oop_pokrocile/dedicnost.py @@ -0,0 +1,33 @@ +class Postava: + def __init__(self,jmeno,hp): + self.jmeno = jmeno + self._hp = hp + self.max_hp = hp + + def __str__(self): + return f"Postava: {self.jmeno} | HP: {self._hp}/{self.max_hp}" + +#DĚDIČNOST: Kouzelník JE Postava, ale umí něco navíc +class Kouzelnik(Postava): + def __init__(self, jmeno, hp,mana): + super().__init__(jmeno, hp) + self.mana = mana + + def __str__(self): + zakladni_text = super().__str__() + return f"{zakladni_text} | Mana: {self.mana}" + + def sesli_kouzlo(self): + if self.mana > 10: + self.mana -= 10 + print(f"{self.jmeno} sesílá kouzlo (zbýva {self.mana} many)") + else: + print("X nedostatek many!") + +aragorn = Postava("Aragorn",100) +gandalf = Kouzelnik("Gandalf",200, 100) +print(gandalf) +print(aragorn) + +gandalf.sesli_kouzlo() +print(gandalf) diff --git a/34_oop_pokrocile/zapozdreni.py b/34_oop_pokrocile/zapozdreni.py new file mode 100644 index 0000000..f4d8452 --- /dev/null +++ b/34_oop_pokrocile/zapozdreni.py @@ -0,0 +1,36 @@ +#Zapozdření -> jak chranit data a jak učit objekty "mluvit" + +class Postava: + def __init__(self,jmeno,hp): + self.jmeno = jmeno + #Zapozdření -> podržítko na začátku je dohoda programátorů: + #"Tato hodnota je soukromá, neměn ji přímo zvenčí" + self._hp = hp + self.max_hp = hp + + #kouzelná metoda __str__ + #python ji zavolá automaticky, když napíšeme print(objekt) + def __str__(self): + return f"Postava: {self.jmeno} | HP: {self._hp}/{self.max_hp}" + + #bezpečná manipulace -> metody místo přímého zápisu do proměnné + def utrp_zraneni(self,sila): + self._hp -= sila + if self._hp < 0 : + self._hp = 0 + print(f"{self.jmeno} zraněn o {sila} bodů") + + def vylecit(self,body): + self._hp += body + if self._hp > self.max_hp: + self._hp = self.max_hp + print(f"{self.jmeno} výlečen o {body} bodů") + +hrdina = Postava("Aragorn",100) +print(hrdina) + +hrdina.utrp_zraneni(20) +print(hrdina) + +hrdina.vylecit(10000000) +print(hrdina) \ No newline at end of file