Compare commits

...

22 Commits

Author SHA1 Message Date
05e028c171 Merge pull request 'ram' (#11) from ram into master
Reviewed-on: #11
2024-03-25 10:01:36 +01:00
a5691816ac -Merged classes slot and roslina. -Added function to display current status of plant. 2024-03-24 23:30:02 +01:00
4c9bbed441 Wprowadzono poprawki do klas Roslina, Stan oraz Akcja. 2024-03-24 19:19:49 +01:00
be47ed188f dodado akcje do osprzetu i lekkie poprawki w klasie Akcja 2024-03-24 13:10:02 +01:00
tafit0902
17f6f36e77 dodanie klasy srodek oraz akcja 2024-03-24 12:31:56 +01:00
tafit0902
81ebfc91b6 komentarze i wyrzucenie chroby wirusowej 2024-03-24 12:17:44 +01:00
tafit0902
3fb9b77d38 poprawki 2024-03-24 12:01:41 +01:00
f2539c9fd0 Merge pull request 'traktor_osprzet' (#9) from traktor_osprzet into ram
Reviewed-on: #9
2024-03-24 11:58:35 +01:00
tafit0902
30d81744cf dodanie wiecej srodkow 2024-03-23 23:19:38 +01:00
tafit0902
78eb846720 dodano akcje oraz srodek, przykladowe srodki tworzone w akcjach 2024-03-23 23:17:51 +01:00
25ce2bb241 usunieto plik niewazny 4 2024-03-23 21:07:56 +01:00
8c1a8cb882 usunieto plik niewazny 3 2024-03-23 21:07:40 +01:00
97214964cd usunieto plik nieważny 2024-03-23 21:07:22 +01:00
8a89bbcf1f usunieto workspace 2024-03-23 21:07:01 +01:00
c55f2b88c3 Dodano wpis do .gitignore 2024-03-23 21:04:45 +01:00
968e9641d7 traktor slot i klasa osprzet 2024-03-23 21:00:08 +01:00
24fe7c40fc Merge pull request 'Utworzono klasy Roslina oraz Stan.' (#8) from roslina&stan into ram
Reviewed-on: #8
2024-03-23 16:37:11 +01:00
fea90a983d Utworzono klasy Roslina oraz Stan. 2024-03-23 16:22:13 +01:00
47a43c5599 Merge pull request 'cleaning' (#7) from cleaning into ram
Reviewed-on: #7
2024-03-23 14:47:00 +01:00
e3b8f1c84c Removed unused variable condition from class slot 2024-03-23 14:30:36 +01:00
8d1d176d5b Added function to quickly return scaled desired plant image. 2024-03-23 13:59:24 +01:00
b345f827b3 Cleaned up main.py (by adding files app,colors,ui), added images for plants, added support for plant image in slot class, changed image loading by scaling it once at the start 2024-03-23 13:46:48 +01:00
20 changed files with 454 additions and 127 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
__pycache__/
__pycache__/
.idea/

47
Akcja.py Normal file
View File

@ -0,0 +1,47 @@
import Srodek
#w przyszłości trzeba przenieść definicję środków do innego pliku inicjalizującego
class Akcja:
srodki = [] #lista obiektów klasy Srodek
benefits = [] #lista przechowująca benefity płynące z wykonania akcji
def __init__(self, typ):
self.typ = typ
if self.typ == "nawodnienie":
self.srodki.append(Srodek.Srodek(1, "woda", "woda"))
self.srodki.append(Srodek.Srodek(1.5, "powerade", "woda")) #nawadnia lepiej niż woda
self.benefits.append(typ)
self.benefits.append(100)
if self.typ == "zyznosc":
self.srodki.append(Srodek.Srodek(2, "obornik", "nawoz"))
self.srodki.append(Srodek.Srodek(3, "azotan", "nawoz"))
self.srodki.append(Srodek.Srodek(4, "wapno", "nawoz"))
self.srodki.append(Srodek.Srodek(5, "superfosfat", "nawoz"))
self.benefits.append(typ)
self.benefits.append(100)
if self.typ == "wzrost":
self.srodki.append(Srodek.Srodek(6, "witaminy", "odzywka"))
self.srodki.append(Srodek.Srodek(7, "aminokwasy", "odzywka"))
self.srodki.append(Srodek.Srodek(8, "algi morskie", "odzywka"))
self.benefits.append(typ)
self.benefits.append(20)
if self.typ == "grzyb":
self.srodki.append(Srodek.Srodek(9, "mankozeb", "ochrona"))
self.srodki.append(Srodek.Srodek(10, "czosnek", "ochrona")) #tak czosnek zabija grzyby
self.benefits.append("choroba")
self.benefits.append("brak")
if self.typ == "bakteria":
self.srodki.append(Srodek.Srodek(11, "miedź", "ochrona"))
self.srodki.append(Srodek.Srodek(12, "streptomycyna ", "ochrona"))
self.benefits.append("choroba")
self.benefits.append("brak")
if self.typ == "pasożyt":
self.srodki.append(Srodek.Srodek(13, "Cyjantraniliprol", "ochrona"))
self.srodki.append(Srodek.Srodek(14, "Permetryna", "ochrona"))
self.srodki.append(Srodek.Srodek(15, "Abamektyna", "ochrona"))
self.benefits.append("choroba")
self.benefits.append("brak")
def getBenefit(self):
return self.benefits

59
App.py Normal file
View File

@ -0,0 +1,59 @@
import pygame
import Colors
import Tractor
import Pole
import time
import displayControler as dCon
import Image
import Osprzet
pygame.init()
screen = pygame.display.set_mode((dCon.getScreenWidth(), dCon.getScreenHeihgt()))
image_loader=Image.Image()
image_loader.load_images()
pole=Pole.Pole(screen,image_loader)
pole.draw_grid() #musi byc tutaj wywołane ponieważ inicjalizuje sloty do slownika
#Tractor creation
traktor_slot = pole.get_slot_from_cord((0, 0))
traktor = Tractor.Tractor(traktor_slot, screen, Osprzet.plug)
def init_demo(): #Demo purpose
old_info=""
traktor.draw_tractor()
time.sleep(2)
pole.randomize_colors()
traktor.draw_tractor()
while True:
time.sleep(0.5)
demo_move()
old_info=get_info(old_info)
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
def init(demo):
pygame.display.update()
if(demo==True):
init_demo()
#TODO: Implement
def demo_move():
current_slot = traktor.slot
if current_slot:
current_slot.redraw_image() # Przerysowanie obrazu dla aktualnego slotu
traktor.random_move(pole)
def get_info(old_info):
(x,y)=pygame.mouse.get_pos()
new_info=pole.check_collision(x,y)
if(old_info!=new_info):
print(new_info)
return new_info

14
Colors.py Normal file
View File

@ -0,0 +1,14 @@
import random
BLACK = (0, 0, 0)
BROWN = (139, 69, 19)
WHITE = (255, 255, 255)
RED=(255,0,0)
GREEN=(0,255,0)
def random_color():
x=random.randint(0,3)
switcher={0:BROWN,
1:GREEN,
2:RED,
3:WHITE}
return switcher[x]

29
Image.py Normal file
View File

@ -0,0 +1,29 @@
import pygame
import displayControler as dCon
import random
class Image:
def __init__(self):
self.plants_image_dict={}
self.tractor_image=None
def load_images(self):
files_plants={0:"borowka",
1:"kukurydza",
2:"pszenica",
3:"slonecznik",
4:"winogrono",
5:"ziemniak"}
for index in files_plants:
plant_image=pygame.image.load("images/plants/"+files_plants[index]+".jpg")
plant_image=pygame.transform.scale(plant_image,(dCon.CUBE_SIZE,dCon.CUBE_SIZE))
self.plants_image_dict[files_plants[index]]=plant_image
tractor_image=pygame.image.load("images/traktor.png")
tractor_image=pygame.transform.scale(tractor_image,(dCon.CUBE_SIZE,dCon.CUBE_SIZE))
def return_random_plant(self):
x=random.randint(0,5)
keys=list(self.plants_image_dict.keys())
plant=keys[x]
return (plant,self.plants_image_dict[plant])
def return_plant(self,plant_name):
return (plant_name,self.plants_image_dict[plant_name])

19
Osprzet.py Normal file
View File

@ -0,0 +1,19 @@
import Akcja
class Osprzet:
def __init__(self, id, marka, model, akcje = None):
self.id = id
self.marka = marka
self.model = model
if akcje is None:
self.akcje = []
else:
self.akcje = akcje
plug = Osprzet(1,'Bomet', 'U031')
siewnik = Osprzet(2, "Amazone", "12001-C")
rozsiewacz = Osprzet(3, 'John Deere', 'TF 1500', [Akcja.Akcja("zyznosc")])
opryskiwacz = Osprzet(4, 'John Deere', 'M720', [Akcja.Akcja("grzyb"), Akcja.Akcja("bakterie"), Akcja.Akcja("nawodnienie"), Akcja.Akcja("wzrost")])
header = Osprzet(5, 'John Deere', 'X350R')
#jak istnieją jakieś bardziej profesjonalne nazwy czy lepsze to śmiało zmieńcie

59
Pole.py Normal file
View File

@ -0,0 +1,59 @@
import displayControler as dCon
import Slot
import Colors
import pygame
import time
import Ui
import math
class Pole:
def __init__(self,screen,image_loader):
self.screen=screen
self.slot_dict={} #Slot are stored in dictionary with key being a Tuple of x and y coordinates so top left slot key is (0,0) and value is slot object
self.ui=Ui.Ui(screen)
self.image_loader=image_loader
def get_slot_from_cord(self,coordinates):
(x_axis,y_axis)=coordinates
return self.slot_dict[(x_axis,y_axis)]
def set_slot(self,coodrinates,slot): #set slot in these coordinates
(x_axis,y_axis)=coodrinates
self.slot_dict[(x_axis,y_axis)]=slot
def get_slot_dict(self): #returns whole slot_dict
return self.slot_dict
#Draw grid and tractor (new one)
def draw_grid(self):
for x in range(0,dCon.NUM_X): #Draw all cubes in X axis
for y in range(0,dCon.NUM_Y): #Draw all cubes in Y axis
new_slot=Slot.Slot(x,y,Colors.BROWN,self.screen,self.image_loader) #Creation of empty slot
self.set_slot((x,y),new_slot) #Adding slots to dict
slot_dict=self.get_slot_dict()
for coordinates in slot_dict:
slot_dict[coordinates].draw()
def randomize_colors(self):
pygame.display.update()
time.sleep(3)
self.ui.render_text("Randomizing Crops")
for coordinates in self.slot_dict:
self.slot_dict[coordinates].set_random_plant()
def change_color_of_slot(self,coordinates,color): #Coordinates must be tuple (x,y) (left top slot has cord (0,0) ), color has to be from defined in Colors.py or custom in RGB value (R,G,B)
self.get_slot_from_cord(coordinates).color_change(color)
def get_neighbor(self, slot, dx, dy):
neighbor_x = slot.x_axis + dx
neighbor_y = slot.y_axis + dy
return self.get_slot_from_cord((neighbor_x, neighbor_y))
def is_valid_move(self, coordinates):
return coordinates in self.slot_dict
def check_collision(self,mouse_x,mouse_y):
mouse_x=math.floor(mouse_x/dCon.CUBE_SIZE)
mouse_y=math.floor(mouse_y/dCon.CUBE_SIZE)
collided=self.get_slot_from_cord((mouse_x,mouse_y))
return collided.print_status()

82
Roslina.py Normal file
View File

@ -0,0 +1,82 @@
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
"""
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()
self.stan.set_random()
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 report_status(self):
return f"Nazwa rosliny: {self.nazwa} "+self.stan.report_all()

41
Slot.py
View File

@ -1,20 +1,47 @@
import pygame
import displayControler as dCon
import Colors
import random
import Image
import Roslina
BLACK=(0,0,0)
BORDER_COLOR=BLACK
BORDER_THICKNESS=1 #Has to be INT value
class Slot:
def __init__(self,x_axis,y_axis,color,screen): #TODO crop and related to it things handling. for now as a place holder crop=>color
def __init__(self,x_axis,y_axis,color,screen,image_loader):
self.x_axis=x_axis
self.y_axis=y_axis
self.color=color
self.plant_image = None
self.plant=None
self.screen=screen
self.field=pygame.Rect(self.x_axis*dCon.CUBE_SIZE,self.y_axis*dCon.CUBE_SIZE,dCon.CUBE_SIZE,dCon.CUBE_SIZE)
self.image_loader=image_loader
def draw(self):
pygame.draw.rect(self.screen,self.color,self.field,0) #Draw field
pygame.draw.rect(self.screen,BLACK,self.field,BORDER_THICKNESS) #Draw border
pygame.draw.rect(self.screen,Colors.BROWN,self.field,0) #Draw field
pygame.draw.rect(self.screen,Colors.BLACK,self.field,BORDER_THICKNESS) #Draw border
pygame.display.update()
def redraw_image(self):
self.set_image()
def color_change(self,color):
self.color=color
self.plant=color
self.draw()
def set_random_plant(self):
(plant_name,self.plant_image)=self.random_plant()
self.plant=Roslina.Roslina(plant_name)
self.set_image()
def set_image(self):
if self.plant_image is None:
self.plant_image = self.image_loader.return_random_plant()
self.screen.blit(self.plant_image, (self.x_axis * dCon.CUBE_SIZE, self.y_axis * dCon.CUBE_SIZE))
pygame.draw.rect(self.screen, Colors.BLACK, self.field, BORDER_THICKNESS)
def random_plant(self): #Probably will not be used later only for demo purpouse
return self.image_loader.return_random_plant()
def print_status(self):
return f"wspolrzedne: (X:{self.x_axis} Y:{self.y_axis}) "+self.plant.report_status()

5
Srodek.py Normal file
View File

@ -0,0 +1,5 @@
class Srodek:
def __init__(self, id, nazwa, typ):
self.id = id
self.nazwa = nazwa
self.typ = typ

48
Stan.py Normal file
View File

@ -0,0 +1,48 @@
import Akcja
import random
class Stan:
nawodnienie = None #[int] 0-100 (0-60: trzeba podlać), spada w zaleznosci od rosliny: aktualizowane bedzie "w tle"
zyznosc = None #[int] 0-100 (0-60: trzeba użyźnić), spada w zaleznosci od rosliny: aktualizowane bedzie "w tle"
wzrost = None #[int] 0-100 (75-100: scinanie), wzrasta w zaleznosci od rosliny: aktualizowane bedzie "w tle"
choroba = None #[string] brak, grzyb, bakteria, pasożyt
akcja = None #[Akcja]
def __init__(self, nawodnienie, zyznosc, wzrost, choroba):
self.nawodnienie = nawodnienie
self.zyznosc = zyznosc
self.wzrost = wzrost
self.choroba = choroba
def __init__(self):
self.nawodnienie=0
def set_random(self):
self.nawodnienie=random.randint(0,100)
self.zyznosc=random.randint(0,100)
self.wzrost=random.randint(0,100)
self.choroba=random.choice(["brak","grzyb","bakteria","pasozyt"])
def checkStan(self):
# sprawdza stan rośliny i podejmuje akcje jeśli potrzebna
if self.nawodnienie <= 60:
self.akcja = Akcja.Akcja("nawodnienie")
return
elif self.zyznosc <= 60:
self.akcja = Akcja.Akcja("zyznosc")
return
elif self.wzrost >= 75:
self.akcja = Akcja.Akcja("wzrost")
return
elif self.choroba != "brak":
self.akcja = Akcja.Akcja(self.choroba)
return
else:
self.akcja = None
return
def report_all(self):
return f"Nawodnienie: {self.nawodnienie} Zyznosc: {self.zyznosc} Wzrost: {self.wzrost} Choroba: {self.choroba}"

View File

@ -2,41 +2,52 @@ import pygame
import random
import displayControler as dCon
import Slot
import Osprzet
class Tractor:
def __init__(self,x_axis,y_axis,screen):
self.x_axis=x_axis
self.y_axis=y_axis
def __init__(self,slot,screen, osprzet):
self.tractor_image = pygame.image.load('images/traktor.png')
self.tractor_image = pygame.transform.scale(self.tractor_image, (dCon.CUBE_SIZE, dCon.CUBE_SIZE))
self.screen=screen
self.slot=None
self.slot=slot
self.osprzet = osprzet
def draw_tractor(self):
self.screen.blit(self.tractor_image, (self.x_axis*dCon.CUBE_SIZE,self.y_axis*dCon.CUBE_SIZE))
self.screen.blit(self.tractor_image, (self.slot.x_axis*dCon.CUBE_SIZE,self.slot.y_axis*dCon.CUBE_SIZE))
pygame.display.update()
def move_tractor(self,x):
if(x==0):
if(dCon.isValidMove(self.x_axis + 1, self.y_axis)):
print("Ruch w prawo")
self.x_axis=self.x_axis+1
elif(x==1):
if(dCon.isValidMove(self.x_axis - 1, self.y_axis)):
print("Ruch w lewo")
self.x_axis=self.x_axis-1
elif(x==2):
if(dCon.isValidMove(self.x_axis, self.y_axis + 1)):
print("Ruch w dol")
self.y_axis=self.y_axis+1
elif(x==3):
if(dCon.isValidMove(self.x_axis, self.y_axis - 1)):
print("Ruch w gore")
self.y_axis=self.y_axis-1
self.draw_tractor()
def move_tractor(self, pole, direction):
next_slot = None
if direction == "right" and pole.is_valid_move((self.slot.x_axis + 1, self.slot.y_axis)):
next_slot = pole.get_neighbor(self.slot, 1, 0)
elif direction == "left" and pole.is_valid_move((self.slot.x_axis - 1, self.slot.y_axis)):
next_slot = pole.get_neighbor(self.slot, -1, 0)
elif direction == "down" and pole.is_valid_move((self.slot.x_axis, self.slot.y_axis + 1)):
next_slot = pole.get_neighbor(self.slot, 0, 1)
elif direction == "up" and pole.is_valid_move((self.slot.x_axis, self.slot.y_axis - 1)):
next_slot = pole.get_neighbor(self.slot, 0, -1)
if next_slot:
self.slot = next_slot
self.draw_tractor()
def random_move(self, pole):
directions = ["right", "left", "down", "up"]
direction = random.choice(directions)
self.move_tractor(pole, direction)
def random_move(self):
x=random.randint(0,3)
self.move_tractor(x)
#to tak zrobiłam już na później, może się przyda
def change_osprzet(self, new_osprzet):
self.osprzet = new_osprzet
def print_osprzet_info(self):
print("ID:", self.osprzet.id)
print("Marka:", self.osprzet.marka)
print("Model:", self.osprzet.model)
if self.osprzet.akcje:
print("Akcje:")
for akcja in self.osprzet.akcje:
print("- Typ:", akcja.typ)
else:
print("Brak akcji przypisanych do tego sprzętu.")

16
Ui.py Normal file
View File

@ -0,0 +1,16 @@
import pygame
import displayControler as dCon
import Colors
class Ui:
def __init__(self,screen):
self.screen=screen
self.font='freesansbold.ttf' #Feel free to change it :D
self.font_size=int(32)
def render_text(self,string_to_print):
font=pygame.font.Font(self.font,self.font_size)
text=font.render(string_to_print,True,Colors.BLACK,Colors.WHITE)
textRect=text.get_rect()
textRect.center=(dCon.getScreenWidth() // 2,dCon.getScreenHeihgt() // 2)
self.screen.blit(text,textRect)

BIN
images/plants/borowka.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

BIN
images/plants/kukurydza.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

BIN
images/plants/pszenica.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 KiB

BIN
images/plants/winogrono.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
images/plants/ziemniak.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

94
main.py
View File

@ -1,93 +1,3 @@
import pygame
import Slot
import Tractor
import random
import time
import displayControler as dCon
pygame.init()
BLACK = (0, 0, 0)
BROWN = (139, 69, 19)
WHITE = (255, 255, 255)
RED=(255,0,0)
GREEN=(0,255,0)
screen = pygame.display.set_mode((dCon.getScreenWidth(), dCon.getScreenHeihgt()))
screen.fill(WHITE)
pygame.display.update()
#Tractor creation
traktor=Tractor.Tractor(0,0,screen)
SLOT_DICT={} #Slot are stored in dictionary with key being a Tuple of x and y coordinates so top left slot key is (0,0) and value is slot object
"""#Draw grid and tractor (old one)
def draw_grid():
for x in range(0, 8):
pygame.draw.line(screen, BLACK, (x*CUBE_SIZE, 0), (x*CUBE_SIZE, HEIGHT)) #We got 8 lines in Y axis so to draw them we use x from range <0,7) to make slot manage easier
for y in range(0, 4):
pygame.draw.line(screen, BLACK, (0, y*CUBE_SIZE), (WIDTH, y*CUBE_SIZE)) #We got 4 lines in X axis so to draw them we use y from range <0,4) to make slot manage easier
# Draw tractor
tractor_image = pygame.image.load('images/traktor.png')
tractor_image = pygame.transform.scale(tractor_image, (CUBE_SIZE, CUBE_SIZE))
screen.blit(tractor_image, (CUBE_SIZE - 128, CUBE_SIZE - 128))"""
#Draw grid and tractor (new one)
def draw_grid():
for x in range(0,dCon.NUM_X): #We got 8 cubes in X axis so we use for from 0 to 7 do draw them all
for y in range(0,dCon.NUM_Y): #We got 4 cubes in Y axis so we use for from 0 to 3 to draw them all
new_slot=Slot.Slot(x,y,BROWN,screen) #Creation of empty slot
SLOT_DICT[(x,y)]=new_slot #Adding slots to dict
for entity in SLOT_DICT:
SLOT_DICT[entity].draw()
traktor.draw_tractor()
def change_color_of_slot(coordinates,color): #Coordinates must be tuple (x,y) x from range 0,7 and y in range 0,3 (left top slot has cord (0,0) ), color has to be from defined or custom in RGB value (R,G,B)
SLOT_DICT[coordinates].color_change(color)
def random_color():
x=random.randint(0,3)
switcher={0:BROWN,
1:GREEN,
2:RED,
3:WHITE}
return switcher[x]
#Demo purpose, can be reused for photos of crops in the future(?)
def randomize_colors():
font=pygame.font.Font('freesansbold.ttf',32)
text=font.render('Randomizing crops',True,BLACK,WHITE)
textRect=text.get_rect()
textRect.center=(dCon.getScreenWidth() // 2,dCon.getScreenHeihgt() // 2)
screen.blit(text,textRect)
pygame.display.update()
time.sleep(3)
for coordinates in SLOT_DICT:
SLOT_DICT[coordinates].color_change(random_color())
traktor.draw_tractor()
def init_demo(): #Demo purpose
draw_grid()
time.sleep(2)
randomize_colors()
def demo_move():
SLOT_DICT[(traktor.x_axis,traktor.y_axis)].draw()
traktor.random_move()
init_demo()
while True:
time.sleep(1)
demo_move()
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
import App
App.init(demo=True)#DEMO=TRUE WILL INIT DEMO MODE WITH RANDOM COLOR GEN