Compare commits

..

2 Commits

8 changed files with 99 additions and 31 deletions

45
App.py

File diff suppressed because one or more lines are too long

8
BFS.py
View File

@ -1,4 +1,6 @@
import random
import pygame
import Node
from displayControler import NUM_X, NUM_Y
@ -84,6 +86,9 @@ def BFS1(istate):
x.parent = elem
x.action = resp[0]
fringe.append(x)
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
@ -159,6 +164,9 @@ def BFS2(istate):
x.parent = elem
x.action = resp[0]
fringe.append(x)
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()

View File

@ -6,6 +6,7 @@ class Image:
def __init__(self):
self.plants_image_dict={}
self.tractor_image=None
self.garage_image=None
def load_images(self):
files_plants={0:"borowka",
1:"kukurydza",
@ -19,6 +20,8 @@ class Image:
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))
garage=pygame.image.load("images/garage.png")
self.garage_image=pygame.transform.scale(garage,(dCon.CUBE_SIZE,dCon.CUBE_SIZE))
def return_random_plant(self):
x=random.randint(0,5)
keys=list(self.plants_image_dict.keys())
@ -26,4 +29,7 @@ class Image:
return (plant,self.plants_image_dict[plant])
def return_plant(self,plant_name):
return (plant_name,self.plants_image_dict[plant_name])
return (plant_name,self.plants_image_dict[plant_name])
def return_garage(self):
return self.garage_image

View File

@ -33,13 +33,18 @@ class Pole:
slot_dict=self.get_slot_dict()
for coordinates in slot_dict:
slot_dict[coordinates].draw()
garage=self.slot_dict[(0,0)]
garage.set_garage_image()
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()
if(coordinates==(0,0)):
continue
else:
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)

14
Slot.py
View File

@ -15,6 +15,7 @@ class Slot:
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
self.garage_image=None
def draw(self):
pygame.draw.rect(self.screen,Colors.BROWN,self.field,0) #Draw field
@ -39,6 +40,11 @@ class Slot:
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 set_garage_image(self):
self.plant_image=self.image_loader.return_garage()
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()
@ -53,4 +59,12 @@ class Slot:
return f"wspolrzedne: (X:{self.x_axis} Y:{self.y_axis}) "+self.plant.report_status()
def irrigatePlant(self):
self.plant.stan.nawodnienie = 100
def setHydrate(self,index):
if(index==0):
self.plant.stan.nawodnienie=random.randint(0,60)
elif(index==1):
self.plant.stan.nawodnienie=random.randint(61,100)
elif(index==-1):
pass

View File

@ -6,6 +6,11 @@ import Slot
import Osprzet
import Node
tab = [-1, 0, 0, 0, 0, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 1, 0, 1, 1,
0, 1, 0, 1, 0, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
class Tractor:
@ -13,7 +18,7 @@ class Tractor:
DIRECTION_SOUTH = 'S'
DIRECTION_WEST = 'W'
DIRECTION_EAST = 'E'
def __init__(self,slot,screen, osprzet,clock):
def __init__(self,slot,screen, osprzet,clock,bfs2_flag):
self.tractor_images = {
Tractor.DIRECTION_NORTH: pygame.transform.scale(pygame.image.load('images/traktorN.png'),
(dCon.CUBE_SIZE, dCon.CUBE_SIZE)),
@ -31,6 +36,7 @@ class Tractor:
self.osprzet = osprzet
self.clock=clock
self.slot_hydrate_dict={}
self.bfs2_flag=bfs2_flag
def draw_tractor(self):
@ -102,13 +108,30 @@ class Tractor:
self.do_move_if_valid(pole,(0,0))
def initial_move(self,pole):
for y in range (0,dCon.NUM_Y):
if(y%2==0):
for x in range(0,dCon.NUM_X):
self.snake_move(pole,x,y)
else:
for x in range(dCon.NUM_X,-1,-1):
self.snake_move(pole,x,y)
if (self.bfs2_flag==True):
index=0
for y in range (0,dCon.NUM_Y):
if(y%2==0):
for x in range(0,dCon.NUM_X):
if(pole.is_valid_move((x,y))):
pole.get_slot_from_cord((x,y)).setHydrate(tab[index])
self.snake_move(pole,x,y)
index=index+1
else:
for x in range(dCon.NUM_X,-1,-1):
if(pole.is_valid_move((x,y))):
pole.get_slot_from_cord((x,y)).setHydrate(tab[index])
self.snake_move(pole,x,y)
index=index+1
else:
for y in range (0,dCon.NUM_Y):
if(y%2==0):
for x in range(0,dCon.NUM_X):
self.snake_move(pole,x,y)
else:
for x in range(dCon.NUM_X,-1,-1):
self.snake_move(pole,x,y)
def snake_move(self,pole,x,y):
@ -155,5 +178,8 @@ class Tractor:
else:
print("Brak akcji przypisanych do tego sprzętu.")
def irrigateSlot(self):
self.slot.irrigatePlant()
try:
self.slot.irrigatePlant()
except:
pass

View File

@ -1,6 +1,6 @@
CUBE_SIZE = 64
NUM_X = 6
NUM_Y = 3
NUM_X = 10
NUM_Y = 5
#returns true if tractor can move to specified slot
def isValidMove(x, y):

BIN
images/garage.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB