Poniżej wklejam mój kod. Co o nim sadzicie? Jest OK? Co i jak można poprawić?
import random
class OrganizmAkwariowy:
def __init__(self, nazwa, zdrowie):
self._nazwa = nazwa
self._zdrowie = zdrowie
def rosnij(self):
self._zdrowie += 1
print(f"{self._nazwa} rośnie. Zdrowie: {self._zdrowie}")
def odzywiaj_sie(self, ofiara=None):
pass
def pokaz_zdrowie(self):
return self._zdrowie
def pokaz_nazwe(self):
return self._nazwa
class RoslinaWodna(OrganizmAkwariowy):
def rosnij(self):
self._zdrowie += 1
print(f"Roślina {self._nazwa} rośnie. Zdrowie: {self._zdrowie}")
def odzywiaj_sie(self, _=None):
pass
class RybkaRoslinozerna(OrganizmAkwariowy):
def rosnij(self):
self._zdrowie += 2
print(f"{self._nazwa} rośnie (roślinożerna). Zdrowie: {self._zdrowie}")
def odzywiaj_sie(self, roslina):
if isinstance(roslina, RoslinaWodna):
self._zdrowie += 3
print(f"{self._nazwa} zjada roślinę {roslina._nazwa}. Zdrowie: {self._zdrowie}")
class RybkaDrapiezna(OrganizmAkwariowy):
def rosnij(self):
self._zdrowie += 3
print(f"{self._nazwa} rośnie (drapieżna). Zdrowie: {self._zdrowie}")
def odzywiaj_sie(self, ofiara):
if isinstance(ofiara, RybkaRoslinozerna) and ofiara._zdrowie > 0:
self._zdrowie += 5
ofiara._zdrowie = 0
print(f"{self._nazwa} zjada {ofiara._nazwa}. Zdrowie: {self._zdrowie}")
rosliny = [RoslinaWodna(f"Roślina{i}", random.randint(5, 10)) for i in range(3)]
ryby_roslinozerne = [RybkaRoslinozerna(f"Roślinożerna{i}", random.randint(5, 10)) for i in range(2)]
ryby_drapiezne = [RybkaDrapiezna(f"Drapieżna{i}", random.randint(5, 10)) for i in range(1)]
for cykl in range(3):
print(f"\n--- Cykl {cykl + 1} ---")
for r in rosliny:
r.rosnij()
for ryba in ryby_roslinozerne:
ryba.rosnij()
if rosliny:
roslina = random.choice(rosliny)
ryba.odzywiaj_sie(roslina)
for drapieznik in ryby_drapiezne:
drapieznik.rosnij()
if ryby_roslinozerne:
ofiara = random.choice(ryby_roslinozerne)
if ofiara.pokaz_zdrowie() > 0:
drapieznik.odzywiaj_sie(ofiara)
print("\n--- Stan końcowy ---")
for organizm in rosliny + ryby_roslinozerne + ryby_drapiezne:
print(f"{organizm.pokaz_nazwe()}: zdrowie = {organizm.pokaz_zdrowie()}")