private int minimax(bool flag) { int max_val=-1000,min_val=1000; int i,j,value = 1; if(checkVictory(computer) == 1) { return 10; } else if(checkVictory(human) == 1) { return -10; } else if(isFull()== 1) { return 0; } int[] score = {1,1,1,1,1,1,1,1,1};//if score[i]=1 then it is empty for(i=0;i<9;i++) { if(oriBoard[i] == "*") { if(min_val>max_val) // reverse of pruning condition..... { if(flag == true) { oriBoard[i] = "X"; value = minimax(false); } else { oriBoard[i] = "O"; value = minimax(true); } oriBoard[i] = "*"; score[i] = value; } } } if(flag == true) { max_val = -1000; for(j=0;j<9;j++) { if(score[j] > max_val && score[j] != 1) { max_val = score[j]; bestMove = j; } } return max_val; } if(flag == false) { min_val = 1000; for(j=0;j<9;j++) { if(score[j] < min_val && score[j] != 1) { min_val = score[j]; bestMove = j; } } return min_val; } }