private string PrintActions(StepCommands stepCommands) { var response = string.Empty; if (stepCommands.Fire == Fire.FIRE_BEFORE_ACTION) { response += "ACT"; if (stepCommands.Command != 0) { response += ","; response += ChooseCommand(stepCommands.Command); } return(response); } if (stepCommands.Fire == Fire.FIRE_AFTER_ACTION) { response += ChooseCommand(stepCommands.Command); response += ","; response += "ACT"; return(response); } response += ChooseCommand(stepCommands.Command); return(response); }
public async Task <StepCommands> CreateAction(StepData stepData) { _stepData = stepData; var allTanks = _stepData.Enemies; allTanks.AddRange(_stepData.AiTanks); allTanks = allTanks.Where(t => t.Alive).ToList(); var stepCommands = new StepCommands(); switch (_rnd.Next(3)) { case 1: stepCommands.Fire = Fire.FIRE_AFTER_ACTION; break; case 2: stepCommands.Fire = Fire.FIRE_BEFORE_ACTION; break; } var nearestEnemy = GetNearest(allTanks); List <Commands> availableCommands = new List <Commands>(); if (!_stepData.PlayerTank.Alive) { availableCommands.Add(Commands.GO_RIGHT); availableCommands.Add(Commands.GO_LEFT); availableCommands.Add(Commands.GO_TOP); availableCommands.Add(Commands.GO_DOWN); } if (nearestEnemy.X > _stepData.PlayerTank.X) { availableCommands.Add(Commands.GO_RIGHT); } if (nearestEnemy.X < _stepData.PlayerTank.X) { availableCommands.Add(Commands.GO_LEFT); } if (nearestEnemy.Y > _stepData.PlayerTank.Y) { availableCommands.Add(Commands.GO_TOP); } if (nearestEnemy.Y < _stepData.PlayerTank.Y) { availableCommands.Add(Commands.GO_DOWN); } stepCommands.Command = availableCommands[_rnd.Next(1, availableCommands.Count) - 1]; return(stepCommands); }