Esempio n. 1
0
        public Trade tradeForRoad(Player theTrader)
        {
            int[] currentResourceAry = resourcesToArray(theTrader);
            int[] myRequest = fillRoadRequest(currentResourceAry);
            int[] myOffer = new int[5];

            //Road building is more likely to come from strategyType 0 where ore isn't important
            if (currentResourceAry[4] > 0)
            {
                if (currentResourceAry[4] == 1)
                    myOffer[4] = 1;
                else if ((currentResourceAry[4] == 2) || (currentResourceAry[4] == 3))
                    myOffer[4] = 2;
                else if (currentResourceAry[4] > 3)
                    myOffer[4] = 3;
            }
            else
            {
                int mostIDX = indexOfMostResource(theTrader, new int[1] { 4 });

                //No point in trading 1 resource you need for 1 resource you need, so dont check it
                if (currentResourceAry[mostIDX] == 2)
                    myOffer[mostIDX] = 1;
                else if (currentResourceAry[mostIDX] == 3)
                    myOffer[mostIDX] = 2;
                else if (currentResourceAry[mostIDX] > 3)
                    myOffer[mostIDX] = 3;
            }

            Trade myTrade = new Trade(theTrader, myOffer, myRequest);
            if (myTrade.isValid())
                return myTrade;
            else
                return null;
        }
Esempio n. 2
0
        //Purpose:  trade for resources that help build settlements
        //          if you can get rid of ore do it, other wise get rid of
        //          whatever you have the most of
        //Params:   theTrader - the Player that is proposing the trade
        //Return:   A Trade object representing the proposed Trade
        public Trade tradeForSettlement(Player theTrader)
        {
            int[] currentResourceAry = resourcesToArray(theTrader);
            int[] myRequest = fillSettlementRequest(currentResourceAry);
            int[] myOffer = new int[5];

            //You have ore, try to unload it
            if (currentResourceAry[4] > 0)
            {
                if (currentResourceAry[4] == 1)
                    myOffer[4] = 1;
                else if ((currentResourceAry[4] == 2) || (currentResourceAry[4] == 3))
                    myOffer[4] = 2;
                else if (currentResourceAry[4] > 3)
                    myOffer[4] = 3;
            }
            //You don't have ore so try to trade 1:1 or 2:1 with your most plentiful
            else
            {
                int mostIDX = indexOfMostResource(theTrader, new int[1] { 4 });

                //No point in trading 1 resource you need for 1 resource you need, so dont check it
                if (currentResourceAry[mostIDX] == 2)
                    myOffer[mostIDX] = 1;
                else if (currentResourceAry[mostIDX] == 3)
                    myOffer[mostIDX] = 2;
                else if (currentResourceAry[mostIDX] > 3)
                    myOffer[mostIDX] = 3;

            }

            Trade myTrade = new Trade(theTrader, myOffer, myRequest);
            if (myTrade.isValid())
                return myTrade;
            else
                return null;
        }
Esempio n. 3
0
        public Trade tradeForCity(Player theTrader)
        {
            int[] currentResourceAry = resourcesToArray(theTrader);
            int[] myRequest = fillCityRequest(currentResourceAry);
            int[] myOffer = new int[5];

            //Hang on to your ore [4] and grain [2]
            int mostIDX = indexOfMostResource(theTrader, new int[2] { 2, 4 });

            //No point in trading 1 resource you need for 1 resource you need, so dont check it
            if (currentResourceAry[mostIDX] == 1)
                myOffer[mostIDX] = 1;
            if (currentResourceAry[mostIDX] == 2)
                myOffer[mostIDX] = 1;
            else if (currentResourceAry[mostIDX] == 3)
                myOffer[mostIDX] = 2;
            else if (currentResourceAry[mostIDX] > 3)
                myOffer[mostIDX] = 3;

            Trade myTrade = new Trade(theTrader, myOffer, myRequest);
            if (myTrade.isValid())
                return myTrade;
            else
                return null;
        }