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)); }
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); }
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); }