SZI2019SmieciarzWmi/DataModels/GC.py

62 lines
2.1 KiB
Python

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