Beispiel #1
0
        public bool TryMakeStep(Directions direction)
        {
            if (direction != Directions.None)
            {
                var newPos = GetNewPosition(playerPosition, direction);

                if (map.GetCell(newPos) is Wall || IsOutOfMap(newPos))
                {
                    newPos = playerPosition;
                }
                else if (map.GetCell(newPos) is Box)
                {
                    if (TryMoveBox(direction, newPos))
                    {
                        var newBoxPos = GetNewPosition(newPos, direction);
                        map.Move(newPos, newBoxPos);
                    }
                    else
                    {
                        newPos = playerPosition;
                    }
                }
                if (playerPosition == newPos)
                {
                    return(false);
                }
                playerPosition = newPos;
                return(true);
            }
            return(false);
        }