Example #1
0
        public void TurtleInitialDirection_InitializeTurtleEast_ReturnEast()
        {
            LocationData boardDimension = new LocationData()
            {
                X = 5, Y = 4
            };
            LocationData exitLocation = new LocationData()
            {
                X = 4, Y = 2
            };
            LocationData startingPositon = new LocationData()
            {
                X = 0, Y = 1
            };
            var initialDirection = DirectionEnum.E;
            var mineLocations    = new[] { new LocationData()
                                           {
                                               X = 1, Y = 1
                                           }, new LocationData()
                                           {
                                               X = 3, Y = 1
                                           }
                                           , new LocationData()
                                           {
                                               X = 3, Y = 3
                                           } };

            _turtleGame = new TurtleGame(boardDimension, initialDirection, exitLocation, startingPositon, mineLocations);
            Assert.AreEqual(_turtleGame.GetDirection, DirectionEnum.E);
        }
Example #2
0
        public void TurtleFacingEast_Move_ChangedLocation()
        {
            LocationData boardDimension = new LocationData()
            {
                X = 5, Y = 4
            };
            LocationData exitLocation = new LocationData()
            {
                X = 4, Y = 2
            };
            LocationData startingPositon = new LocationData()
            {
                X = 0, Y = 1
            };
            var initialDirection = DirectionEnum.E;
            var mineLocations    = new[] { new LocationData()
                                           {
                                               X = 1, Y = 1
                                           }, new LocationData()
                                           {
                                               X = 3, Y = 1
                                           }
                                           , new LocationData()
                                           {
                                               X = 3, Y = 3
                                           } };

            _turtleGame = new TurtleGame(boardDimension, initialDirection, exitLocation, startingPositon, mineLocations);
            _turtleGame.MoveTurtle("M");
            Assert.AreEqual(_turtleGame.GetDirection, DirectionEnum.E);
            Assert.IsTrue(_turtleGame.GetLocation.IsEqual(new LocationData {
                X = 1, Y = 1
            }));
        }
Example #3
0
        public void TurtleFacingEast_RotateTurtleLeft_ReturnNorth()
        {
            LocationData boardDimension = new LocationData()
            {
                X = 5, Y = 4
            };
            LocationData exitLocation = new LocationData()
            {
                X = 4, Y = 2
            };
            LocationData startingPositon = new LocationData()
            {
                X = 0, Y = 1
            };
            var initialDirection = DirectionEnum.E;
            var mineLocations    = new[] { new LocationData()
                                           {
                                               X = 1, Y = 1
                                           }, new LocationData()
                                           {
                                               X = 3, Y = 1
                                           }
                                           , new LocationData()
                                           {
                                               X = 3, Y = 3
                                           } };

            _turtleGame = new TurtleGame(boardDimension, initialDirection, exitLocation, startingPositon, mineLocations);
            _turtleGame.MoveTurtle("L");
            Assert.AreEqual(_turtleGame.GetDirection, DirectionEnum.N);
        }
Example #4
0
        public void Turtle_Setup()
        {
            LocationData boardDimension = new LocationData()
            {
                X = 5, Y = 4
            };
            LocationData exitLocation = new LocationData()
            {
                X = 4, Y = 2
            };
            LocationData startingPositon = new LocationData()
            {
                X = 0, Y = 1
            };
            var initialDirection = DirectionEnum.N;
            var mineLocations    = new[] { new LocationData()
                                           {
                                               X = 1, Y = 1
                                           }, new LocationData()
                                           {
                                               X = 3, Y = 1
                                           }
                                           , new LocationData()
                                           {
                                               X = 3, Y = 3
                                           } };

            _turtleGame = new TurtleGame(boardDimension, initialDirection, exitLocation, startingPositon, mineLocations);
        }
Example #5
0
        public async Task RunGame()
        {
            try
            {
                var boardConfiguration = await _boardConfigurationProvider.GetBoardConfiguration();

                var movesConfiguration = await _movesConfigurationProvider.GetMovesConfiguration();

                if (_boardValidators.Any(x => !x.IsValid(boardConfiguration)))
                {
                    _outputLogger.LogMessage("Board Configuration Invalid");
                    return;
                }

                if (_moveValidators.Any(x => !x.IsValid(movesConfiguration)))
                {
                    _outputLogger.LogMessage("Move Configuration Invalid");
                    return;
                }

                var turtleGame = new TurtleGame(boardConfiguration);

                foreach (var move in movesConfiguration.Moves)
                {
                    turtleGame.Apply(move.ToMoveType());

                    if (turtleGame.HitAMine)
                    {
                        _outputLogger.LogMessage($"Hit a Mine at ({turtleGame.CurrentXPosition},{turtleGame.CurrentYPosition})");
                        break;
                    }

                    if (turtleGame.ReachedEnd)
                    {
                        _outputLogger.LogMessage($"Reached The End at ({turtleGame.CurrentXPosition},{turtleGame.CurrentYPosition})");
                        break;
                    }
                }

                if (!turtleGame.ReachedEnd && !turtleGame.HitAMine)
                {
                    _outputLogger.LogMessage($"No Moves Remaining finished at ({turtleGame.CurrentXPosition},{turtleGame.CurrentYPosition})");
                }
            }
            catch (Exception ex)
            {
                _outputLogger.LogMessage("Error Running Game");
                throw;
            }
        }
            public TestContext CreateGame()
            {
                _sut = new TurtleGame(_boardConfiguration);

                return(this);
            }