Jakub Škrabánek 3 weeks ago
parent
commit
a538de1c09
  1. 33
      34_oop_pokrocile/dedicnost.py
  2. 36
      34_oop_pokrocile/zapozdreni.py

33
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)

36
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)
Loading…
Cancel
Save