/// <summary>
        /// EvalGame bestimmt, ob Player1 oder Player2 gewonnen hat. Falls
        /// </summary>
        /// <param name="player1Selection">Wahl des Player1</param>
        /// <param name="player2Selection">Wahl des Player2</param>
        /// <returns>Gewinner des Spiels:
        /// - 1 falls Player1 gewonnen hat
        /// - 2 falls Player2 gewonnen hat
        /// - 0 im Fall eines Unentschieden</returns>
        public static int EvalGame(ESchereSteinPapier player1Selection, ESchereSteinPapier player2Selection)
        {
            if (player2Selection == player1Selection)
            {
                return(0);
            }
            else
            {
                switch (player1Selection)
                {
                case ESchereSteinPapier.Papier:
                    if (player2Selection == ESchereSteinPapier.Stein)
                    {
                        return(1);
                    }
                    break;

                case ESchereSteinPapier.Schere:
                    if (player2Selection == ESchereSteinPapier.Papier)
                    {
                        return(1);
                    }
                    break;

                case ESchereSteinPapier.Stein:
                    if (player2Selection == ESchereSteinPapier.Schere)
                    {
                        return(1);
                    }
                    break;
                }
                return(2);
            }
        }
예제 #2
0
        public ESchereSteinPapier SchereSteinPapier(int nrOfInvocations, ESchereSteinPapier ownSelection, ESchereSteinPapier adversarialSelection)
        {
            var attempt = nrOfInvocations + 1;

            /// add your own code here
            if (!_playStrategies.TryGetValue(Name, out Func <int, ESchereSteinPapier, ESchereSteinPapier, ESchereSteinPapier> fun))
            {
                fun = DummyToss;
            }
            var toss = fun(nrOfInvocations, ownSelection, adversarialSelection);

            //Console.WriteLine("{0}. attempt -> {1}", attempt, toss);
            return(toss);
        }
 public ESchereSteinPapier SchereSteinPapier(int nrOfInvocations, ESchereSteinPapier ownSelection, ESchereSteinPapier adversarialSelection)
 {
     return((ESchereSteinPapier)0);
 }
예제 #4
0
 private ESchereSteinPapier RoundRobinToss(int nrOfInvocation, ESchereSteinPapier ownSelection, ESchereSteinPapier adversarialSelection)
 {
     return((ESchereSteinPapier)((int)(ownSelection + 2) % 3));
 }
예제 #5
0
 private ESchereSteinPapier NeuronalNetworkToss(int nrOfInvocation, ESchereSteinPapier ownSelection, ESchereSteinPapier adversarialSelection)
 {
     return(_network.SchereSteinPapier(nrOfInvocation, ownSelection, adversarialSelection));
 }
예제 #6
0
 private ESchereSteinPapier RandomToss(int nrOfInvocations, ESchereSteinPapier ownSelection, ESchereSteinPapier adversarialSelection)
 {
     return((ESchereSteinPapier)(int)(_rand.NextDouble() * 3));
 }
예제 #7
0
 private ESchereSteinPapier DummyToss(int nrOfInvocations, ESchereSteinPapier ownSelection, ESchereSteinPapier adversarialSelection)
 {
     return(ESchereSteinPapier.Papier);
 }