public static Game PlayGame(Team homeTeam, Team awayTeam, RoundType roundType, bool giveHammerAdvantageToTeamWithBetterRecord = false) { var homeTeamLsd = DrawToTheButton(homeTeam, roundType); var awayTeamLsd = DrawToTheButton(awayTeam, roundType); bool homeHasHammer = GetHomeHasHammer(homeTeam, awayTeam, homeTeamLsd, awayTeamLsd, giveHammerAdvantageToTeamWithBetterRecord); double probabilityHomeBeatsAway = GetProbabilityOfHomeBeatingAway(homeTeam, awayTeam, homeHasHammer); var random = new Random(); if (random.NextDouble() < probabilityHomeBeatsAway) { if (roundType == RoundType.Qualifying) { homeTeam.QualifyingRoundRecord.AddWin(); awayTeam.QualifyingRoundRecord.AddLoss(); } if (roundType != RoundType.Playoff) { homeTeam.RoundRobinRecord.AddWin(); awayTeam.RoundRobinRecord.AddLoss(); } return(new Game() { WinningTeam = homeTeam, LosingTeam = awayTeam, HomeTeam = homeTeam, AwayTeam = awayTeam, HomeTeamLsd = homeTeamLsd, AwayTeamLsd = awayTeamLsd, HomeTeamWon = true, AwayTeamWon = false, HomeHammer = homeHasHammer, AwayHammer = !homeHasHammer }); } else { if (roundType == RoundType.Qualifying) { homeTeam.QualifyingRoundRecord.AddLoss(); awayTeam.QualifyingRoundRecord.AddWin(); } if (roundType != RoundType.Playoff) { homeTeam.RoundRobinRecord.AddLoss(); awayTeam.RoundRobinRecord.AddWin(); } return(new Game() { WinningTeam = awayTeam, LosingTeam = homeTeam, HomeTeam = homeTeam, AwayTeam = awayTeam, HomeTeamLsd = homeTeamLsd, AwayTeamLsd = awayTeamLsd, HomeTeamWon = false, AwayTeamWon = true, HomeHammer = homeHasHammer, AwayHammer = !homeHasHammer }); } }