private void button9_Click(object sender, EventArgs e) { if (turn == 1) { gamePolje[2, 2] = 1; colorBoard(); if (!gameOver(gamePolje)) { algM temp = minmaks(gamePolje, 2, diff); gamePolje = DeepCopy(temp.poteza); } else { turn = 0; } colorBoard(); } }
public algM minmaks(int[,] polje, int poteza, int d) { algM bestcase = new algM(); if (gameOver(polje) || d == 0) { algM temp = new algM(hevOcena(polje), null); return(temp); } int ocena; if (poteza == 1) //MAX { ocena = -1000; } else {//MIN ocena = 1000; } algM retVal = new algM(); //bestcase.poteza = DeepCopy(polje); //bestcase.poteza = polje; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (polje[i, j] == 0) { bestcase.poteza = DeepCopy(polje); //gre do prve 0, to 0 nastavi na stevilko igralca bestcase.poteza[i, j] = DeepCopy(poteza); if (poteza == 1) { poteza = 2; } else { poteza = 1; } algM temp2 = minmaks(bestcase.poteza, poteza, d - 1); if (poteza == 1) { poteza = 2; } else { poteza = 1; } if ((poteza == 1 && temp2.ocena > ocena) || (poteza == 2 && temp2.ocena < ocena)) { ocena = temp2.ocena; retVal.ocena = temp2.ocena; retVal.poteza = DeepCopy(bestcase.poteza); } } } } //retVal.ocena = ocena; return(retVal); }