from DataModels.Cell import Cell from DataModels.Road import Road from DataModels.House import House from DataModels.Dump import Dump from config import GRID_WIDTH, GRID_HEIGHT, DELAY from utilities import movement, check_moves from Traversal.DFS import DFS import pygame class GC(Cell): def __init__(self, x, y, max_rubbish, yellow=0, green=0, blue=0): Cell.__init__(self, x, y, max_rubbish, yellow, green, blue) self.moves = [] self.old_time = pygame.time.get_ticks() def move(self, direction, environment): self.x, self.y = movement(environment, self.x, self.y)[0][direction] self.update_rect(self.x, self.y) print(check_moves(environment, self.x, self.y,direction)) def collect(self, enviromnent): x, y = [self.x, self.y] coordinates = [(x, y - 1), (x, y + 1), (x - 1, y), (x + 1, y)] for coordinate in coordinates: if coordinate[0]<0 or coordinate[1]<0: continue try: item = enviromnent[coordinate[0]][coordinate[1]] except: continue if(type(item) == House or type(item) == Dump): item.return_trash(self) self.update_image() def find_houses(self,enviromnent, house_count): x = self.x y = self.y result = [] for home in range(house_count): avalible_moves = check_moves(enviromnent, x,y) [x,y],result = DFS(enviromnent,avalible_moves,[[x,y]]) self.moves.extend(result) self.moves.reverse() def make_actions_from_list(self,environment): now = pygame.time.get_ticks() if len(self.moves)==0 or now - self.old_time <= DELAY: return self.old_time = pygame.time.get_ticks() if self.moves[-1] == "pick_garbage": self.collect(environment) self.moves.pop() return self.x, self.y = self.moves.pop() self.update_rect(self.x,self.y)