Beispiel #1
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #6
0
        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));
        }
Beispiel #10
0
        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
            });
        }
Beispiel #11
0
        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));
        }
Beispiel #13
0
        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);
        }
Beispiel #18
0
 public DeployArmyResponse DeployArmy([FromBody] DeployArmyRequest deployArmyRequest)
 {
     return(createDeployResponse(deployArmyRequest));
 }
Beispiel #19
0
 public DeployArmyResponse Reinforce([FromBody] DeployArmyRequest deployArmyRequest)
 {
     return(strat.DecideWhereToReinforce(deployArmyRequest));
 }