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