private static void InsertCardData( HtmlRenderer htmlWriter, string title, CardGameSubset gameSubset, MapOfCardsForGameSubset <ForwardAndReversePerTurnPlayerCounters> statsPerCard, ForwardAndReversePerTurnPlayerCounters turnCounts, int playerIndex, int throughTurn) { Card[] cards = gameSubset.Where(c => c is Card).Select(c => (Card)c).OrderBy(card => card.DefaultCoinCost).ToArray(); string[] seriesLabel = new string[cards.Length]; int[] xAxis = Enumerable.Range(1, throughTurn).ToArray(); float[][] seriesData = new float[cards.Length][]; for (int i = 0; i < cards.Length; i++) { seriesLabel[i] = cards[i].name; seriesData[i] = statsPerCard[cards[i]].forwardTotal.GetAveragePerTurn(playerIndex, throughTurn, turnCounts.forwardTotal); } htmlWriter.InsertExpander(title, delegate() { htmlWriter.InsertLineGraph(title, "Turn", seriesLabel, xAxis, seriesData); }, collapseByDefault: true); }
private void IncrementAllDivisors(MapOfCardsForGameSubset <PlayerCounterSeparatedByGame> map, PlayerState playerState) { foreach (Card card in cardGameSubset) { map[card].IncrementDivisor(playerState); } }
private void EndGamePerCard(MapOfCardsForGameSubset <ForwardAndReversePerTurnPlayerCounters> map, GameState gameState) { foreach (Card card in cardGameSubset) { map[card].EndGame(gameState, this.turnCounters); } }
private MapOfCardsForGameSubset <PlayerCounterSeparatedByGame> ContstructCounter(int playerCount, CardGameSubset gameSubset) { var result = new MapOfCardsForGameSubset <PlayerCounterSeparatedByGame>(gameSubset); foreach (Card card in gameSubset) { result[card] = new PlayerCounterSeparatedByGame(playerCount); } return(result); }
private MapOfCardsForGameSubset <ForwardAndReversePerTurnPlayerCounters> ContstructCounterPerTurn(int playerCount, CardGameSubset gameSubset) { var result = new MapOfCardsForGameSubset <ForwardAndReversePerTurnPlayerCounters>(gameSubset); foreach (Card card in gameSubset) { result[card] = new ForwardAndReversePerTurnPlayerCounters(playerCount); } return(result); }
private static void InsertCardData(HtmlRenderer htmlWriter, MapOfCardsForGameSubset <PlayerCounterSeparatedByGame> map, CardGameSubset gameSubset, PlayerAction player1, PlayerAction player2) { var cards = gameSubset.OrderBy(c => c.DefaultCoinCost); var player1Data = new List <float>(); var player2Data = new List <float>(); foreach (Card card in cards) { player1Data.Add(map[card].GetAverage(playerIndex: 0)); player2Data.Add(map[card].GetAverage(playerIndex: 1)); } htmlWriter.InsertExpander("Cards Report", delegate() { htmlWriter.InsertColumnChart( "Average Count of Cards Owned at End of Game", "Card", new string[] { player1.PlayerName, player2.PlayerName }, cards.Select(c => c.name).ToArray(), new float[][] { player1Data.ToArray(), player2Data.ToArray() }); }, collapseByDefault: false); }
public StatsPerTurnGameLog(int playerCount, CardGameSubset gameSubset) { this.turnCounters = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.coinToSpend = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.cardsGained = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.ruinsGained = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.cursesGained = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.cursesTrashed = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.victoryPointTotal = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.deckShuffleCount = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.oddsOfBeingAheadOnRoundEnd = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.oddsOfHittingAtLeastACoinAmount = new ForwardAndReversePerTurnPlayerCounters[9]; for (int i = 0; i < this.oddsOfHittingAtLeastACoinAmount.Length; ++i) { this.oddsOfHittingAtLeastACoinAmount[i] = new ForwardAndReversePerTurnPlayerCounters(playerCount); } this.cardGameSubset = gameSubset; this.cardsTotalCount = ContstructCounterPerTurn(playerCount, gameSubset); this.carsGainedOnTurn = ContstructCounterPerTurn(playerCount, gameSubset); this.endOfGameCardCount = ContstructCounter(playerCount, gameSubset); }
public StatsPerTurnGameLog(int playerCount, CardGameSubset gameSubset) { this.turnCounters = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.coinToSpend = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.cardsGained = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.ruinsGained = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.cursesGained = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.cursesTrashed = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.victoryPointTotal = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.deckShuffleCount = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.oddsOfBeingAheadOnRoundEnd = new ForwardAndReversePerTurnPlayerCounters(playerCount); this.oddsOfHittingAtLeastACoinAmount = new ForwardAndReversePerTurnPlayerCounters[9]; for (int i = 0; i < this.oddsOfHittingAtLeastACoinAmount.Length; ++i) { this.oddsOfHittingAtLeastACoinAmount[i] = new ForwardAndReversePerTurnPlayerCounters(playerCount); } this.cardGameSubset = gameSubset; this.cardsTotalCount = ContstructCounterPerTurn(playerCount, gameSubset); this.carsGainedOnTurn = ContstructCounterPerTurn(playerCount, gameSubset); this.endOfGameCardCount = ContstructCounter(playerCount, gameSubset); }
private void IncrementAllDivisors(MapOfCardsForGameSubset<PlayerCounterSeparatedByGame> map, PlayerState playerState) { foreach (Card card in cardGameSubset) { map[card].IncrementDivisor(playerState); } }
private void EndGamePerCard(MapOfCardsForGameSubset<ForwardAndReversePerTurnPlayerCounters> map, GameState gameState) { foreach (Card card in cardGameSubset) { map[card].EndGame(gameState, this.turnCounters); } }
private MapOfCardsForGameSubset<ForwardAndReversePerTurnPlayerCounters> ContstructCounterPerTurn(int playerCount, CardGameSubset gameSubset) { var result = new MapOfCardsForGameSubset<ForwardAndReversePerTurnPlayerCounters>(gameSubset); foreach (Card card in gameSubset) { result[card] = new ForwardAndReversePerTurnPlayerCounters(playerCount); } return result; }
private MapOfCardsForGameSubset<PlayerCounterSeparatedByGame> ContstructCounter(int playerCount, CardGameSubset gameSubset) { var result = new MapOfCardsForGameSubset<PlayerCounterSeparatedByGame>(gameSubset); foreach (Card card in gameSubset) { result[card] = new PlayerCounterSeparatedByGame(playerCount); } return result; }
public GameState( IPlayerAction[] playerActions, int[] playerPositions, Game game) { if (playerActions.Length != playerPositions.Length) throw new Exception(); this.game = game; GameConfig gameConfig = game.GameConfig; this.emptyCardCollection = new CollectionCards(this.CardGameSubset, null); int playerCount = playerActions.Length; this.supplyPiles = gameConfig.GetSupplyPiles(playerCount, game.random); this.nonSupplyPiles = gameConfig.GetNonSupplyPiles(playerCount); this.mapCardToPile = new MapOfCardsForGameSubset<PileOfCards>(this.CardGameSubset); this.BuildMapOfCardToPile(); this.players = new PlayerCircle(playerCount, playerActions, playerPositions, game); this.hasPileEverBeenGained = new MapPileOfCards<bool>(this.supplyPiles); this.pileEmbargoTokenCount = new MapPileOfCards<int>(this.supplyPiles); this.trash = new BagOfCards(this.CardGameSubset); this.cardContextStack = new CardContextStack(); this.GainStartingCards(gameConfig); foreach (PileOfCards cardPile in this.supplyPiles) { cardPile.ProtoTypeCard.DoSpecializedSetupIfInSupply(this); } this.players.AllPlayersDrawInitialCards(gameConfig, this); }
private static void InsertCardData(HtmlRenderer htmlWriter, MapOfCardsForGameSubset<PlayerCounterSeparatedByGame> map, CardGameSubset gameSubset, PlayerAction player1, PlayerAction player2) { var cards = gameSubset.OrderBy(c => c.DefaultCoinCost); var player1Data = new List<float>(); var player2Data = new List<float>(); foreach (Card card in cards) { player1Data.Add(map[card].GetAverage(playerIndex: 0)); player2Data.Add(map[card].GetAverage(playerIndex: 1)); } htmlWriter.InsertExpander("Cards Report", delegate() { htmlWriter.InsertColumnChart( "Average Count of Cards Owned at End of Game", "Card", new string[] { player1.PlayerName, player2.PlayerName}, cards.Select(c => c.name).ToArray(), new float[][] { player1Data.ToArray(), player2Data.ToArray() }); }, collapseByDefault: false); }
private static void InsertCardData( HtmlRenderer htmlWriter, string title, CardGameSubset gameSubset, MapOfCardsForGameSubset<ForwardAndReversePerTurnPlayerCounters> statsPerCard, ForwardAndReversePerTurnPlayerCounters turnCounts, int playerIndex, int throughTurn) { Card[] cards = gameSubset.OrderBy(card => card.DefaultCoinCost).ToArray(); string[] seriesLabel = new string[cards.Length]; int[] xAxis = Enumerable.Range(1, throughTurn).ToArray(); float[][] seriesData = new float[cards.Length][]; for (int i = 0; i < cards.Length; i++) { seriesLabel[i] = cards[i].name; seriesData[i] = statsPerCard[cards[i]].forwardTotal.GetAveragePerTurn(playerIndex, throughTurn, turnCounts.forwardTotal); } htmlWriter.InsertExpander(title, delegate() { htmlWriter.InsertLineGraph(title, "Turn", seriesLabel, xAxis, seriesData); }, collapseByDefault: true); }