Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private int alfa_beta(int[,] polje1, int globina, int alfa, int beta, int igralec)
- {
- int ocena = 0;
- igralec = dobiBarvo(potez);
- //MessageBox.Show(igralec.ToString());
- if (globina == 0)
- {
- //MessageBox.Show("GLOBINA JE 0 Rezultat je: " + ocena.ToString() + " poteza: " + potez.ToString());
- return ocena = dobi_rezultat(polje1, igralec);
- }
- if (igralec == 1)
- {
- List<Point> prazna_polja = new List<Point>();
- int st1 = 0;
- for (int x = 0; x < velikost_igralne_povrsine-1; x++)
- {
- for (int y = 0; y < velikost_igralne_povrsine; y++)
- {
- if (preveriProsto(x, y, polje1) == true)
- {
- if (preveriSosede(x, y, polje1) > 0)
- {
- if (preveri_pozicijo(x, y) == true)
- {
- prazna_polja.Add(new Point(x, y));
- st1++;
- }
- }
- else if (preveriSosede(x, y, polje1) == 0)
- {
- if (preveriProsto(x, y, polje1) == true)
- {
- prazna_polja.Add(new Point(x, y));
- st1++;
- }
- }
- else if (preveriSosede(x, y, polje1) == -1)
- {
- if (preveriProsto(x, y, polje1) == true)
- {
- prazna_polja.Add(new Point(x, y));
- st1++;
- }
- }
- if (preveriSosede(zadnjaI, zadnjaJ, polje) == -1)
- {
- if (preveriProsto(x, y, polje1) == true)
- {
- prazna_polja.Add(new Point(x, y));
- st1++;
- }
- }
- }
- }
- }
- //MessageBox.Show(prazna_polja.Count.ToString());
- for (int x = 0; x < prazna_polja.Count; x++)
- {
- int[,] simulacija = new int[velikost_igralne_povrsine, velikost_igralne_povrsine];
- for (int z = 0; z < velikost_igralne_povrsine; z++)
- {
- for (int w = 0; w < velikost_igralne_povrsine; w++)
- {
- simulacija[z, w] = polje[z, w];
- }
- }
- MessageBox.Show(prazna_polja[x].ToString());
- simulacija[prazna_polja[x].X, prazna_polja[x].Y] = 1;
- potez++;
- int rezultat = alfa_beta(simulacija, globina - 1, alfa, beta, 1);
- if (rezultat > alfa)
- {
- //MessageBox.Show("Rezultat: " + rezultat.ToString() + " alfa: " + alfa.ToString());
- alfa = rezultat;
- if (maxGlobina == globina) najboljsa_poteza = new Point(prazna_polja[x].X, prazna_polja[x].Y);
- //MessageBox.Show("Najboljša poteza: " + najboljsa_poteza.ToString() + " Ocena: " + ocena.ToString());
- }
- if (alfa >= beta) return alfa;
- }
- return alfa;
- }
- else
- {
- List<Point> prazna_polja = new List<Point>();
- int st = 0;
- for (int x = 0; x < velikost_igralne_povrsine; x++)
- {
- for (int y = 0; y < velikost_igralne_povrsine; y++)
- {
- if (preveriProsto(x, y, polje) == true)
- {
- if (preveriSosede(x, y, polje1) > 0)
- {
- if (preveri_pozicijo(x, y) == true)
- {
- prazna_polja.Add(new Point(x, y));
- st++;
- }
- }
- else if (preveriSosede(x, y, polje1) == 0)
- {
- if (preveriProsto(x, y, polje1) == true)
- {
- prazna_polja.Add(new Point(x, y));
- st++;
- }
- }
- else if (preveriSosede(x, y, polje1) == -1)
- {
- if (preveriProsto(x, y, polje1) == true)
- {
- prazna_polja.Add(new Point(x, y));
- st++;
- }
- }
- if (preveriSosede(zadnjaI, zadnjaJ, polje) == -1)
- {
- if (preveriProsto(x, y, polje1) == true)
- {
- prazna_polja.Add(new Point(x, y));
- st++;
- }
- }
- }
- }
- }
- //MessageBox.Show(st.ToString());
- for (int x = 0; x < prazna_polja.Count; x++)
- {
- int[,] simulacija = new int[velikost_igralne_povrsine, velikost_igralne_povrsine];
- for (int z = 0; z < velikost_igralne_povrsine; z++)
- {
- for (int w = 0; w < velikost_igralne_povrsine; w++)
- {
- simulacija[z, w] = polje1[z, w];
- }
- }
- //MessageBox.Show(igralec.ToString());
- simulacija[prazna_polja[x].X, prazna_polja[x].Y] = 2;
- potez++;
- int rezultat = alfa_beta(simulacija, globina - 1, alfa, beta, 2);
- if (rezultat < beta) beta = rezultat;
- if (alfa >= beta) return beta;
- }
- return beta;
- }
- }
Add Comment
Please, Sign In to add comment