public ContinueAttackResponse WhenToContinueAttack(ContinueAttackRequest continueAttackRequest)
        {
            ContinueAttackResponse attackResponse = new ContinueAttackResponse();

            attackResponse.ContinueAttacking = (continueAttackRequest.AttackingTerritorry.Armies > continueAttackRequest.DefendingTerritorry.Armies);
            return(attackResponse);
        }
        internal ContinueAttackResponse DecideToMakeNewAttack(ContinueAttackRequest continueAttackRequest)
        {
            ContinueAttackResponse response = new ContinueAttackResponse();

            response.ContinueAttacking = false;
            return(response);
        }
        internal ContinueAttackResponse DecideToMakeNewAttack(ContinueAttackRequest continueAttackRequest)
        {
            ContinueAttackResponse response = new ContinueAttackResponse();
            var myTerritories = GetMyTerritories(continueAttackRequest.Board);
            var rand          = new Random();

            foreach (var territory in myTerritories)
            {
                var territoryNeighbors = GetNeighbors(territory, continueAttackRequest.Board);
                foreach (var neighbor in territoryNeighbors)
                {
                    if (neighbor.Armies == 0 && territory.Armies > 3)
                    {
                        response.ContinueAttacking = true;
                        return(response);
                    }
                    if (territory.Armies > neighbor.Armies * 2)
                    {
                        if (rand.Next(10) != 1)
                        {
                            break;
                        }
                        response.ContinueAttacking = true;
                        return(response);
                    }
                }
            }
            response.ContinueAttacking = false;
            return(response);
        }
Ejemplo n.º 4
0
        public ContinueAttackResponse ContinueAttack([FromBody] ContinueAttackRequest continueAttackRequest)
        {
            ContinueAttackResponse response = new ContinueAttackResponse();

            response.ContinueAttacking = true;

            return(response);
        }
Ejemplo n.º 5
0
        private async Task <ContinueAttackResponse> AskMakeAnotherAttackAsync(ApiPlayer player, Territory attackingTerritory, Territory defendingTerritory)
        {
            var newAttackRequest = new ContinueAttackRequest {
                Board = game.Board.SerializableTerritories,
                AttackingTerritorry = attackingTerritory,
                DefendingTerritorry = defendingTerritory
            };

            return(await(await player.HttpClient.PostAsJsonAsync("/makeNewAttack", newAttackRequest))
                   .EnsureSuccessStatusCode()
                   .Content.ReadFromJsonAsync <ContinueAttackResponse>());
        }
Ejemplo n.º 6
0
        public ContinueAttackResponse WhenToContinueAttack(ContinueAttackRequest continueAttackRequest)
        {
            ContinueAttackResponse continueAttackResponse = new ContinueAttackResponse();

            if (continueAttackRequest.AttackingTerritorry.Armies > continueAttackRequest.DefendingTerritorry.Armies + 1)
            {
                continueAttackResponse.ContinueAttacking = true;
                return(continueAttackResponse);
            }
            continueAttackResponse.ContinueAttacking = false;
            return(continueAttackResponse);
        }
Ejemplo n.º 7
0
        private async Task <ContinueAttackResponse> askContinueAttackingAsync(ApiPlayer currentPlayer, Territory attackingTerritory, Territory defendingTerritory)
        {
            var continueAttackingRequest = new ContinueAttackRequest {
                Board = game.Board.SerializableTerritories,
                AttackingTerritorry = attackingTerritory,
                DefendingTerritorry = defendingTerritory
            };
            var continueAttackingResponse = await(await currentPlayer.HttpClient.PostAsJsonAsync("/continueAttacking", continueAttackingRequest))
                                            .EnsureSuccessStatusCode()
                                            .Content.ReadFromJsonAsync <ContinueAttackResponse>();

            return(continueAttackingResponse);
        }
Ejemplo n.º 8
0
        private ContinueAttackResponse createContinueAttackResponse(ContinueAttackRequest continueAttackRequest)
        {
            Random rnd = new Random();
            ContinueAttackResponse response = new ContinueAttackResponse();

            if (rnd.Next(1, 3) == 1)
            {
                response.ContinueAttacking = false;
            }
            else
            {
                response.ContinueAttacking = true;
            }
            return(response);
        }
        public void DoesNotAttackIfAttackSourceHasLessThanTwoArmies()
        {
            var attackSource = new Location(0, 0);
            var attackTarget = new Location(0, 1);

            Board.Add(new BoardTerritory {
                Armies = 1, Location = attackSource, OwnerName = gamePlayer.Player.Name
            });
            Board.Add(new BoardTerritory {
                Armies = 1, Location = attackTarget, OwnerName = "Enemy"
            });

            var continueAttackRequest = new ContinueAttackRequest {
                Board = Board
            };
            var continueAttackResponse = gamePlayer.DecideContinueAttackResponse(continueAttackRequest);

            continueAttackResponse.ContinueAttacking.Should().Be(false);
        }
        internal ContinueAttackResponse DecideToMakeNewAttack(ContinueAttackRequest continueAttackRequest)
        {
            ContinueAttackResponse       response      = new ContinueAttackResponse();
            IEnumerable <BoardTerritory> myTerritories = GetMyTerritories(continueAttackRequest.Board);
            BoardTerritory topDog = new BoardTerritory();

            topDog.Armies = 0;
            foreach (BoardTerritory territory in myTerritories)
            {
                if (territory.Armies > topDog.Armies)
                {
                    if (GetNumBadTerritories(territory, continueAttackRequest.Board) > 0)
                    {
                        topDog = territory;
                    }
                }
            }
            IEnumerable <BoardTerritory> tDogNeighbors = GetNeighbors(topDog, continueAttackRequest.Board);
            BoardTerritory smallPup = new BoardTerritory();

            smallPup.Armies = 99999;
            foreach (BoardTerritory t in tDogNeighbors)
            {
                if (!myTerritories.Contains(t) && t.Armies < smallPup.Armies)
                {
                    smallPup = t;
                }
            }

            if (topDog.Armies > (2 * smallPup.Armies))
            {
                response.ContinueAttacking = true;
            }
            else
            {
                response.ContinueAttacking = false;
            }
            return(response);
        }
 public ContinueAttackResponse ContinueAttack([FromBody] ContinueAttackRequest continueAttackRequest)
 {
     return(gamePlayer.DecideContinueAttackResponse(continueAttackRequest));
 }
 public ContinueAttackResponse ContinueAttack([FromBody] ContinueAttackRequest continueAttackRequest)
 {
     return(gameStrategy.DecideToContinueAttack(continueAttackRequest));
 }
Ejemplo n.º 13
0
 public ContinueAttackResponse makeNewAttack([FromBody] ContinueAttackRequest continueAttackRequest)
 {
     return(strat.DecideToMakeNewAttack(continueAttackRequest));
 }
Ejemplo n.º 14
0
 public ContinueAttackResponse ContinueAttack([FromBody] ContinueAttackRequest continueAttackRequest)
 {
     return(createContinueAttackResponse(continueAttackRequest));
 }
Ejemplo n.º 15
0
 public ContinueAttackResponse DecideContinueAttackResponse(ContinueAttackRequest continueAttackRequest)
 {
     return(new ContinueAttackResponse {
         ContinueAttacking = true
     });
 }