Пример #1
0
        public int calcCommerceIncome(Card playedCard, GameState gs, int playerId)
        {
            PlayerState thePlayer = gs.getPlayerNum(playerId);

            //System.Console.WriteLine(playedCard.getNumber());
            if (!playedCard.getName().StartsWith("CO"))
            {
                return(0);
            }
            if (playedCard.GetType() != typeof(CommerceCard))
            {
                return(0);
            }
            CommerceCard commCard = (CommerceCard)playedCard;

            if (commCard.getCoins() != 0)
            {
                return(commCard.getCoins());
            }
            if ((commCard.getNumber().Equals(77)) ||
                (commCard.getNumber().Equals(78)))
            {
                return(countCardType(1, thePlayer)
                       + countCardType(1, gs.getLeftPlayer(thePlayer))
                       + countCardType(1, gs.getRightPlayer(thePlayer)));
            }
            if ((commCard.getNumber().Equals(80)) ||
                (commCard.getNumber().Equals(79)))
            {
                return(countCardType(2, thePlayer)
                       + countCardType(2, gs.getLeftPlayer(thePlayer))
                       + countCardType(2, gs.getRightPlayer(thePlayer)));
            }
            //Haven
            if ((commCard.getNumber().Equals(119)) ||
                (commCard.getNumber().Equals(120)))
            {
                return(countCardType(1, thePlayer));
            }
            //LightHouse
            if ((commCard.getNumber().Equals(121)) ||
                (commCard.getNumber().Equals(122)))
            {
                return(countCardType(4, thePlayer));
            }
            //Chamber of Commerce
            if ((commCard.getNumber().Equals(123)) ||
                (commCard.getNumber().Equals(124)))
            {
                return(2 * countCardType(2, thePlayer));
            }
            //Arena
            if ((commCard.getNumber().Equals(125)) ||
                (commCard.getNumber().Equals(126)) ||
                (commCard.getNumber().Equals(127)))
            {
                return(3 * thePlayer.getBoard().getCurrentWonderLevel());
            }
            return(0);
        }
Пример #2
0
 public int calcCommerceIncome(Card playedCard, GameState gs, int playerId)
 {
     PlayerState thePlayer = gs.getPlayerNum(playerId);
     //System.Console.WriteLine(playedCard.getNumber());
     if (!playedCard.getName().StartsWith("CO"))
     {
         return 0;
     }
     if(playedCard.GetType() != typeof(CommerceCard))
     {
         return 0;
     }
     CommerceCard commCard = (CommerceCard)playedCard;
     if (commCard.getCoins() != 0)
     {
         return commCard.getCoins();
     }
     if ((commCard.getNumber().Equals(77)) ||
         (commCard.getNumber().Equals(78)))
     {
         return countCardType(1, thePlayer) 
             + countCardType(1, gs.getLeftPlayer(thePlayer))
             + countCardType(1, gs.getRightPlayer(thePlayer));
     }
     if ((commCard.getNumber().Equals(80)) ||
         (commCard.getNumber().Equals(79)))
     {
         return countCardType(2, thePlayer)
             + countCardType(2, gs.getLeftPlayer(thePlayer))
             + countCardType(2, gs.getRightPlayer(thePlayer));
     }
     //Haven
     if ((commCard.getNumber().Equals(119)) ||
         (commCard.getNumber().Equals(120)))
     {
         return countCardType(1, thePlayer);
     }
     //LightHouse
     if ((commCard.getNumber().Equals(121)) ||
         (commCard.getNumber().Equals(122)))
     {
         return countCardType(4, thePlayer);
     }
     //Chamber of Commerce
     if ((commCard.getNumber().Equals(123)) ||
         (commCard.getNumber().Equals(124)))
     {
         return 2 * countCardType(2, thePlayer);
     }
     //Arena
     if ((commCard.getNumber().Equals(125)) ||
         (commCard.getNumber().Equals(126)) ||
         (commCard.getNumber().Equals(127)))
     {
         return 3 * thePlayer.getBoard().getCurrentWonderLevel();
     }
     return 0;
 }
Пример #3
0
        //Base Constructor, Needs GameState and PlayerState
        protected resourceChecks(GameState g, PlayerState p) {
            //coinTransactions = new int[3]{0,0,0};
            
            //Getting left and right player of player P
            left = g.getLeftPlayer(p);
            right = g.getRightPlayer(p);

            //Initialize base resources
            baseResources = ResourceInitializer(p);
            lResources = ResourceInitializer(left);
            rResources = ResourceInitializer(right);
            
            //List of important resource cards
            SRCardLst = SRCardInitializer(p);
            lSRCardLst = SRCardInitializer(left);
            rSRCardLst = SRCardInitializer(right);
        }
Пример #4
0
        /*
         * Input: A Player, a Card and a direction(0 = right, 1 = left)
         *
         *
         * Output: number of coins required to trade for resources for card with the player
         * at the given direction. negitive number if impossible
         */
        public int validateTrade(PlayerState p, Card c, int direction)
        {
            int recCost = 2;
            int comCost = 2;

            //checkes to see if a player can play card with thier own resources
            if (ValidateCard(p, c))
            {
                return(0);
            }

            PlayerState trader;

            if ((p.getBoard().getName().Equals("WB10") &&
                 (p.getBoard().getCurrentWonderLevel() >= 1)))
            {
                recCost = 1;
            }

            if (direction == 0)
            {
                trader = gameState.getRightPlayer(p);
                for (int i = 0; i < p.getPlayedCards().Count; i++)
                {
                    if ((p.getPlayedCards()[i].getNumber() == 31) ||
                        (p.getPlayedCards()[i].getNumber() == 32))
                    {
                        recCost = 1;
                        break;
                    }
                }
            }
            else
            {
                trader = gameState.getLeftPlayer(p);
                for (int i = 0; i < p.getPlayedCards().Count; i++)
                {
                    if ((p.getPlayedCards()[i].getNumber() == 33) ||
                        (p.getPlayedCards()[i].getNumber() == 34))
                    {
                        recCost = 1;
                        break;
                    }
                }
            }
            for (int i = 0; i < p.getPlayedCards().Count; i++)
            {
                if ((p.getPlayedCards()[i].getNumber() == 35) ||
                    (p.getPlayedCards()[i].getNumber() == 36))
                {
                    comCost = 1;
                }
            }


            if (!baseResources.ContainsKey(trader.getName()))
            {
                return(-1);
            }

            int        cost            = 0;
            List <int> traderResources = baseResources[trader.getName()];

            int[] requiredResources = new int[c.getCost().Length];
            for (int i = 0; i < c.getCost().Length; i++)
            {
                requiredResources[i]  = c.getCost()[i];
                requiredResources[i] -= baseResources[p.getName()][i];//p.getResources()[i];
                if (requiredResources[i] < 0)
                {
                    requiredResources[i] = 0;
                }
                if (traderResources[i] < requiredResources[i])
                {
                    return(-1);
                }
                if (i < 4)
                {
                    cost += requiredResources[i] * recCost;
                }
                else
                {
                    cost += requiredResources[i] * comCost;
                }
                //Console.WriteLine("cost " + cost + " cur rec " + requiredResources[i]);
            }
            return(cost);
        }
Пример #5
0
        private int GuildScore(PlayerState p, GameState g)
        {
            int score = 0;
            List <GuildCard> glist = new List <GuildCard>();

            //GameState g = ;
            //Cycle through played cards
            for (int i = 0; i < p.getPlayedCards().Count; i++)
            {
                if (p.getPlayedCards()[i].getType() == Card._GUILD)
                {
                    glist.Add((GuildCard)p.getPlayedCards()[i]);
                }
            }
            //Cycle through guild cards
            for (int i = 0; i < glist.Count; i++)
            {
                //worker
                if (glist[i].getNumber() == 98)
                {
                    score = score + (2 * (g.getLeftPlayer(p).countCardType(2) + g.getRightPlayer(p).countCardType(2)));
                }
                //craft
                if (glist[i].getNumber() == 99)
                {
                    score = score + (g.getLeftPlayer(p).countCardType(1) + g.getRightPlayer(p).countCardType(1));
                }
                //trader
                if (glist[i].getNumber() == 100)
                {
                    score = score + (g.getLeftPlayer(p).countCardType(4) + g.getRightPlayer(p).countCardType(4));
                }
                //Philospher
                if (glist[i].getNumber() == 101)
                {
                    score = score + (g.getLeftPlayer(p).countCardType(6) + g.getRightPlayer(p).countCardType(6));
                }
                //Spies
                if (glist[i].getNumber() == 102)
                {
                    score = score + (g.getLeftPlayer(p).countCardType(5) + g.getRightPlayer(p).countCardType(5));
                }
                //strat
                if (glist[i].getNumber() == 103)
                {
                    score = score + (g.getLeftPlayer(p).getNumLosses()) + (g.getRightPlayer(p).getNumLosses());
                }
                //ship
                if (glist[i].getNumber() == 104)
                {
                    score = score + (p.countCardType(1)) + (p.countCardType(2)) + (p.countCardType(7));
                }
                //Science
                if (glist[i].getNumber() == 105)
                {
                    scienceguildCard = true;
                }
                //magistrat
                if (glist[i].getNumber() == 106)
                {
                    score = score + (g.getLeftPlayer(p).countCardType(3) + g.getRightPlayer(p).countCardType(3));
                }
                //builders
                if (glist[i].getNumber() == 107)
                {
                    score = score + (g.getRightPlayer(p).getBoard().getCurrentWonderLevel());
                    score = score + (g.getLeftPlayer(p).getBoard().getCurrentWonderLevel());
                    score = score + (p.getBoard().getCurrentWonderLevel());
                }
            }
            return(score);
        }
Пример #6
0
 private int GuildScore(PlayerState p, GameState g)
 {
     int score = 0;
     List<GuildCard> glist = new List<GuildCard>();
     //GameState g = ;
     //Cycle through played cards
     for (int i = 0; i < p.getPlayedCards().Count; i++)
     {
         if (p.getPlayedCards()[i].getType() == Card._GUILD)
         {
             glist.Add((GuildCard)p.getPlayedCards()[i]);
         }
     }
     //Cycle through guild cards
     for (int i = 0; i < glist.Count; i++)
     {
         //worker
         if (glist[i].getNumber() == 98) { score = score + (2 * (g.getLeftPlayer(p).countCardType(2) + g.getRightPlayer(p).countCardType(2)));}
         //craft
         if (glist[i].getNumber() == 99) { score = score + (g.getLeftPlayer(p).countCardType(1) + g.getRightPlayer(p).countCardType(1)); }
         //trader
         if (glist[i].getNumber() == 100) { score = score + (g.getLeftPlayer(p).countCardType(4) + g.getRightPlayer(p).countCardType(4)); }
         //Philospher
         if (glist[i].getNumber() == 101) { score = score + (g.getLeftPlayer(p).countCardType(6) + g.getRightPlayer(p).countCardType(6)); }
         //Spies
         if (glist[i].getNumber() == 102) { score = score + (g.getLeftPlayer(p).countCardType(5) + g.getRightPlayer(p).countCardType(5)); }
         //strat
         if (glist[i].getNumber() == 103) { score = score + (g.getLeftPlayer(p).getNumLosses()) + (g.getRightPlayer(p).getNumLosses());}
         //ship
         if (glist[i].getNumber() == 104) { score = score + (p.countCardType(1)) + (p.countCardType(2)) + (p.countCardType(7));}
         //Science
         if (glist[i].getNumber() == 105) { scienceguildCard = true; }
         //magistrat
         if (glist[i].getNumber() == 106) { score = score + (g.getLeftPlayer(p).countCardType(3) + g.getRightPlayer(p).countCardType(3)); }
         //builders
         if (glist[i].getNumber() == 107) {
             score = score + (g.getRightPlayer(p).getBoard().getCurrentWonderLevel());
             score = score + (g.getLeftPlayer(p).getBoard().getCurrentWonderLevel());
             score = score + (p.getBoard().getCurrentWonderLevel());
         }
     }
     return score;
 }