Exemplo n.º 1
0
    public void UpdateStats(ISimulationStats statsSoFar, ISingleGameStats singleGameStats)
    {
        switch (singleGameStats.Winner)
        {
        case 1:
            statsSoFar.Player1Wins++;
            break;

        case 2:
            statsSoFar.Player2Wins++;
            break;

        default:
            statsSoFar.Ties++;
            break;
        }
        statsSoFar.Player1WinsNinetySixToZero += (singleGameStats.Player1WinsNinetySixToZero ? 1 : 0);
        statsSoFar.Player2WinsNinetySixToZero += (singleGameStats.Player2WinsNinetySixToZero ? 1 : 0);
        statsSoFar.TotalWinsNinetySixToZero   += (singleGameStats.Player1WinsNinetySixToZero ? 1 : 0);
        statsSoFar.TotalWinsNinetySixToZero   += (singleGameStats.Player2WinsNinetySixToZero ? 1 : 0);
        UpdateWarDepthWins(singleGameStats.Player1WarWinsByDepth, statsSoFar.Player1WarWinsByDepth);
        UpdateWarDepthWins(singleGameStats.Player1WarWinsByDepth, statsSoFar.WarsByDepth);
        UpdateWarDepthWins(singleGameStats.Player2WarWinsByDepth, statsSoFar.Player2WarWinsByDepth);
        UpdateWarDepthWins(singleGameStats.Player2WarWinsByDepth, statsSoFar.WarsByDepth);

        if (singleGameStats.SimulationTime < statsSoFar.ShortestGame)
        {
            statsSoFar.ShortestGame = singleGameStats.SimulationTime;
        }
    }
Exemplo n.º 2
0
    public string GetFinalStats(GameParameters gameParams, ISimulationStats stats)
    {
        var totalGames  = stats.Player1Wins + stats.Player2Wins + stats.Ties;
        var finalResult = $@"
Finished simulation of {gameParams.TotalLengthOfSimulation:c} of game play between {gameParams.FirstPlayerName} and {gameParams.SecondPlayerName}...

Simulation Time: {stats.TotalSimulationTime:c}
Shortest Game: {stats.ShortestGame:c}
Total Games Played: {totalGames:n0}
Ties: {stats.Ties:n0} ({calculatePercentage(stats.Ties, totalGames)})
{gameParams.FirstPlayerName} Wins: {stats.Player1Wins:n0} ({calculatePercentage(stats.Player1Wins, totalGames)})
{gameParams.SecondPlayerName} Wins: {stats.Player2Wins:n0} ({calculatePercentage(stats.Player2Wins, totalGames)})
{getWarStats(stats)}
";

        return(finalResult);
    }
Exemplo n.º 3
0
    private string getWarStats(ISimulationStats stats)
    {
        int maxWarDepth = 0;

        for (int i = stats.WarsByDepth.Count - 1; i >= 1; i--)
        {
            if (stats.WarsByDepth[i] > 0)
            {
                maxWarDepth = i;
                break;
            }
        }
        if (maxWarDepth == 0)
        {
            return("No wars");
        }
        var wars = new StringBuilder();

        for (int i = 1; i <= maxWarDepth; i++)
        {
            wars.AppendLine($"{stats.WarsByDepth[i]:n0} {translateDepth(i)} war(s)");
        }
        return(wars.ToString());
    }