Pogledajte ovaj Minmax algoritam.
Da li neko vidi je i u redu?
Kod:
public static double MinMaxAB(int[][] stanje,int igr,double A,double B,int deep){
boolean dobro;
double kolicnikDubine=3*deep;
if (fullMat(stanje)&&(deep==1)){ //izlazak- PUNA tabela
return -1;
}else if (deep==dubina){ //izlazak -DUBOKO
return (HeuristicFunction(stanje,igr)-10*kolicnikDubine);
}
else{
if (igr==first){ //prvi igrac-Maximizer
for (int kolona=0;kolona<number_of_columns;kolona++){
if(!full(stanje,kolona)){ //ako ima mjesta u koloni
dobro=set(stanje,kolona,first); //stavimo kuglicu na tabelu
double score=MinMaxAB(stanje,second,A,B,deep+1);
//naci vrednovanje tako nastalog stanja
dobro=remove(stanje,kolona,first); //skinuti kuglicu sa tabele
igr=first; //vratiti igraca
if (score>A){A=score;} //nasao bolji potez
if (A>B){return A;} //odsjecanje
}
}
return A;//nas najbolji potez
}
else { //drugi igrac-Minimizer
for (int kolona=0;kolona<number_of_columns;kolona++){
if(!full(stanje,kolona)){
dobro=set(stanje,kolona,second);
double score=MinMaxAB(stanje,first,A,B,deep+1);
dobro=remove(stanje,kolona,second);
igr=second;
if (score<B){B=score;} //nasao bolji potez
if (A>B){return A;} //odsjecanje
}
}
return B; //protivnikov najbolji potez
}
}
}//MinMaxAB