AI_PROJECT/Roslina.py

120 lines
3.1 KiB
Python

import Stan
import Srodek
import random
class Roslina:
nazwa = None #[string]
stan = None #[Stan]
srodek = None #[List<Srodek>]
"""
Nawodnienie (update co 30s):
- pszenica: -8
- kukurydza: -7
- ziemniak: -6
- słonecznik: -5
- borówka: -4
- winogrono: -4
Żyzność (update co 30s):
- pszenica: -7
- kukurydza: -4
- ziemniak: -5
- słonecznik: -3
- borówka: -5
- winogrono: -4
Wzrost (update co 30s):
- pszenica: +8
- kukurydza: +4
- ziemniak: +5
- słonecznik: +3
- borówka: +5
- winogrono: +4
Koszt (0-15):
- pszenica: 7
- kukurydza: 9
- ziemniak: 2
- słonecznik: 5
- borówka: 3
- winogrono: 4
- szuter (ścieżka): 0
- błoto: 15
def __init__(self, nazwa, stan, srodek):
self.nazwa = nazwa
self.stan = stan
self.srodek = srodek
"""
def __init__(self, nazwa):
self.nazwa = nazwa
self.stan = Stan.Stan()
if nazwa == "dirt":
self.stan.koszt = 0
self.stan.nawodnienie = 100
elif nazwa == "mud":
self.stan.koszt = 15
self.stan.nawodnienie = 100
else:
self.stan.set_random()
if nazwa == "pszenica":
self.stan.koszt = 7
elif nazwa == "kukurydza":
self.stan.koszt = 9
elif nazwa == "ziemniak":
self.stan.koszt = 2
elif nazwa == "slonecznik":
self.stan.koszt = 5
elif nazwa == "borowka":
self.stan.koszt = 3
else: # winogrono
self.stan.koszt = 4
self.srodek = None
def checkSrodek(self):
#może wykorzystać AI do porównywania zdjęć
for i in self.srodek:
for j in self.stan.akcja.srodki:
if i == j:
return i
return False
def doAkcja(self):
# sprawdza jaki srodek do danej akcji i jaki z nich może być użyty przy tej roślinie
# robi akcje
# aktualizuje dane o stanie i zdjęcie w zależności od wykonanej czynności (benefits w klasie akcja) -> (self.stan.akcja.benefits)
x = self.checkSrodek()
# robi akcje
setattr(self.stan, self.stan.akcja.benefits[0], self.stan.akcja.benefits[1])
return
def isAkcja(self):
# sprawdza czy jakaś akcja musi być wykonana, jeżeli tak, to ją wywołuje
# sprawdza czy jeszcze coś trzeba zrobić
self.stan.checkStan()
while self.stan.akcja != None:
self.doAkcja()
self.stan.checkStan()
return
def return_stan(self):
return self.stan
def return_stan_for_tree(self):
return self.stan.return_stan_for_tree()
def get_hydrate_stats(self):
return self.stan.return_hydrate()
def report_status(self):
return f"Nazwa rosliny: {self.nazwa} "+self.stan.report_all()