Exemplo n.º 1
0
        public MoveOutCome MoveNext(Position newPosition)
        {
            MoveOutCome moveOutCome = MoveOutCome.MoveSucessful;

            if (newPosition.Equals(_currentPosition))
            {
                return(MoveOutCome.NoChange);
            }

            if (!CheckNewPostionWithInBoundry(newPosition))
            {
                return(MoveOutCome.OutOfBuondsMove);
            }

            if (!ValidateNextMove(newPosition))
            {
                return(MoveOutCome.IllegalMoveFromCurrentPosition);
            }

            if (HasHitMine(newPosition))
            {
                moveOutCome = MoveOutCome.HitMine;
            }

            if (HasHitExit(newPosition))
            {
                moveOutCome = MoveOutCome.HitExit;
            }

            DoMove(newPosition);
            return(moveOutCome);
        }
Exemplo n.º 2
0
        private void ExecuteMoves(Position lastPosition)
        {
            int count = 1;

            foreach (Position movePosition in _iConfiguration.Moves)
            {
                MoveOutCome moveOutCome = _turtleMoveChange.MoveNext(movePosition);

                switch (moveOutCome)
                {
                case MoveOutCome.IllegalMoveFromCurrentPosition:
                    _ilogger.InvalidNextMove("Illegal move from position " + lastPosition.ToString() + " to position " + movePosition);
                    _ilogger.Info("Game over");
                    return;

                case MoveOutCome.OutOfBuondsMove:
                    _ilogger.NewPostionWithInBoundry("Position " + movePosition.ToString() + " is out of bounds.");
                    _ilogger.Info("Game over");
                    return;

                case MoveOutCome.HitExit:
                    if (count == _iConfiguration.Moves.Count)
                    {
                        _ilogger.HasHitExit("Exit position hit at " + movePosition.ToString());
                        _ilogger.Info("Game over");
                    }
                    else
                    {
                        _ilogger.HasHitExitButMoveLeft("Exit position hit at " + movePosition.ToString() + " but there are still moves left");
                        _ilogger.Info("Game over");
                    }
                    return;

                case MoveOutCome.HitMine:
                    _ilogger.HasHitMine("Mines Hit at position " + movePosition.ToString());
                    _ilogger.Info("Game over");
                    return;

                case MoveOutCome.MoveSucessful:
                    _ilogger.Info("Move to position " + lastPosition.ToString() + " to " + movePosition.ToString() + " was sucessful");
                    break;
                }

                lastPosition = movePosition;
                count++;
            }
        }