import random class Zvire: def __init__(self, jmeno, oblibene_jidlo, zvuk): self.jmeno = jmeno self.zvuk = zvuk self.hlad = 3 self.spokojenost = 5 self.oblibene_jidlo = oblibene_jidlo def udelej_zvuk(self): if self.hlad > 4: print(f"{self.jmeno}: '{self.zvuk.upper()}'") else: print(f"{self.jmeno}: '{self.zvuk}'") def snez(self, jidlo): if jidlo == self.oblibene_jidlo: self.hlad -= 2 self.spokojenost += 1 else: self.hlad -= 1 print(f"{self.jmeno}: 'Jím {jidlo}'") def hraj_si(self, hracka=None): if hracka is None: print(f"{self.jmeno} nechápavě kouká...") else: print(f"{self.jmeno} si hraje s {hracka}") self.spokojenost += 1 self.hlad += 1 def __str__(self): return f"{type(self).__name__} {self.jmeno}" class Kocicka(Zvire): def __init__(self, jmeno, oblibene_jidlo, zvuk, hracky=None): if hracky is None: self.hracky = [] else: self.hracky = hracky super().__init__(jmeno, oblibene_jidlo, zvuk) def hraj_si(self, hracka=None): if hracka in self.hracky: print(f"{self.jmeno} si hraje s {hracka}") elif hracka is not None: print(f"{self.jmeno} ukořisťuje hračku {hracka} a jde si s ní hrát.") self.hracky.append(hracka) else: if not self.hracky: print(f"{self.jmeno} si hraje s ocáskem.") else: hracka = random.choice(self.hracky) print(f"{self.jmeno} si hraje s {hracka}") self.spokojenost += 1 self.hlad += 1 class Pejsek(Zvire): def __init__(self, jmeno, oblibene_jidlo, zvuk="Haf"): super().__init__(jmeno, oblibene_jidlo, zvuk) self.hlad = 7 self.naucene_povely = [] def hlidej(self): print(f"{self.jmeno} štěká a hlídá dům!") def nauc_se_povel(self, povel): povel = povel.lower() if povel not in self.naucene_povely: while True: nahoda = random.randint(0, 6) if nahoda == 6: self.naucene_povely.append(povel) print(f"{self.jmeno} už umí povel {povel}.") break elif nahoda == 1: print(f"{self.jmeno} se tváří, že nechápe.") else: print(f"{self.jmeno} jen kouká, musí ještě trénovat...") class Myska(Zvire): def udelej_zvuk(self): print(f"{self.jmeno} je potichu jako myška.") def snez(self, jidlo): print(f"{self.jmeno}: 'JÍÍÍDLOOOO!'") super().snez(jidlo) class KostkaLedu(Zvire): def __init__(self): super().__init__("led", "voda", "Prask") betka = Kocicka("Bětka", "ryba", "Mnjau") betka.udelej_zvuk() betka.snez("ryba") betka.hraj_si() zeryk = Pejsek("Žeryk", "buřt", "Haaaf") zeryk.hlidej() zeryk.nauc_se_povel("Sedni") zeryk.nauc_se_povel("Lehni") led = KostkaLedu() led.udelej_zvuk() led2 = KostkaLedu() led2.udelej_zvuk() sardinka = Myska("Sardinka","pšenice", "Pííísk!") sardinka.snez("máslo") sardinka.udelej_zvuk() zoo = [betka, zeryk, led, led2, sardinka] for zviratko in zoo: zviratko.udelej_zvuk() print(f"Zviratko je typu: {type(zviratko)}") if type(zviratko) == Myska: print("Byla to myška a my to víme!") class Rybka(Zvire): pass class Zralok(Zvire): def snez(self, jidlo): if type(jidlo) == Rybka: print(f"{self.jmeno}: Chramst! {jidlo.jmeno} to má spočítaný!") else: print(f"{self.jmeno}: '{str(jidlo).capitalize()}?! Tohle já nejím!'") julie = Rybka("Jůlie", "Žížala", "OoOoOooo") blahaj = Zralok("Blahaj", "Rybky", "Kous!") blahaj.snez("Bota") blahaj.snez(sardinka) blahaj.snez(julie) class Zizala(Zvire): pass ziza = Zizala("", "", "") zoo.append(ziza) for zviratko in zoo: print(f"Zviratko je typu: {type(zviratko)}") if isinstance(zviratko, Zvire): print(f"{zviratko} je v podstate Zvire!")