Exemple #1
0
        private int ScoreFromFieldScoreStates(FieldScoreState state1, FieldScoreState state2, FieldScoreState state3)
        {
            if (state1 == FieldScoreState.Draw || state2 == FieldScoreState.Draw || state3 == FieldScoreState.Draw)
            {
                return(0);
            }

            return(ScoreFromFieldScoreState(state1) + ScoreFromFieldScoreState(state2) + ScoreFromFieldScoreState(state3));
        }
Exemple #2
0
        private int ReverseFieldScoreState(FieldScoreState squareState)
        {
            if (squareState == FieldScoreState.Empty)
            {
                return((int)FieldScoreState.Empty);
            }
            if (squareState == FieldScoreState.Draw)
            {
                return((int)FieldScoreState.Draw);
            }

            if (squareState == FieldScoreState.X5)
            {
                return((int)FieldScoreState.O5);
            }
            if (squareState == FieldScoreState.X4)
            {
                return((int)FieldScoreState.O4);
            }
            if (squareState == FieldScoreState.X3)
            {
                return((int)FieldScoreState.O3);
            }
            if (squareState == FieldScoreState.X2)
            {
                return((int)FieldScoreState.O2);
            }
            if (squareState == FieldScoreState.X1)
            {
                return((int)FieldScoreState.O1);
            }


            if (squareState == FieldScoreState.O5)
            {
                return((int)FieldScoreState.X5);
            }
            if (squareState == FieldScoreState.O4)
            {
                return((int)FieldScoreState.X4);
            }
            if (squareState == FieldScoreState.O3)
            {
                return((int)FieldScoreState.X3);
            }
            if (squareState == FieldScoreState.O2)
            {
                return((int)FieldScoreState.X2);
            }
            if (squareState == FieldScoreState.O1)
            {
                return((int)FieldScoreState.X1);
            }

            return((int)FieldScoreState.Empty);
        }
Exemple #3
0
 private int ScoreFromFieldScoreState(FieldScoreState state)
 {
     if (state == FieldScoreState.X5)
     {
         return(300);
     }
     if (state == FieldScoreState.X4)
     {
         return(200);
     }
     if (state == FieldScoreState.X3)
     {
         return(100);
     }
     if (state == FieldScoreState.X2)
     {
         return(50);
     }
     if (state == FieldScoreState.X1)
     {
         return(25);
     }
     if (state == FieldScoreState.Empty)
     {
         return(0);
     }
     if (state == FieldScoreState.O1)
     {
         return(-25);
     }
     if (state == FieldScoreState.O2)
     {
         return(-50);
     }
     if (state == FieldScoreState.O3)
     {
         return(-100);
     }
     if (state == FieldScoreState.O4)
     {
         return(-200);
     }
     if (state == FieldScoreState.O5)
     {
         return(-300);
     }
     return(0);
 }
        private int EvaluateSuperFieldScore(SuperField superField, int[][] fieldScore, Bot bot)
        {
            if (superField.Winner == FieldState.Draw)
            {
                return(0);
            }
            if (superField.Winner == FieldState.O)
            {
                return(bot.winnerReversed ? 8000 : -8000);
            }
            if (superField.Winner == FieldState.X)
            {
                return(bot.winnerReversed ? -8000 : 8000);
            }
            var score = 0;

            FieldScoreState[][] fieldScoreStates = new FieldScoreState[][]
            {
                new FieldScoreState[3],
                new FieldScoreState[3],
                new FieldScoreState[3],
            };

            for (int y = 0; y < 3; y++)
            {
                for (int x = 0; x < 3; x++)
                {
                    fieldScoreStates[y][x] = FieldScoreStateFromfield(superField.Fields[y][x], fieldScore[y][x], bot);
                }
            }

            score += bot.superFieldRowsEdge[(int)fieldScoreStates[0][0], (int)fieldScoreStates[0][1], (int)fieldScoreStates[0][2]];
            score += bot.superFieldRowsMiddle[(int)fieldScoreStates[1][0], (int)fieldScoreStates[1][1], (int)fieldScoreStates[1][2]];
            score += bot.superFieldRowsEdge[(int)fieldScoreStates[2][0], (int)fieldScoreStates[2][1], (int)fieldScoreStates[2][2]];

            score += bot.superFieldRowsEdge[(int)fieldScoreStates[0][0], (int)fieldScoreStates[1][0], (int)fieldScoreStates[2][0]];
            score += bot.superFieldRowsMiddle[(int)fieldScoreStates[0][1], (int)fieldScoreStates[1][1], (int)fieldScoreStates[2][1]];
            score += bot.superFieldRowsEdge[(int)fieldScoreStates[0][2], (int)fieldScoreStates[1][2], (int)fieldScoreStates[2][2]];

            score += bot.superFieldRowsDiagonal[(int)fieldScoreStates[0][0], (int)fieldScoreStates[1][1], (int)fieldScoreStates[2][2]];
            score += bot.superFieldRowsDiagonal[(int)fieldScoreStates[2][0], (int)fieldScoreStates[1][1], (int)fieldScoreStates[0][2]];

            return(score);
        }