private void wonder_Click(object sender, RoutedEventArgs e)
        {
            String name = image.Source.ToString();

            String subs = name.Split(',').Last();
            String last = subs.Split('/').Last();

            if (!last.Equals("BackOfWonderCards.png"))//make sure its not the placeholder
            {
                if (player.getPlayedACard() == false && (player.getBoard().getMaxWonderLevel() > player.getWonderCards().Count))
                {
                    if (rm.ValidateWonder(player))
                    {
                        player.getHand().Remove(cardToPlay);//remove from cards in hand of player

                        player.setWonderCards(cardToPlay);
                        player.getBoard().incrementWonderLevel(player);

                        this.Close();
                        PlayerGameBoard play = new PlayerGameBoard(parent, player, rm.getGameState());
                    }
                    else
                    {
                        this.Close();
                        ResourceManager manager = ResourceManager.GetInstance(rm.getGameState());
                        manager.resetResources(player);

                        WonderBuyingWindow window = new WonderBuyingWindow(ResourceManager.GetInstance().GetCombinedResources(player), cardToPlay, view, rm.getGameState());
                        window.Show();
                    }
                }
            }
        }
Esempio n. 2
0
        public Card getNextCard(PlayerState p, List<Card> hand)
        {
            Card cur = ult.playPrimary(p, hand);
            if (cur != null)
            {
                return cur;
            }

            if(((p.getBoard().getName().Equals("WB1")) 
                || (p.getBoard().getName().Equals("WB1"))
                && (p.getBoard().getCurrentWonderLevel() == 2))){
                    cur = ult.buildWonder(p, hand);
                    if (cur != null)
                    {
                        return cur;
                    }

            }
                

            cur = ult.playSecondary(p, hand);
            if (cur != null)
            {
                return cur;
            }

            cur = ult.buildWonder(p, hand);
            if (cur != null)
            {
                return cur;
            }

            return ult.playAnyCard(p, hand);
        }
Esempio n. 3
0
        public Card getNextCard(PlayerState p, List <Card> hand)
        {
            Card cur = ult.playPrimary(p, hand);

            if (cur != null)
            {
                return(cur);
            }

            if (((p.getBoard().getName().Equals("WB1")) ||
                 (p.getBoard().getName().Equals("WB1")) &&
                 (p.getBoard().getCurrentWonderLevel() == 2)))
            {
                cur = ult.buildWonder(p, hand);
                if (cur != null)
                {
                    return(cur);
                }
            }


            cur = ult.playSecondary(p, hand);
            if (cur != null)
            {
                return(cur);
            }

            cur = ult.buildWonder(p, hand);
            if (cur != null)
            {
                return(cur);
            }

            return(ult.playAnyCard(p, hand));
        }
Esempio n. 4
0
 /*
  * Input: A Player
  *
  *
  * Output: True or False -> Does the player have enough resources to add to their Wonder Board?
  */
 public bool ValidateWonder(PlayerState p)
 {
     //System.Console.WriteLine(p.getName() + ":ValidateWonder");
     if (p.getBoard().getCurrentWonderLevel() < p.getBoard().getMaxWonderLevel())
     {
         return(CheckResourceCost(p, p.getBoard().getBuildCost()));
     }
     return(false);
 }
Esempio n. 5
0
        //returns base+temp+special resources, but can return it for left and right
        public int[] tradableArray(PlayerState p, int lr)
        {
            PlayerState player = null;

            int[] tradeTable = new int[7] {
                0, 0, 0, 0, 0, 0, 0
            };
            switch (lr)
            {
            case 0:
                return(trArray(p));

            case 1:
                player = gameState.getLeftPlayer(p);
                break;

            case 2:
                player = gameState.getRightPlayer(p);
                break;
            }

            int[] boardResources = player.getBoard().getResources();
            for (int i = 0; i < 7; i++)
            {
                tradeTable[i] = SpecialResourceArray(player)[i]
                                + baseResources[player.getName()][i]
                                + TempResources[player.getName()][i];
            }

            return(tradeTable);
        }
Esempio n. 6
0
        private Card SetStrategy(PlayerState p, List<Card> hand)
        {
            Card bestCard = null;
            int currentAge = ResourceManager.GetInstance().getGameState().getAge();

            if (p.getPlayedCards().Count() == 0)
                bestCard = BuildWonder(p, hand);

            if (bestCard == null)
                if (noOfPlayers == 3 || noOfPlayers == 7)
                    if (p.getBoard().getCurrentWonderLevel() != currentAge)
                        bestCard = BuildWonder(p, hand);

            if (bestCard == null)
                SetMilitaryStrategy(p, hand);

            if (bestCard == null)
                bestCard = SetScienceStrategy(p, hand);

            if (bestCard == null)
                bestCard = SetCommerceStrategy(p, hand);

            if (bestCard == null)
                bestCard = SetCivilianStrategy(p, hand);

            if (bestCard == null)
            {
                strategy = new RandomStrategy();
                bestCard = strategy.getNextCard(p, hand);
            }

            return bestCard;
        }
Esempio n. 7
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);
        }
Esempio n. 8
0
 private Card BuildWonder(PlayerState p, List <Card> hand)
 {
     if (p.getBoard().notMaxYet())
     {
         for (int i = 0; i < hand.Count(); i++)
         {
             if (hand[i].getType() == 1 || hand[i].getType() == 2)
             {
                 if (ResourceManager.GetInstance().ValidateWonder(p))
                 {
                     strategy = new CommerceStrategy();
                     p.setWonderCards(hand[i]);
                     p.getBoard().incrementWonderLevel(p);
                     return(hand[i]);
                 }
             }
         }
     }
     return(null);
 }
Esempio n. 9
0
        /*
         * Input: A Player
         *
         * Output: void -> Given a player, This is the helper function to resetResources.
         * This looks through the list of played cards and adds special card values to a temporary
         * list of special resources.
         */
        public void resetSpecialResourceSingular(PlayerState p)
        {
            List <ResourceCard> tempList = new List <ResourceCard>();

            for (int i = 0; i < p.getPlayedCards().Count; i++)
            {
                if (p.getPlayedCards()[i].getType() < 3)
                {
                    ResourceCard c = (ResourceCard)p.getPlayedCards()[i];

                    if (((c.getNumber() > 7) && (c.getNumber() < 14)))
                    {
                        tempList.Add(c);
                    }
                }
            }
            if (p.getBoard().getName() == "WB2")
            {
                if (p.getBoard().getCurrentWonderLevel() > 0)
                {
                    if (p.getBoard().getCurrentWonderLevel() > 1)
                    {
                        wonderBoardExceptionManGood  = true;
                        wonderBoardExceptionResource = true;
                    }
                    else
                    {
                        for (int j = 0; j < 7; j++)
                        {
                            wonderBoardExceptionResource = true;
                        }
                    }
                }
            }
            if ((p.getBoard().getName() == "WB1") && (p.getBoard().getCurrentWonderLevel() > 1))
            {
                wonderBoardExceptionResource = true;
            }
            SResources[p.getName()] = tempList;
        }
Esempio n. 10
0
        int g_index = 0;//needed to reset ZIndex to original value upon mouse events

        public PlayerGameBoard(Grid gameGrid, PlayerState p, GameState g)
        {
            player = p;
            parent = gameGrid;//only 1 child
            if (parent.Children.Count > 1)//handle the case where there is existing child when we change views
            {
                parent.Children.Remove(parent.Children[1]);
                //System.Console.WriteLine("Child Removed");
            }
            game = g;
            if (game.getAge() == 4)//game is over
            {
                ScoreWindow s = new ScoreWindow(game, parent);
                s.Show(); ;
            }

            playBoard = new Canvas();
            parent.Children.Add(playBoard);//now child[1], two children

            createCardStack("R", 179, 10, playBoard);//0-9
            createCardStack("M", 336, 10, playBoard);//10-19
            createCardStack("S", 493, 10, playBoard);//20-29
            createCardStack("Civ", 650, 10, playBoard);//30-39
            createCardStack("Com", 807, 10, playBoard);//40-49
            createCardStack("G", 964, 6, playBoard);//50-55
            createHandStack();//56-62
            updateAge(game.getAge());//63
            createWonderBoard(player.getBoard().getName());//64
            createPlayerButtons();//65-71
            createPlayerRedCircles();//72-78
            createPlayerBlueCircles();//79-85
            createMoveButtons();//86-89
            updateMoney();//90
            createWonderSpots(player.getBoard().getMaxWonderLevel());//[91-94] variable length
            createRulesButton();//variable base on above wonder
            updateWonderSpots(player.getWonderCards());
            updateHand(player.getHand());
            updateCards(player.getPlayedCards());            
        }
Esempio n. 11
0
        public PlayerGameBoard(Grid gameGrid, PlayerState p, GameState g)
        {
            player = p;
            parent = gameGrid;             //only 1 child
            if (parent.Children.Count > 1) //handle the case where there is existing child when we change views
            {
                parent.Children.Remove(parent.Children[1]);
                //System.Console.WriteLine("Child Removed");
            }
            game = g;
            if (game.getAge() == 4)//game is over
            {
                ScoreWindow s = new ScoreWindow(game, parent);
                s.Show();;
            }

            playBoard = new Canvas();
            parent.Children.Add(playBoard);                           //now child[1], two children

            createCardStack("R", 179, 10, playBoard);                 //0-9
            createCardStack("M", 336, 10, playBoard);                 //10-19
            createCardStack("S", 493, 10, playBoard);                 //20-29
            createCardStack("Civ", 650, 10, playBoard);               //30-39
            createCardStack("Com", 807, 10, playBoard);               //40-49
            createCardStack("G", 964, 6, playBoard);                  //50-55
            createHandStack();                                        //56-62
            updateAge(game.getAge());                                 //63
            createWonderBoard(player.getBoard().getName());           //64
            createPlayerButtons();                                    //65-71
            createPlayerRedCircles();                                 //72-78
            createPlayerBlueCircles();                                //79-85
            createMoveButtons();                                      //86-89
            updateMoney();                                            //90
            createWonderSpots(player.getBoard().getMaxWonderLevel()); //[91-94] variable length
            createRulesButton();                                      //variable base on above wonder
            updateWonderSpots(player.getWonderCards());
            updateHand(player.getHand());
            updateCards(player.getPlayedCards());
        }
Esempio n. 12
0
        private Card SetStrategy(PlayerState p, List <Card> hand)
        {
            Card bestCard   = null;
            int  currentAge = ResourceManager.GetInstance().getGameState().getAge();

            if (p.getPlayedCards().Count() == 0)
            {
                bestCard = BuildWonder(p, hand);
            }

            if (bestCard == null)
            {
                if (noOfPlayers == 3 || noOfPlayers == 7)
                {
                    if (p.getBoard().getCurrentWonderLevel() != currentAge)
                    {
                        bestCard = BuildWonder(p, hand);
                    }
                }
            }

            if (bestCard == null)
            {
                bestCard = SetMilitaryStrategy(p, hand);
            }

            if (bestCard == null)
            {
                bestCard = SetScienceStrategy(p, hand);
            }

            if (bestCard == null)
            {
                bestCard = SetCommerceStrategy(p, hand);
            }

            if (bestCard == null)
            {
                bestCard = SetCivilianStrategy(p, hand);
            }

            if (bestCard == null)
            {
                strategy = new RandomStrategy();
                bestCard = strategy.getNextCard(p, hand);
            }

            return(bestCard);
        }
Esempio n. 13
0
        public void CheckWonderBoard(PlayerState p)
        {
            if (Log(p))
            {
                Console.WriteLine("\n--------------------------------------------------------------------------------------------------------");

                int[] resources = p.getBoard().getResources();
                Console.WriteLine("[{0}] [Board.getResources ([{1}] [{2}])] ", _class.GetType().Name, p.getName(), p.getBoard().getName());
                for (int index = 0; index < resources.Count(); index++)
                {
                    Console.Write("[{0} : {1}] ", ((Resource)index).ToString(), resources[index]);
                }
                Console.WriteLine();
                Console.WriteLine("--------------------------------------------------------------------------------------------------------\n");
            }
        }
Esempio n. 14
0
        public Card getNextCard(PlayerState p, List <Card> hand)
        {
            Card cur = ult.playPrimary(p, hand);

            if (cur != null)
            {
                return(cur);
            }

            //attempts to play wonder to increase science
            if ((p.getBoard().getName().Equals("WB3")) &&
                (p.getBoard().getCurrentWonderLevel() < 2) &&
                (ResourceManager.GetInstance().ValidateWonder(p)))
            {
                for (int i = 0; i < hand.Count; i++)
                {
                    if (hand[i].getType() != 6)
                    {
                        p.setWonderCards(hand[i]);
                        p.getBoard().incrementWonderLevel(p);
                        return(hand[i]);
                    }
                }
            }

            if ((p.getBoard().getName().Equals("WB4")) &&
                (p.getBoard().getCurrentWonderLevel() < 3) &&
                (ResourceManager.GetInstance().ValidateWonder(p)))
            {
                for (int i = 0; i < hand.Count; i++)
                {
                    if (hand[i].getType() != 6)
                    {
                        p.setWonderCards(hand[i]);
                        p.getBoard().incrementWonderLevel(p);
                        return(hand[i]);
                    }
                }
            }

            cur = ult.playSecondary(p, hand);
            if (cur != null)
            {
                return(cur);
            }

            cur = ult.buildWonder(p, hand);
            if (cur != null)
            {
                return(cur);
            }

            return(ult.playAnyCard(p, hand));
        }
Esempio n. 15
0
 //attempts to build a wonder
 public Card buildWonder(PlayerState p, List <Card> hand)
 {
     if (ResourceManager.GetInstance().ValidateWonder(p))
     {
         for (int i = 0; i < hand.Count; i++)
         {
             if (hand[i].getType() == strategy)
             {
                 p.setWonderCards(hand[i]);
                 p.getBoard().incrementWonderLevel(p);
                 return(hand[i]);
             }
         }
         return(hand[0]);
     }
     return(null);
 }
Esempio n. 16
0
        private int CommerceScore(PlayerState p)
        {
            int score = 0;

            List <CommerceCard> comlist;

            //Commercial Structure
            comlist = new List <CommerceCard>();

            //Cycle through played cards
            //Add all Commerce cards to list
            for (int i = 0; i < p.getPlayedCards().Count; i++)
            {
                if ((p.getPlayedCards()[i].getType() == Card._MERCHANT) &&
                    (p.getPlayedCards()[i].getAct() == Card._CIVILIAN))
                {
                    comlist.Add((CommerceCard)p.getPlayedCards()[i]);
                }
            }

            for (int i = 0; i < comlist.Count; i++)
            {
                //Victorypoints per wonder
                if (comlist[i].getPerWonder() == 2)
                {
                    score = score + p.getBoard().getCurrentWonderLevel();
                }

                //Victorypoint per card
                if ((comlist[i].getCollect()[2] > 0))
                {
                    //crawl through all played cards of player
                    for (int j = 0; j < p.getPlayedCards().Count; j++)
                    {
                        //if card type matches victorypoint condition of commercial card
                        if (p.getPlayedCards()[j].getType() == comlist[i].getCollect()[0])
                        {
                            //add points appropriate to commercial card parameters
                            score = score + comlist[i].getCollect()[2];
                            System.Console.WriteLine(comlist[i].getCollect()[2]);
                        }
                    }
                }
            }
            return(score);
        }
Esempio n. 17
0
        public Card getNextCard(PlayerState p, List<Card> hand)
        {
            Card cur = ult.playPrimary(p, hand);
            if (cur != null)
            {
                return cur;
            }

            //attempts to play wonder to increase science
            if((p.getBoard().getName().Equals("WB3"))
                && (p.getBoard().getCurrentWonderLevel() < 2)
                && (ResourceManager.GetInstance().ValidateWonder(p))){
                for (int i = 0; i < hand.Count; i++){
                    if(hand[i].getType() != 6){
                        p.setWonderCards(hand[i]);
                        p.getBoard().incrementWonderLevel(p);
                        return hand[i];
                    }
                }
            }

            if((p.getBoard().getName().Equals("WB4"))
                && (p.getBoard().getCurrentWonderLevel() < 3)
                && (ResourceManager.GetInstance().ValidateWonder(p))){
                for (int i = 0; i < hand.Count; i++){
                    if(hand[i].getType() != 6){
                        p.setWonderCards(hand[i]);
                        p.getBoard().incrementWonderLevel(p);
                        return hand[i];
                    }
                }
            }

            cur = ult.playSecondary(p, hand);
            if (cur != null)
            {
                return cur;
            }

            cur = ult.buildWonder(p, hand);
            if (cur != null)
            {
                return cur;
            }

            return ult.playAnyCard(p, hand);
        }
Esempio n. 18
0
 //initial baseResources build up, SRCard initializer
 protected int[] ResourceInitializer(PlayerState p) {
     int[] rTotals = p.getBoard().getResources();
     int[] tempResource = new int[7];
     //Fill rTotals first, Wonder then Cards
     
     //Cards
     for (int i = 0; i < p.getPlayedCards().Count; i++)
     {
         //resource/manufactured good cards only
         if ((p.getPlayedCards()[i].getType() == 1) || (p.getPlayedCards()[i].getType() == 2))
         {
             //remove optional resource cards from total 
             if ((p.getPlayedCards()[i].getNumber() < 7) || (p.getPlayedCards()[i].getNumber() > 14))
             {
                 ResourceCard tempCard = (ResourceCard)p.getPlayedCards()[i];
                 
                 System.Console.WriteLine("tempCard: " + tempCard.getResources());
                 
                 addResources(rTotals,tempCard.getResources());
             }
         }
     }
     return rTotals;
 }
Esempio n. 19
0
        private int ScienceScore(PlayerState p)
        {
            //System.Console.WriteLine("sciencescore start");
            List <ScienceCard> scilist = new List <ScienceCard>();

            int[] sciTotals = new int[3] {
                0, 0, 0
            };

            //Cycle through played cards
            for (int i = 0; i < p.getPlayedCards().Count; i++)
            {
                if (p.getPlayedCards()[i].getType() == Card._SCIENCE)
                {
                    scilist.Add((ScienceCard)p.getPlayedCards()[i]);
                }
            }
            //Cycle through science card list to add up sciencetype totals
            for (int i = 0; i < scilist.Count; i++)
            {
                //System.Console.WriteLine(scilist[i].getSciType());
                sciTotals[scilist[i].getSciType()]++;
            }

            int score = 0;

            if (scienceguildCard == true)
            {
                if (sciTotals.Max() > 5)
                {
                    sciTotals[Array.IndexOf(sciTotals, sciTotals.Max())]++;
                }
                else
                {
                    sciTotals[Array.IndexOf(sciTotals, sciTotals.Min())]++;
                }
            }
            if (p.getBoard().getName() == "WB3")
            {
                if (((WB3)p.getBoard()).getScienceActivated())
                {
                    if (sciTotals.Max() > 5)
                    {
                        sciTotals[Array.IndexOf(sciTotals, sciTotals.Max())]++;
                    }
                    else
                    {
                        sciTotals[Array.IndexOf(sciTotals, sciTotals.Min())]++;
                    }
                }
            }
            if (p.getBoard().getName() == "WB4")
            {
                if (((WB4)p.getBoard()).getScienceActivated())
                {
                    if (sciTotals.Max() > 5)
                    {
                        sciTotals[Array.IndexOf(sciTotals, sciTotals.Max())]++;
                    }
                    else
                    {
                        sciTotals[Array.IndexOf(sciTotals, sciTotals.Min())]++;
                    }
                }
            }
            //Set points
            score = score + (sciTotals.Min() * 7);
            //System.Console.WriteLine("Min Score" + sciTotals.Min());
            //Points for types
            //System.Console.WriteLine("Type 0" + sciTotals[0]);
            score = score + (sciTotals[0] * sciTotals[0]);
            //System.Console.WriteLine("Type 1" + sciTotals[1]);
            score = score + (sciTotals[1] * sciTotals[1]);
            //System.Console.WriteLine("Type 2" + sciTotals[2]);
            score = score + (sciTotals[2] * sciTotals[2]);
            System.Console.WriteLine(score);

            return(score);
        }
Esempio n. 20
0
 /*
 * Input: A Player
 *
 * 
 * Output: True or False -> Does the player have enough resources to add to their Wonder Board? 
 */
 public bool ValidateWonder(PlayerState p)
 {
     //System.Console.WriteLine(p.getName() + ":ValidateWonder");
     if (p.getBoard().getCurrentWonderLevel() <p.getBoard().getMaxWonderLevel() )
         return CheckResourceCost(p, p.getBoard().getBuildCost());
     return false;
 }
Esempio n. 21
0
        //trade card to player
        public void tradeTo(PlayerState p, int resourceIndex, int player)
        {
            int coinAmount = 2;

            int[] tradingPostCardNumber = new int[2] {
                0, 0
            };
            if (resourceIndex > 6)
            {
                System.Console.WriteLine("resourceIndex over 6");
                return;
            }

            PlayerState TradeTo = null;

            //Set TradetoPlayer : player = 0, left, else right
            if (player == 0)
            {
                TradeTo = gameState.getLeftPlayer(p);
                tradingPostCardNumber[0] = 33;
                tradingPostCardNumber[1] = 34;
            }
            else if (player == 1)
            {
                TradeTo = gameState.getRightPlayer(p);
                tradingPostCardNumber[0] = 31;
                tradingPostCardNumber[1] = 32;
            }

            //Commerce Trading Exceptions
            for (int i = 0; i < ComCards[p.getName()].Count; i++)
            {
                if ((resourceIndex > 3) && (p.getBoard().getName() == "WB10") && (p.getBoard().getCurrentWonderLevel() > 0))
                {
                    coinAmount = 1;
                }
                //Market Card
                if ((resourceIndex > 3) && ((ComCards[p.getName()][i].getNumber() == 35) || (ComCards[p.getName()][i].getNumber() == 36)))
                {
                    coinAmount = 1;
                }
                //Trading Post
                if ((resourceIndex < 4) && ((ComCards[p.getName()][i].getNumber() == tradingPostCardNumber[0]) || (ComCards[p.getName()][i].getNumber() == tradingPostCardNumber[1])))
                {
                    coinAmount = 1;
                }
            }

            //1. Check for resource in base
            if (baseResources[TradeTo.getName()][resourceIndex] > 0)
            {
                coinTransactions[player] += coinAmount;
                TempResources[p.getName()][resourceIndex]++;
                TempResources[TradeTo.getName()][resourceIndex]--;
                System.Console.WriteLine("Traded from Base Resource.");
            }
            //2. Then check resource in SR
            else if (SpecialResourceArray(TradeTo)[resourceIndex] > 0)
            {
                coinTransactions[player] += coinAmount;
                TempResources[p.getName()][resourceIndex]++;
                usingSpecialResource(TradeTo, resourceIndex);
                System.Console.WriteLine("Traded from Special Resource.");
            }
            //3. Profit
            else
            {
                System.Console.WriteLine("Error, no such resource available.");
            }
        }
Esempio n. 22
0
        public Card getNextCard(PlayerState p, List <Card> hand)
        {
            PlayerState left  = ResourceManager.GetInstance().getGameState().getLeftPlayer(p);
            PlayerState right = ResourceManager.GetInstance().getGameState().getRightPlayer(p);
            int         age   = ResourceManager.GetInstance().getGameState().getAge();

            Card cur;

            //Checks to see if AI has enough MilitaryPower to win the
            //the battles at the end of the Age
            if ((left.getMilitaryPower() >= p.getMilitaryPower() - age) ||
                (right.getMilitaryPower() >= p.getMilitaryPower() - age))
            {
                cur = ult.playPrimary(p, hand);
                if (cur != null)
                {
                    return(cur);
                }
            }

            //attempts to play wonder to increase military
            if ((p.getBoard().getName().Equals("WB7")) &&
                (p.getBoard().getCurrentWonderLevel() < 2) &&
                (ResourceManager.GetInstance().ValidateWonder(p)))
            {
                for (int i = 0; i < hand.Count; i++)
                {
                    if (hand[i].getType() != 6)
                    {
                        p.setWonderCards(hand[i]);
                        p.getBoard().incrementWonderLevel(p);
                        return(hand[i]);
                    }
                }
            }

            if ((p.getBoard().getName().Equals("WB8")) &&
                (p.getBoard().getCurrentWonderLevel() < 2) &&
                (ResourceManager.GetInstance().ValidateWonder(p)))
            {
                for (int i = 0; i < hand.Count; i++)
                {
                    if (hand[i].getType() != 6)
                    {
                        p.setWonderCards(hand[i]);
                        p.getBoard().incrementWonderLevel(p);
                        return(hand[i]);
                    }
                }
            }

            cur = ult.playSecondary(p, hand);
            if (cur != null)
            {
                return(cur);
            }

            cur = ult.buildWonder(p, hand);
            if (cur != null)
            {
                return(cur);
            }

            return(ult.playAnyCard(p, hand));
        }
Esempio n. 23
0
 private int WonderScore(PlayerState p) { return p.getBoard().getVictoryPoints(); }
Esempio n. 24
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;
 }
Esempio n. 25
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);
        }
        public bool CheckResourceCost(PlayerState p, Card c)
        {
            int[] totalResources = { 0, 0, 0, 0, 0, 0, 0 };

            int[] cost = c.getCost();
            int[] boardResources = p.getBoard().getResources();
            List<int> playersResources = hashtable[p.getName()];

            for (int i = 0; i < playersResources.Count(); i++)
            {
                totalResources[i] = (playersResources[i] + boardResources[i]);
            }

            var resources = Enum.GetValues(typeof(Resource));
            foreach (var type in resources)
            {
                int resource = (int)type;
                if (cost[resource] > totalResources[resource])
                    return false;
            }
            return true;
        }
        public Resources GetResources(PlayerState p)
        {
            List<int> l = hashtable[gameState.getLeftPlayer(p).getName()];
            List<int> r = hashtable[gameState.getRightPlayer(p).getName()];
            List<int> c = hashtable[p.getName()];

            // Get the wonder boards default resources
            //_logger.CheckWonderBoard(p);
            if (boardRAdded == false)
            {
                int[] br = p.getBoard().getResources();
                for (int i = 0; i < br.Count(); i++)
                    c[i] = (br[i] + c[i]);
                boardRAdded = true;
            }
            
            return new Resources(l.ToArray(), r.ToArray(), c.ToArray(), p.getName());       
        }
Esempio n. 28
0
        public Card getNextCard(PlayerState p, List<Card> hand)
        {
            PlayerState left = ResourceManager.GetInstance().getGameState().getLeftPlayer(p);
            PlayerState right = ResourceManager.GetInstance().getGameState().getRightPlayer(p);
            int age = ResourceManager.GetInstance().getGameState().getAge();

            Card cur;

            //Checks to see if AI has enough MilitaryPower to win the
            //the battles at the end of the Age
            if ((left.getMilitaryPower() >= p.getMilitaryPower() - age) ||
                (right.getMilitaryPower() >= p.getMilitaryPower() - age))
            {
                cur = ult.playPrimary(p, hand);
                if (cur != null)
                {
                    return cur;
                }
            }

            //attempts to play wonder to increase military
            if ((p.getBoard().getName().Equals("WB7"))
                && (p.getBoard().getCurrentWonderLevel() < 2)
                && (ResourceManager.GetInstance().ValidateWonder(p)))
            {
                for (int i = 0; i < hand.Count; i++)
                {
                    if (hand[i].getType() != 6)
                    {
                        p.setWonderCards(hand[i]);
                        p.getBoard().incrementWonderLevel(p);
                        return hand[i];
                    }
                }
            }

            if ((p.getBoard().getName().Equals("WB8"))
                && (p.getBoard().getCurrentWonderLevel() < 2)
                && (ResourceManager.GetInstance().ValidateWonder(p)))
            {
                for (int i = 0; i < hand.Count; i++)
                {
                    if (hand[i].getType() != 6)
                    {
                        p.setWonderCards(hand[i]);
                        p.getBoard().incrementWonderLevel(p);
                        return hand[i];
                    }
                }
            }

            cur = ult.playSecondary(p, hand);
            if (cur != null)
            {
                return cur;
            }

            cur = ult.buildWonder(p, hand);
            if (cur != null)
            {
                return cur;
            }

            return ult.playAnyCard(p, hand);
        }
Esempio n. 29
0
 private Card BuildWonder(PlayerState p, List<Card> hand)
 {
     if (p.getBoard().notMaxYet())
     {
         for (int i = 0; i < hand.Count(); i++)
         {
             if (hand[i].getType() == 1 || hand[i].getType() == 2)
             {
                 if (ResourceManager.GetInstance().ValidateWonder(p))
                 {
                     strategy = new CommerceStrategy();
                     p.setWonderCards(hand[i]);
                     p.getBoard().incrementWonderLevel(p);
                     return hand[i];
                 }
             }
         }
     }
     return null;
 }
 //Initial call to check for wonder validity
 public bool ValidateWonder(PlayerState p)
 {
     return CheckResourceCost(p, p.getBoard().getBuildCost(p.getBoard().getCurrentWonderLevel()));
 }
        //returns the base resources
        /*public Resources GetResources(PlayerState p)
        {
            List<int> l = baseResources[gameState.getLeftPlayer(p).getName()];
            List<int> r = baseResources[gameState.getRightPlayer(p).getName()];
            List<int> c = baseResources[p.getName()];

            // Get the wonder boards default resources
            //_logger.CheckWonderBoard(p);
            
            return new Resources(l.ToArray(), r.ToArray(), c.ToArray(), p.getName());       
        }*/


        /*
        * Input: A Player
        *
        * 
        * Output: Resources Object -> Given the player object, what are the total available resources
        * adding both chosen special resources and base resources? 
        */
        public Resources GetCombinedResources(PlayerState p)
        {
            List<int> l = new List<int>();
            List<int> r = new List<int>();
            List<int> c = new List<int>();

            for (int i = 0; i < 7; i++) 
            {
                l.Add(baseResources[gameState.getLeftPlayer(p).getName()][i] 
                                   + TempResources[gameState.getLeftPlayer(p).getName()][i]);
                r.Add(baseResources[gameState.getRightPlayer(p).getName()][i] 
                                   + TempResources[gameState.getRightPlayer(p).getName()][i]);
                c.Add(baseResources[p.getName()][i] + TempResources[p.getName()][i]);
            }

            // Get the wonder boards default resources
            //_logger.CheckWonderBoard(p);
            int[] br = p.getBoard().getResources();
            for (int i = 0; i < br.Count(); i++)
                c[i] = (br[i] + c[i]);

            // Now lets get any speical resources the player may have
            //List<ResourceCard> sr = SResources[p.getName()];
            //for (int i = 0; i < sr.Count(); i++)
            //{
            //    ResourceCard rc = sr[i];
            //    int[] resources = rc.getResources();
            //    for (int index = 0; index < resources.Count(); index++)
            //        c[index] = (c[index] + resources[index]);
            //}

            return new Resources(l.ToArray(), r.ToArray(), c.ToArray(), p.getName());
        }
Esempio n. 32
0
//Mouse Click for "Add to Wonder" Button
        public void wonderCardButton_Click(object sender, EventArgs e)
        {
            if (player.getPlayedACard() == false && (player.getBoard().getMaxWonderLevel() > player.getWonderCards().Count))
            {
                for (int i = 0; i < player.getHand().Count; i++)
                {
                    Card  c   = player.getHand()[i];
                    Image img = (Image)playBoard.Children[(56 + i)];

                    if (img.ActualHeight > 150)
                    {
                        if (img.Source != new BitmapImage(new Uri(@"pack://*****:*****@"pack://application:,,,/Images/EmptyCard.png", UriKind.RelativeOrAbsolute));

                                Image           imgl = (Image)playBoard.Children[91];
                                PlayerGameBoard play = new PlayerGameBoard(parent, player, game);
                            }
                            else
                            {
                                ResourceManager manager = ResourceManager.GetInstance(game);
                                manager.resetResources(player);

                                WonderBuyingWindow window = new WonderBuyingWindow(ResourceManager.GetInstance().GetCombinedResources(player), c, this, game);
                                window.Show();
                            }
                        }
                    }
                }
            }
        }
Esempio n. 33
0
 private int WonderScore(PlayerState p)
 {
     return(p.getBoard().getVictoryPoints());
 }
Esempio n. 34
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;
        }
Esempio n. 35
0
        public void CheckWonderBoard(PlayerState p)
        {
            if (Log(p))
            {
                Console.WriteLine("\n--------------------------------------------------------------------------------------------------------");

                int[] resources = p.getBoard().getResources();
                Console.WriteLine("[{0}] [Board.getResources ([{1}] [{2}])] ", _class.GetType().Name, p.getName(), p.getBoard().getName());
                for (int index = 0; index < resources.Count(); index++)
                {
                    Console.Write("[{0} : {1}] ", ((Resource)index).ToString(), resources[index]);
                }
                Console.WriteLine();
                Console.WriteLine("--------------------------------------------------------------------------------------------------------\n");
            }
        }
Esempio n. 36
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);
        }
// This button click handler finds which button you pressed and then modifies the appropriate
// Player resources as well calling methods for removing and adding money
// B[1,7] = YOU, B[8,14] = LEFT, B[15-21] = RIGHT

        private void buyButton_Click(object sender, RoutedEventArgs e)
        {
            Button b    = (Button)sender;
            string name = b.Name;//have button name will travel

            int index;

            if (name.Length > 2)
            {
                index = ((int)Char.GetNumericValue(name[1]) * 10) + (int)Char.GetNumericValue(name[2]);
            }
            else
            {
                index = (int)Char.GetNumericValue(name[1]);//know which number
            }

            if (index > 0 && index < 8)//Player clicked on YOU
            {
                manager.usingSpecialResource(you, (index - 1));
                resources = manager.GetCombinedResources(you);

                if (manager.ValidateWonder(you)) //ok check if you can play the card now.
                {
                    you.getHand().Remove(card);  //remove from cards in hand of player
                    you.setPlayedACard();        //set true
                    you.setWonderCards(card);

                    you.getBoard().incrementWonderLevel(you);
                    manager.getGameState().incrementTurn();
                    this.Close();
                    PlayerGameBoard play = new PlayerGameBoard(board.getGrid(), you, manager.getGameState());
                }
                else
                {
                    this.Close();

                    WonderBuyingWindow window = new WonderBuyingWindow(resources, card, board, game);
                    window.Show();
                }
            }

            if (index > 7 && index < 15)//Player clicked on LEFT
            {
                int i = (index - 8);

                if (manager.canAfford(you))
                {
                    //PlayerGameBoard play = new PlayerGameBoard(board.getGrid(), you, manager.getGameState());
                    Canvas c = (Canvas)board.getGrid().Children[1];
                    Label  l = (Label)c.Children[90];
                    l.Content = " " + manager.getTempCoins(you);

                    manager.tradeTo(you, i, 0);
                    resources = manager.GetCombinedResources(you);

                    if (manager.ValidateWonder(you)) //ok check if you can play the card now.
                    {
                        you.getHand().Remove(card);  //remove from cards in hand of player
                        you.setPlayedACard();        //set true
                        you.setWonderCards(card);
                        you.getBoard().incrementWonderLevel(you);
                        manager.getGameState().incrementTurn();
                        this.Close();
                        PlayerGameBoard play = new PlayerGameBoard(board.getGrid(), you, manager.getGameState());
                    }
                    else
                    {
                        this.Close();

                        WonderBuyingWindow window = new WonderBuyingWindow(resources, card, board, game);
                        window.Show();
                    }
                }
            }

            if (index > 14 && index < 22) //Player clicked on RIGHT
            {
                int i = (index - 15);     //0-6 the resource traded

                if (manager.canAfford(you))
                {
                    Canvas c = (Canvas)board.getGrid().Children[1];
                    Label  l = (Label)c.Children[90];
                    l.Content = " " + manager.getTempCoins(you);

                    manager.tradeTo(you, i, 1);
                    resources = manager.GetCombinedResources(you);

                    if (manager.ValidateWonder(you)) //ok check if you can play the card now.
                    {
                        you.getHand().Remove(card);  //remove from cards in hand of player
                        you.setPlayedACard();        //set true
                        you.setWonderCards(card);
                        you.getBoard().incrementWonderLevel(you);
                        manager.getGameState().incrementTurn();
                        this.Close();
                        PlayerGameBoard play = new PlayerGameBoard(board.getGrid(), you, manager.getGameState());
                    }
                    else
                    {
                        this.Close();

                        WonderBuyingWindow window = new WonderBuyingWindow(resources, card, board, game);
                        window.Show();
                    }
                }
            }
        }
Esempio n. 38
0
        private int comScore(PlayerState p) {
            int score = 0;

            List<CommerceCard> comlist;
            
            //Commercial Structure
            comlist = new List<CommerceCard>();

            //Cycle through played cards
            //Add all Commerce cards to list
            for (int i = 0; i < p.getPlayedCards().Count; i++)
            {
                if ((p.getPlayedCards()[i].getType() == 4) && (p.getPlayedCards()[i].getAct() == 3))
                {
                    comlist.Add((CommerceCard)p.getPlayedCards()[i]);
                }
            }
            for (int i = 0; i < comlist.Count; i++){
                //Victorypoints per wonder
                if (comlist[i].getPerWonder() == 2) { score = score + p.getBoard().getCurrentWonderLevel(); }
                //Victorypoint per card
                if((comlist[i].getCollect()[2] > 0)){
                    //crawl through all played cards of player
                    for (int j = 0; j < p.getPlayedCards().Count; j++)
                    {
                        //if card type matches victorypoint condition of commercial card
                        if (p.getPlayedCards()[j].getType() == comlist[i].getCollect()[0])
                        {
                            //add points appropriate to commercial card parameters
                            score = score + comlist[i].getCollect()[2];
                        }
                    }
                }
            }
            return score;

            //Guilds

        }
        public int[] tradableArray(PlayerState p, int lr) {
            PlayerState player = null;
            int[] tradeTable = new int[7] { 0, 0, 0, 0, 0, 0, 0 };
            switch (lr)
            {
                case 0:
                    player = p;
                    break;
                case 1: 
                    player = gameState.getLeftPlayer(p);
                    break;
                case 2:
                    player = gameState.getLeftPlayer(p);
                    break;
            }

            int[] boardResources = p.getBoard().getResources();
            for (int i = 0; i < 7; i++)
            {
                    tradeTable[i] = SpecialResourceArray(player.getName())[i] 
                                  + baseResources[player.getName()][i] 
                                  + TempResources[player.getName()][i]
                                  + boardResources[i];
            }

            return tradeTable;
        }
Esempio n. 40
0
        public Card getNextCard(PlayerState p, List<Card> hand)
        {

            Random random = new Random();
            int randomNumber;
         
            Card c = null;
            if (ResourceManager.GetInstance().ValidateWonder(p))
            {
                randomNumber = random.Next(0, 2);
                Console.WriteLine("attempting to play wonder " + randomNumber);
                if (randomNumber == 1)
                {
                    Console.WriteLine("playing wonder " + randomNumber);
                    randomNumber = random.Next(0, hand.Count - 1);
                    c = hand[randomNumber];
                    p.setWonderCards(c);
                    p.getBoard().incrementWonderLevel(p);
                    
                }
            }

            List<int> availCards = new List<int>();
            for (int i = 0; i < hand.Count; i++)
            {
                availCards.Add(i);
            }

            int trade;
            //selects a card to play
            for (int i = 0; i < hand.Count; i++)
            {
                randomNumber = random.Next(0, availCards.Count - 1);
                c = hand[availCards[randomNumber]];
                if (ResourceManager.GetInstance().ValidateCard(p, c))
                {
                    p.addPlayedCards(c);
                    return c;
                    //Console.WriteLine("===================== CHECKED CARD ===========================");
                }
                trade = ResourceManager.GetInstance().validateTrade(p, c, 0);

                if ((trade > 0) && (p.getCoins() >= trade))
                {
                    //.WriteLine(p.getName() + " trading for " + trade);
                    p.updateCoins(-trade);
                    ResourceManager.GetInstance().getGameState().getRightPlayer(p).updateCoins(trade);
                    p.addPlayedCards(c);
                    return c;
                }
                trade = ResourceManager.GetInstance().validateTrade(p, c, 1);

                if ((trade > 0) && (p.getCoins() >= trade))
                {
                    //Console.WriteLine(p.getName() + " trading for " + trade);
                    p.updateCoins(-trade);
                    p.addPlayedCards(c);
                    ResourceManager.GetInstance().getGameState().getLeftPlayer(p).updateCoins(trade);
                    return c;
                }
                availCards.Remove(randomNumber);
                //Console.Write("RANDOM STRATEGY:: AGE :: ");
                //Console.WriteLine(ResourceManager.GetInstance().getGameState().getAge());

            }
            return null;
        }
Esempio n. 41
0
 //attempts to build a wonder
 public Card buildWonder(PlayerState p, List<Card> hand)
 {
     if (ResourceManager.GetInstance().ValidateWonder(p))
     {
         for (int i = 0; i < hand.Count; i++)
         {
             if (hand[i].getType() == strategy)
             {
                 p.setWonderCards(hand[i]);
                 p.getBoard().incrementWonderLevel(p);
                 return hand[i];
             }
         }
         return hand[0];
     }
     return null;
 }
Esempio n. 42
0
        public Card getNextCard(PlayerState p, List <Card> hand)
        {
            Random random = new Random();
            int    randomNumber;

            Card c = null;

            if (ResourceManager.GetInstance().ValidateWonder(p))
            {
                randomNumber = random.Next(0, 2);
                Console.WriteLine("attempting to play wonder " + randomNumber);
                if (randomNumber == 1)
                {
                    Console.WriteLine("playing wonder " + randomNumber);
                    randomNumber = random.Next(0, hand.Count - 1);
                    c            = hand[randomNumber];
                    p.setWonderCards(c);
                    p.getBoard().incrementWonderLevel(p);
                }
            }

            List <int> availCards = new List <int>();

            for (int i = 0; i < hand.Count; i++)
            {
                availCards.Add(i);
            }

            int trade;

            //selects a card to play
            for (int i = 0; i < hand.Count; i++)
            {
                randomNumber = random.Next(0, availCards.Count - 1);
                c            = hand[availCards[randomNumber]];
                if (ResourceManager.GetInstance().ValidateCard(p, c))
                {
                    p.addPlayedCards(c);
                    return(c);
                    //Console.WriteLine("===================== CHECKED CARD ===========================");
                }
                trade = ResourceManager.GetInstance().validateTrade(p, c, 0);

                if ((trade > 0) && (p.getCoins() >= trade))
                {
                    //.WriteLine(p.getName() + " trading for " + trade);
                    p.updateCoins(-trade);
                    ResourceManager.GetInstance().getGameState().getRightPlayer(p).updateCoins(trade);
                    p.addPlayedCards(c);
                    return(c);
                }
                trade = ResourceManager.GetInstance().validateTrade(p, c, 1);

                if ((trade > 0) && (p.getCoins() >= trade))
                {
                    //Console.WriteLine(p.getName() + " trading for " + trade);
                    p.updateCoins(-trade);
                    p.addPlayedCards(c);
                    ResourceManager.GetInstance().getGameState().getLeftPlayer(p).updateCoins(trade);
                    return(c);
                }
                availCards.Remove(randomNumber);
                //Console.Write("RANDOM STRATEGY:: AGE :: ");
                //Console.WriteLine(ResourceManager.GetInstance().getGameState().getAge());
            }
            return(null);
        }