public void SetRandomLocation() { var randomLocation = Maze.GetRandomLocation(); Location.Row = randomLocation.Row; Location.Column = randomLocation.Column; _currentDirection = DirectionExtensions.GetRandomDirection(); }
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); } }
/// <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(); } }
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)); }