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 if self.world.is_garbage_at(end_x, end_y): if self.vacuum.get_container_filling() < 100: self.vacuum.increase_container_filling() self.world.dust[end_x][end_y].pop() 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