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 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) def movement(self, environment, x = None ,y = None): if((x,y) == (None, None)): x = self.x y = self.y movement = { "right": (x + 1, y) if x + 1 < GRID_WIDTH and type(environment[x + 1][y]) == Road else (x, y), "left": (x - 1, y) if x - 1 >= 0 and type(environment[x - 1][y]) == Road else (x, y), "down": (x, y + 1) if y + 1 < GRID_HEIGHT and type(environment[x][y + 1]) == Road else (x, y), "up": (x, y - 1) if y - 1 >= 0 and type(environment[x][y - 1]) == Road else (x, y) } forbidden_movement = { "right": "left", "left": "right", "up": "down", "down": "up" } return (movement, forbidden_movement) def check_moves(self, direction, environment, x = None, y = None): if((x,y) == (None, None)): x = self.x y = self.y return ([dir for dir in self.movement(environment)[0] if self.movement(environment)[0][dir] != (x,y) and dir != self.movement(environment)[1][direction]]) def move(self, direction, environment): self.x, self.y = self.movement(environment)[0][direction] self.update_rect(self.x, self.y) print(self.check_moves(direction, environment)) 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()