public void SetRandomLocation()
    {
        var randomLocation = Maze.GetRandomLocation();

        Location.Row    = randomLocation.Row;
        Location.Column = randomLocation.Column;

        _currentDirection = DirectionExtensions.GetRandomDirection();
    }
Esempio n. 2
0
    void Move()
    {
        if (Random.Range(0f, 1f) >= chanceToMove)
        {
            return;
        }

        if (Random.Range(0f, 1f) >= chanceToMoveTowards)
        {
            Direction direction = DirectionExtensions.GetRandomDirection();
            transform.Translate(Constants.GridSize * direction.GetVector().x, Constants.GridSize * direction.GetVector().y, 0);
        }
    }
Esempio n. 3
0
        /// <summary>
        /// Moves Drone towards Queen
        /// </summary>
        /// <returns>Returns Position</returns>
        public Position MoveTowardsQueen()
        {
            var nextPosition  = Coordinates.NextCoordinatesInDirection(DirectionExtensions.GetRandomDirection());
            var queenPosition = AntColony.GetTheQueen().GetPosition();

            while (nextPosition.DistanceToCoordinate(queenPosition) > Coordinates.DistanceToCoordinate(queenPosition))
            {
                nextPosition = Coordinates.NextCoordinatesInDirection(DirectionExtensions.GetRandomDirection());
            }

            Coordinates = nextPosition;

            return(Coordinates);
        }
    public void Explore()
    {
        _moveTimeLeft = _moveCoolDown;

        Direction direction = _currentDirection;
        Direction direction2;

        if (CanMove(direction))
        {
            direction2 = DirectionExtensions.GetRandomDirection();

            if (CanMove(direction2) && !direction2.IsOpppositeDirection(direction))
            {
                direction = direction2;
            }
        }
        else
        {
            bool turnRight = Random.Range(0, 2) == 1;

            direction2 = (Direction)(((int)direction + (turnRight ? 1 : 3)) % 4);

            if (CanMove(direction2))
            {
                direction = direction2;
            }
            else
            {
                direction2 = (Direction)(((int)direction2 + 2) % 4);

                if (CanMove(direction2))
                {
                    direction = direction2;
                }
                else
                {
                    direction = (Direction)(((int)direction + 2) % 4);
                }
            }
        }

        if (CanMove(direction))
        {
            _currentDirection = direction;
            Move();
        }
    }
Esempio n. 5
0
    public static MazeGrid CreateMaze(Options options)
    {
        int width  = options.Width;
        int height = options.Height;

        bool[,] verticalWalls   = CreateVerticalWalls(width, height);
        bool[,] horizontalWalls = CreateHorizontalWalls(width, height);
        int[] sets = CreateSets(width, height);

        Direction direction = 0;
        int       cellIndex = 0;

        while (!AreAllSameSet(sets))
        {
            while (true)
            {
                cellIndex = UnityEngine.Random.Range(0, sets.Length);
                direction = DirectionExtensions.GetRandomDirection();

                if (!IsValidDirection(direction, cellIndex, width, height))
                {
                    continue;
                }

                GetSets(direction, sets, cellIndex, width, out int classe1, out int classe2);

                if (classe1 == classe2)
                {
                    continue;
                }

                RemoveWall(direction, verticalWalls, horizontalWalls, cellIndex, width);

                UnionSets(sets, classe1, classe2);

                break;
            }
        }

        return(new MazeGrid(options, verticalWalls, horizontalWalls));
    }