Prześlij pliki do ''

dodanie klas soil i carrot
This commit is contained in:
Dominik Małyszka 2020-04-07 17:15:42 +00:00
parent 0e8a2a72ef
commit b0154dc37e
3 changed files with 166 additions and 60 deletions

34
carrot.py Normal file
View File

@ -0,0 +1,34 @@
from plant import Plant
from datetime import datetime
class Carrot(Plant):
def __init__(self):
super().__init__()
self._wasFertilized = False #roslina nie byla nawozona przy tworzeniu
self._starttime = datetime.now()
def collect(self):
if self.have_soil():
self.__growing()
if self._collect < 90:
return 'False'
elif 90 <= self._collect <= 105:
return 'True'
elif self._collect > 105:
return 'Delete'
def fertillizing(self):
if 30 <= self._collect <= 50:
self._wasFertilized = True
return True
else:
return False
#każde iles czasu zwieksza wzrost rosliny, wywolywana w momencie sprawdzania czy roslina jest gotowa do zbiorow
def __growing(self):
checktime = datetime.now()
delta = checktime - self._starttime
a = delta // 60
self._collect += a
self._starttime = checktime

125
plant.py
View File

@ -1,60 +1,65 @@
from abc import abc, abstractmethod from abc import abc, abstractmethod
class Plant: class Plant:
#tworzymy jakas rosline co ma nazwe,i id. ID powiedzmy ze buraki będą miały 1, marchewki 2 itd. gleby powiedzmy tez damy 4 i beda mialy id 5-8 #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): def __init__(self, name, ID):
super().__init__() super().__init__()
self._soil = -1 #jak tworzymy rosline to nie bedzie ona miala gleby self._soil = -1 #jak tworzymy rosline to nie bedzie ona miala gleby
self._name = name #to nazwa rosliny będzie np. burak1 self._name = name #to nazwa rosliny będzie np. burak1
self._id = ID #id rosliny buraki bedą miały 1, i po tym inne obiekty beda rozpoznawac ten obiekt 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 była wolna
def __del__(self): #to jest jakbysmy usuneli obiekt. zabezpieczenie, zeby gleba pozniej byla wolna
self.leave_soil() def __del__(self):
self.leave_soil()
#to sie drukuje jak zapytamy o stworzony obiekt
def __str__(self): #to sie drukuje jak zapytamy o stworzony obiekt
return 'Plant: %s , Soil: %s , Status: %s' % (self._name, self._soil, self._collect()) def __str__(self):
return 'Plant: %s , Soil: %s , Status: %s' % (self._name, self._soil, self._collect())
#metoda abstrakcyjna, kazda roslina ma inny czas rosniecia wiec pass
@abstractmethod #metoda abstrakcyjna, kazda roslina ma inny czas rosniecia wiec pass
def collect(self): @abstractmethod
pass def collect(self):
pass
@abstractmethod
def protect(self, protection): @abstractmethod
pass def fertillizing(self):
pass
#pobieramy współrzędne roślinki
def get_coordinates(self): @abstractmethod
if self.have_soil(): def growing(self):
a = self.get_soil() pass
a.get_coordinates(self) #get coordinates bedzie metodą w glebie
#pobieramy wspolrzedne roslinki
#pobieramy id roślinki def get_coordinates(self):
def get_id(self): if self.have_soil():
return self._id a = self.get_soil()
a.get_coordinates(self) #get coordinates jest metoda w glebie
#dodajemy glebe
def add_soil(self, soil): #pobieramy id roślinki
self._soil = soil def get_id(self):
return self._id
#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): #dodajemy glebe
return self._soil is not -1 def add_soil(self, soil):
self._soil = soil
#pobieramy jaka ma glebe, gleba tutaj będzie obiektem
def get_soil(self): #zwraca czy roslinka znajduje sie w ziemii obecnie - jak nie ma gleby to znaczy ze nie jest zasadzona jeszcze albo już.
return self._soil def have_soil(self):
return self._soil is not -1
#to w przypadku jak bedziemy wyciagac z ziemii roslinke
def leave_soil(self): #pobieramy jaka ma glebe, gleba tutaj będzie obiektem
if self.have_soil(): def get_soil(self):
a = self.get_soil() return self._soil
a.plant.remove(self) #to bedzie metoda w klasie Soil, bedzie usuwac roslinke z gleby
self._soil = -1 #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

67
soil.py Normal file
View File

@ -0,0 +1,67 @@
from datetime import datetime
class Soil:
def __init__(self, x, y, ID):
super().__init__()
self._id = ID
self._x = x
self._y = y
self._plant = -1 #nowa gleba nie ma roślinki
self._dry = 0 #procent wysuszenia gleby, tworząc nową jest nawodniona w 100%
self._starttime = datetime.now()
def __del__(self):
self.plant_remove()
def __str__(self):
return '(%s, %s), Plant: %s' % (self._x, self._y, self.have_plant())
# współrzędne pola
def get_coordinates(self):
return self._x, self._y
# id gleby
def get_id(self):
return self._id
# zasadzenie roślinki
def add_plant(self, plant):
if not self.have_plant():
plant.add_soil(self)
self._plant = plant
# zwraca czy w ziemi znajduje się roślinka
def have_plant(self):
return self._plant is not -1
# zwraca roślinkę znajdującą się w ziemii
def get_plant(self):
return self._soil
#sprawdza w ilu procentach ziemia jest sucha
def is_dry(self):
self.__drying()
if self._dry < 30:
return 'False'
elif 30 <= self._dry < 70:
return 'Medium'
else:
return 'True'
#metoda wysuszajaca ziemie. dodaje wysuszenie do ziemi, wywolywana w momencie sprawdzania czy ziemia jest sucha
def __drying(self):
checktime = datetime.now()
delta = checktime - self._starttime
a = delta //60
self._dry += a
self._starttime = checktime
self.__is_dry()
# usuwa roślinkę z ziemi i ją zwraca
def plant_remove(self):
if self.have_plant():
a = self.get_plant()
a.leave_soil()
self._plant = -1