2020-04-07 20:17:35 +02:00
|
|
|
from abc import ABC, abstractmethod
|
|
|
|
|
|
|
|
class Plant:
|
|
|
|
|
|
|
|
#tworzymy jakas rosline co ma nazwe,i id. ID powiedzmy ze buraki beda mialy 1, marchewki 2 itd. gleby powiedzmy tez damy 4 i beda mialy id 5-8
|
|
|
|
def __init__(self, name, ID):
|
|
|
|
super().__init__()
|
|
|
|
self._soil = -1 #jak tworzymy rosline to nie bedzie ona miala gleby
|
|
|
|
self._name = name #to nazwa rosliny będzie np. burak1
|
|
|
|
self._id = ID #id rosliny buraki bedą mialy 1, i po tym inne obiekty beda rozpoznawac ten obiekt
|
|
|
|
self._collect = 0 #nowa roslina jest w 0% dojrzala
|
|
|
|
|
|
|
|
#to jest jakbysmy usuneli obiekt. zabezpieczenie, zeby gleba pozniej byla wolna
|
|
|
|
def __del__(self):
|
|
|
|
self.leave_soil()
|
|
|
|
|
|
|
|
#to sie drukuje jak zapytamy o stworzony obiekt
|
|
|
|
def __str__(self):
|
2020-04-07 20:28:04 +02:00
|
|
|
return f'Plant: {self._name}, Soil: {self._soil}, Status: {self.collect()}'
|
2020-04-07 20:17:35 +02:00
|
|
|
|
|
|
|
#metoda abstrakcyjna, kazda roslina ma inny czas rosniecia wiec pass
|
|
|
|
@abstractmethod
|
|
|
|
def collect(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
@abstractmethod
|
|
|
|
def fertillizing(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
@abstractmethod
|
|
|
|
def growing(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
#pobieramy wspolrzedne roslinki
|
|
|
|
def get_coordinates(self):
|
|
|
|
if self.have_soil():
|
|
|
|
a = self.get_soil()
|
|
|
|
a.get_coordinates(self) #get coordinates jest metoda w glebie
|
|
|
|
|
|
|
|
#pobieramy id roślinki
|
|
|
|
def get_id(self):
|
|
|
|
return self._id
|
|
|
|
|
|
|
|
#dodajemy glebe
|
|
|
|
def add_soil(self, soil):
|
|
|
|
self._soil = soil
|
|
|
|
|
|
|
|
#zwraca czy roslinka znajduje sie w ziemii obecnie - jak nie ma gleby to znaczy ze nie jest zasadzona jeszcze albo już.
|
|
|
|
def have_soil(self):
|
|
|
|
return self._soil is not -1
|
|
|
|
|
|
|
|
#pobieramy jaka ma glebe, gleba tutaj będzie obiektem
|
|
|
|
def get_soil(self):
|
|
|
|
return self._soil
|
|
|
|
|
|
|
|
#to w przypadku jak bedziemy wyciagac z ziemii roslinke
|
|
|
|
def leave_soil(self):
|
|
|
|
if self.have_soil():
|
|
|
|
a = self.get_soil()
|
|
|
|
a.plant_remove() #to bedzie metoda w klasie Soil, bedzie usuwac roslinke z gleby
|
|
|
|
self._soil = -1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|