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; }
//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; }
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; }