-Added support to precalculated BFS2 -Added way to set HydrateValue by HydrateIndex -Minor changes in Tractor.py -Added flags to make handling different BFS implements easier

This commit is contained in:
jakzar 2024-04-15 10:49:25 +02:00
parent d38c4d9593
commit e0397b95a7
5 changed files with 68 additions and 23 deletions

32
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

@ -59,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):

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):