public BotMove PerformNextMove(BotArenaInfo arenaInfo) { var aiService = new TankBlasterSimpleAIService(false, true, 99999, 8); var result = aiService.CalculateNextMove(arenaInfo); return(result); }
public override BotMove PerformNextMove(BotArenaInfo arenaInfo) { var aiService = new TankBlasterSimpleAIService(true, true, 7, 7); var result = aiService.CalculateNextMove(arenaInfo); return(result); }
public BotMove CalculateNextMove(BotArenaInfo arenaInfo) { _field = arenaInfo; var result = new BotMove(); if (_shouldDropBombs && _rand.Next(_bombDroppingFrequency) == 0) { result.Action = BotAction.DropBomb; } if (_shouldFireMissiles && _field.MissileAvailableIn == 0) { var fireDirections = _allMoveDirections.Where(direction => { var tempLocation = _field.BotLocation; for (int i = 0; i < CurrentMissileBlastRadius + 1; i++) { tempLocation = AddDirectionMove(tempLocation, direction); if (!IsLocationValid(tempLocation) || _field.Board[tempLocation.X, tempLocation.Y] != BoardTile.Empty) { return(false); } } return(true); }).ToList(); if (fireDirections.Any()) { result.Action = BotAction.FireMissile; result.FireDirection = fireDirections.ElementAt(_rand.Next(fireDirections.Count())); } } if (IsInDangerZone(_field.BotLocation)) { result.Action = BotAction.None; } var directions = _allMoveDirections.Where(direction => !IsInDangerZone(AddDirectionMove(_field.BotLocation, direction))).ToList(); if (!directions.Any()) { directions = _allMoveDirections; } result.Direction = result.Action == BotAction.FireMissile ? (MoveDirection?)null : directions[_rand.Next(directions.Count)]; return(result); }
public abstract BotMove PerformNextMove(BotArenaInfo arenaInfo);