Machine_learning_2023/domain/commands/vacuum_move_command.py

37 lines
1.2 KiB
Python

from typing import Tuple
from domain.commands.command import Command
from domain.entities.vacuum import Vacuum
from domain.world import World
class VacuumMoveCommand(Command):
def __init__(
self, world: World, vacuum: Vacuum, move_vector: Tuple[int, int]
) -> None:
super().__init__()
self.world = world
self.vacuum = vacuum
self.dx = move_vector[0]
self.dy = move_vector[1]
def run(self):
end_x = self.vacuum.x + self.dx
end_y = self.vacuum.y + self.dy
if not self.world.accepted_move(end_x, end_y):
return
garbage = self.world.garbage_at(end_x, end_y)
if len(garbage) > 0:
for item in garbage:
if self.vacuum.get_container_filling() < 100:
self.vacuum.increase_container_filling()
self.world.delete_entities_at_Of_type(item.x, item.y, item.type)
self.world.dust[end_x][end_y].remove(item)
if self.world.is_docking_station_at(end_x, end_y):
self.vacuum.dump_trash()
self.vacuum.x = end_x
self.vacuum.y = end_y