Esempio n. 1
0
        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}");
            }
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
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);
            }
        }