internal void TestDiceFairness() { List <string> dices = new List <string> { "Normal dice", "Positive biased dice", "Negative biased dice" }; int[] totalDiceValues = { 0, 0, 0 }; Dice[] testDices = new Dice[3]; testDices[0] = new Dice(); testDices[1] = new BiasedDice(100, Biased.Positive); testDices[2] = new BiasedDice(100, Biased.Negative); int numberOfLoops = 1000; //lægger de samlede værdier for hver terning til totalDiceValues for (int i = 0; i < numberOfLoops; i++) { for (int diceType = 0; diceType < 3; diceType++) { testDices[diceType].Roll(); totalDiceValues[diceType] += testDices[diceType].Current; } } //Udregner gennemsnit for hver terningtype og printer det. for (int i = 0; i < 3; i++) { float average = totalDiceValues[i] / (float)numberOfLoops; Console.WriteLine($"Gennemnit for {dices[i]}: {average}"); } }
internal Yatzy() { Dices = new Dice[6]; for (int i = 0; i < Dices.Length; i++) { Dices[i] = new Dice(); } BiasedDices = new BiasedDice[6]; Score = new Scoreboard(); RoundCounter = 0; }
private void Cheat(string userInputString, int rollCount) {//Gør en dice til en dynamisk type af biasedDice try { string[] inputSplit = userInputString.Split(" "); int diceIndex = Convert.ToInt32(inputSplit[1]); int biasedPercent = Convert.ToInt32(inputSplit[2]); Biased biasedState = Biased.Positive; //skal declare den til en value, ellers brokker den sig if (inputSplit[3] == "positive") { biasedState = Biased.Positive; } else if (inputSplit[3] == "negative") { biasedState = Biased.Negative; } else { Console.WriteLine("Ikke en gyldig mulighed. Prøv igen.\nEksempel input: 'snyd 1 100 positive' betyder 'første terning skal snyde positivt 100 % af gangene'"); UserActions(rollCount); return; } if (BiasedDices[diceIndex - 1] == null) //hvis det ikke er en snydeterning i forvejen { BiasedDices[diceIndex - 1] = new BiasedDice(biasedPercent, biasedState); Dices[diceIndex - 1] = BiasedDices[diceIndex - 1]; //dynamisk type Console.WriteLine($"Terning nummer {diceIndex} er nu en {biasedState} biased dice, og snyder {biasedPercent}% af gangene."); } else //hvis det ER en snydeterning i forvejen { BiasedDices[diceIndex - 1].BiasedPercent = biasedPercent; BiasedDices[diceIndex - 1].BiasedState = biasedState; Console.WriteLine($"Terning nummer {diceIndex} er ændret til at være {biasedState} biased {biasedPercent}% af gangene."); } UserActions(rollCount); } catch (Exception) { Console.WriteLine("Ikke en gyldig mulighed. Prøv igen.\nEksempel input: 'snyd 1 100 positive' betyder 'første terning skal snyde positivt 100 % af gangene'"); UserActions(rollCount); } }