private DeployArmyResponse createDeployResponse(DeployArmyRequest deployArmyRequest) { DeployArmyResponse response = new DeployArmyResponse(); int owned = 0; int placed = 0; int totalArmies = 0; foreach (BoardTerritory space in deployArmyRequest.Board) { if (space.OwnerName == null) { response.DesiredLocation = space.Location; owned++; placed++; return(response); } if (space.OwnerName == "Rusty") { owned++; placed += space.Armies; } } totalArmies = deployArmyRequest.ArmiesRemaining + placed; foreach (BoardTerritory space in deployArmyRequest.Board) { if (space.OwnerName == "Rusty" && (space.Armies < (totalArmies / owned + 1))) { response.DesiredLocation = space.Location; return(response); } } return(null); }
public DeployArmyResponse DeployArmy([FromBody] DeployArmyRequest deployArmyRequest) { DeployArmyResponse response = new DeployArmyResponse(); response.DesiredLocation = new Location(3, 2); return(response); }
public DeployArmyResponse DecideWhereToReinforce(DeployArmyRequest deployArmyRequest) { DeployArmyResponse response = new DeployArmyResponse(); IEnumerable <BoardTerritory> myTerritories = GetMyTerritories(deployArmyRequest.Board); foreach (var territory in myTerritories) { if (territory.Armies < 10 && GetNumBadTerritories(territory, deployArmyRequest.Board) > 0) { response.DesiredLocation = territory.Location; return(response); } } foreach (var territory in myTerritories) { var neighbors = GetNeighbors(territory, deployArmyRequest.Board); foreach (var neighbor in neighbors) { if (neighbor.OwnerName != "Stuart" && territory.Armies < neighbor.Armies * 2.01) { response.DesiredLocation = territory.Location; return(response); } } } response.DesiredLocation = myTerritories.First().Location; return(response); }
public DeployArmyResponse DeployArmy([FromBody] DeployArmyRequest deployArmyRequest) { DeployArmyResponse response = new DeployArmyResponse(); var myTerritory = deployArmyRequest.Board.FirstOrDefault(t => t.OwnerName == config["PlayerName"]) ?? deployArmyRequest.Board.Skip(deployArmyRequest.Board.Count() / 2).First(t => t.OwnerName == null); response.DesiredLocation = myTerritory.Location; return(response); }
public DeployArmyResponse DecideArmyWhereToPlacement(DeployArmyRequest deployRequest) { DeployArmyResponse deployResponse = new DeployArmyResponse(); IEnumerable <BoardTerritory> myTerritories = GetMyTerritories(deployRequest.Board); int maxRow = 0; int maxCollumn = 0; foreach (BoardTerritory bt in deployRequest.Board) { if (bt.Location.Row > maxRow) { maxRow = bt.Location.Row; } if (bt.Location.Column > maxCollumn) { maxCollumn = bt.Location.Column; } } List <Location> cornerLocations = new List <Location>(); cornerLocations.Add(new Location(maxCollumn, maxRow)); cornerLocations.Add(new Location(0, maxRow)); cornerLocations.Add(new Location(maxCollumn, 0)); cornerLocations.Add(new Location(0, 0)); IEnumerable <BoardTerritory> corners = deployRequest.Board.Where(t => cornerLocations.Contains(t.Location)); foreach (BoardTerritory t in corners) { if (myTerritories.Contains(t)) { deployResponse.DesiredLocation = t.Location; return(deployResponse); } else if (t.OwnerName == null) { deployResponse.DesiredLocation = t.Location; return(deployResponse); } } foreach (BoardTerritory t in deployRequest.Board) { if (myTerritories.Contains(t)) { deployResponse.DesiredLocation = t.Location; return(deployResponse); } else if (t.OwnerName == null) { deployResponse.DesiredLocation = t.Location; return(deployResponse); } } return(deployResponse); }
private async Task <DeployArmyResponse> askForDeployLocationAsync(ApiPlayer currentPlayer, DeploymentStatus deploymentStatus) { var deployArmyRequest = new DeployArmyRequest { Board = game.Board.SerializableTerritories, Status = deploymentStatus, ArmiesRemaining = game.GetPlayerRemainingArmies(currentPlayer.Token) }; var json = System.Text.Json.JsonSerializer.Serialize(deployArmyRequest); var deployArmyResponse = (await currentPlayer.HttpClient.PostAsJsonAsync("/deployArmy", deployArmyRequest)); deployArmyResponse.EnsureSuccessStatusCode(); var r = await deployArmyResponse.Content.ReadFromJsonAsync <DeployArmyResponse>(); return(r); }
public DeployArmyResponse DecideWhereToReinforce(DeployArmyRequest deployArmyRequest) { DeployArmyResponse response = new DeployArmyResponse(); var myTerritories = GetMyTerritories(deployArmyRequest.Board); BoardTerritory smallPup = new BoardTerritory(); smallPup.Armies = 99999; foreach (BoardTerritory territory in myTerritories) { if (territory.Armies < smallPup.Armies) { smallPup = territory; } } response.DesiredLocation = smallPup.Location; return(response); }
public DeployArmyResponse DecideArmyWhereToPlacement(DeployArmyRequest deployRequest) { DeployArmyResponse deployResponse = new DeployArmyResponse(); List <BoardTerritory> myTerritories = new List <BoardTerritory>(); foreach (var territory in deployRequest.Board) { if (territory.Armies == 0 && GetNumBadTerritories(territory, deployRequest.Board) == 0) { deployResponse.DesiredLocation = territory.Location; return(deployResponse); } if (territory.Armies == 0) { deployResponse.DesiredLocation = territory.Location; return(deployResponse); } if (!(territory.OwnerName == null)) { if (territory.OwnerName == "Stuart") { myTerritories.Add(territory); deployResponse.DesiredLocation = territory.Location; } } } int min = myTerritories.First().Armies; foreach (var territory in myTerritories) { if (territory.Armies < min) { min = territory.Armies; } } foreach (var territory in myTerritories) { if (territory.Armies == min) { deployResponse.DesiredLocation = territory.Location; return(deployResponse); } } return(deployResponse); }
public void DeploysArmyOnOwnedTerritoryIfNoVacantTerritories() { fillBoard(); Board.Remove(Board.Last()); Board.Add(new BoardTerritory { Armies = 1, Location = new Location { Row = BOARD_ROWS - 1, Column = BOARD_COLS - 1 }, OwnerName = gamePlayer.Player.Name }); var deployRequest = new DeployArmyRequest { Board = Board, ArmiesRemaining = playerArmyCount, Status = DeploymentStatus.YourTurn }; var deployResponse = gamePlayer.DeployArmy(deployRequest); Location placementLocation = deployResponse.DesiredLocation; Assert.That(placementLocation.Row == (BOARD_ROWS - 1) && placementLocation.Column == (BOARD_COLS - 1)); }
private DeployArmyResponse createDeployResponse(DeployArmyRequest deployArmyRequest) { Location location = new Location(); int ownedTerritories = 0; int placedArmies = 0; int totalArmies = 0; foreach (var ter in deployArmyRequest.Board) { if (ter.OwnerName is null) { location = ter.Location; return(new DeployArmyResponse { DesiredLocation = location }); } if (ter.OwnerName == "Emmanuel") { ownedTerritories++; placedArmies += ter.Armies; } } totalArmies = deployArmyRequest.ArmiesRemaining + placedArmies; foreach (var ter in deployArmyRequest.Board) { if (ter.OwnerName == "Emmanuel" && ter.Armies < (totalArmies / ownedTerritories) + 1) { location = ter.Location; return(new DeployArmyResponse { DesiredLocation = location }); } } return(new DeployArmyResponse { DesiredLocation = location }); }
private DeployArmyResponse createDeployResponse(DeployArmyRequest deployArmyRequest) { Location attacklocation = new Location(); //DeployArmyResponse response = new DeployArmyResponse(); foreach (BoardTerritory space in deployArmyRequest.Board) { if ((space.OwnerName == null || space.OwnerName == "HectoritoBonito") && space.Armies < 2) { attacklocation = space.Location; break; } else { continue; } } return(new DeployArmyResponse { DesiredLocation = attacklocation }); }
public void DeploysArmyOnVacantSpaceOnFirstTurn() { //Fill board except for one space fillBoard(); Board.Remove(Board.Last()); Board.Add(new BoardTerritory { Armies = 0, Location = new Location { Row = BOARD_ROWS - 1, Column = BOARD_COLS - 1 }, OwnerName = null }); var deployRequest = new DeployArmyRequest { Board = Board, ArmiesRemaining = playerArmyCount, Status = DeploymentStatus.YourTurn }; var deployResponse = gamePlayer.DeployArmy(deployRequest); Location placementLocation = deployResponse.DesiredLocation; Assert.That(placementLocation.Row == (BOARD_ROWS - 1) && placementLocation.Column == (BOARD_COLS - 1)); }
public DeployArmyResponse DeployArmy(DeployArmyRequest deployArmyRequest) { foreach (var territory in deployArmyRequest.Board) { if (territory.OwnerName == null) { return(new DeployArmyResponse { DesiredLocation = territory.Location }); } } foreach (var territory in deployArmyRequest.Board) { if (territory.OwnerName == Player.Name) { return(new DeployArmyResponse { DesiredLocation = territory.Location }); } } throw new Exception("Cannot place army"); }
public DeployArmyResponse DeployArmy([FromBody] DeployArmyRequest deployArmyRequest) { return(gamePlayer.DeployArmy(deployArmyRequest)); }
public DeployArmyResponse DeployArmy([FromBody] DeployArmyRequest deployArmyRequest) { return(gameStrategy.DecideArmyWhereToPlacement(deployArmyRequest)); }
public DeployArmyResponse DecideArmyWhereToPlacement(DeployArmyRequest deployRequest) { DeployArmyResponse deployResponse = new DeployArmyResponse(); IEnumerable <BoardTerritory> myTerritories = GetMyTerritories(deployRequest.Board); int maxRow = 0; int maxCollumn = 0; foreach (BoardTerritory bt in deployRequest.Board) { if (bt.Location.Row > maxRow) { maxRow = bt.Location.Row; } if (bt.Location.Column > maxCollumn) { maxCollumn = bt.Location.Column; } } List <Location> cornerLocations = new List <Location>(); cornerLocations.Add(new Location(0, 0)); cornerLocations.Add(new Location(0, maxCollumn)); cornerLocations.Add(new Location(maxRow, 0)); cornerLocations.Add(new Location(maxRow, maxCollumn)); IEnumerable <BoardTerritory> corners = deployRequest.Board.Where(t => cornerLocations.Contains(t.Location)); corners = corners.Reverse(); if (myTerritories.Count() == 0) { foreach (BoardTerritory t in corners) { if (t.OwnerName == null) { deployResponse.DesiredLocation = t.Location; startTerritory = t; return(deployResponse); } } foreach (BoardTerritory t in deployRequest.Board.Reverse()) { if (t.OwnerName == null) { deployResponse.DesiredLocation = t.Location; startTerritory = t; return(deployResponse); } } } else { IEnumerable <BoardTerritory> neighborsOfCorner = GetNeighbors(startTerritory, deployRequest.Board); foreach (BoardTerritory t in neighborsOfCorner) { if (t.OwnerName != null && !myTerritories.Contains(t)) { deployResponse.DesiredLocation = startTerritory.Location; } if (t.OwnerName == null) { deployResponse.DesiredLocation = t.Location; return(deployResponse); } } foreach (BoardTerritory t in neighborsOfCorner) { IEnumerable <BoardTerritory> friendlyNeighborsOfCorner = neighborsOfCorner.Where(ter => myTerritories.Contains(ter)); BoardTerritory smallPup = new BoardTerritory(); smallPup.Armies = 9999; foreach (BoardTerritory bt in friendlyNeighborsOfCorner) { if (bt.Armies < smallPup.Armies) { smallPup = bt; } } deployResponse.DesiredLocation = smallPup.Location; return(deployResponse); } } return(deployResponse); }
public DeployArmyResponse WhereToPlace(DeployArmyRequest deployArmyRequest) { DeployArmyResponse deployArmyResponse = new DeployArmyResponse(); foreach (var territory in deployArmyRequest.Board) { if (territory.OwnerName == null) { deployArmyResponse.DesiredLocation = territory.Location; return(deployArmyResponse); } } foreach (var territory in deployArmyRequest.Board) { if (territory.OwnerName != null) { if (territory.OwnerName == "Wyatt" && territory.Armies < 3) { deployArmyResponse.DesiredLocation = territory.Location; return(deployArmyResponse); } } } foreach (var territory in deployArmyRequest.Board) { if (territory.OwnerName != null) { if (territory.OwnerName == "Wyatt" && territory.Armies == 3) { deployArmyResponse.DesiredLocation = territory.Location; return(deployArmyResponse); } } } foreach (var territory in deployArmyRequest.Board) { if (territory.OwnerName != null) { if (territory.OwnerName == "Wyatt" && territory.Armies == 4) { deployArmyResponse.DesiredLocation = territory.Location; return(deployArmyResponse); } } } foreach (var territory in deployArmyRequest.Board) { if (territory.OwnerName != null) { if (territory.OwnerName == "Wyatt" && territory.Armies < 10) { deployArmyResponse.DesiredLocation = territory.Location; return(deployArmyResponse); } } } foreach (var territory in deployArmyRequest.Board) { if (territory.OwnerName != null) { if (territory.OwnerName == "Wyatt") { deployArmyResponse.DesiredLocation = territory.Location; return(deployArmyResponse); } } } return(deployArmyResponse); }
public DeployArmyResponse DeployArmy([FromBody] DeployArmyRequest deployArmyRequest) { return(createDeployResponse(deployArmyRequest)); }
public DeployArmyResponse Reinforce([FromBody] DeployArmyRequest deployArmyRequest) { return(strat.DecideWhereToReinforce(deployArmyRequest)); }