static void Main(string[] args) { Plateau plateau = new Plateau(5, 5); Rover rover1 = new Rover(1, 2, Direction.NORTH); AddRover(ref plateau, ref rover1); // LMLMLMLMM rover1.Turn(Towards.LEFT); rover1.MoveForward(); rover1.Turn(Towards.LEFT); rover1.MoveForward(); rover1.Turn(Towards.LEFT); rover1.MoveForward(); rover1.Turn(Towards.LEFT); rover1.MoveForward(); rover1.MoveForward(); rover1.Print(); // RIP at -1 0 W Rover rover2 = new Rover(0, 0, Direction.WEST); AddRover(ref plateau, ref rover2); rover2.MoveForward(); rover2.Print(); // Shouldn't allow another rover to die there Rover rover3 = new Rover(0, 0, Direction.WEST); AddRover(ref plateau, ref rover3); rover3.MoveForward(); rover3.Print(); // But they can die towards another direction Rover rover4 = new Rover(0, 0, Direction.SOUTH); AddRover(ref plateau, ref rover4); rover4.MoveForward(); rover4.Print(); // Now that direction is full as well Rover rover5 = new Rover(0, 0, Direction.SOUTH); AddRover(ref plateau, ref rover5); rover5.MoveForward(); rover5.Print(); }
static void AddRover(ref Plateau plateau, ref Rover rover) { rover.CheckHandler = plateau.OnCheck; rover.MovedHandler = plateau.OnMoved; }