Guest User

Untitled

a guest
Jul 20th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.87 KB | None | 0 0
  1. private int alfa_beta(int[,] polje1, int globina, int alfa, int beta, int igralec)
  2.         {
  3.             int ocena = 0;
  4.             igralec = dobiBarvo(potez);
  5.             //MessageBox.Show(igralec.ToString());
  6.  
  7.             if (globina == 0)
  8.             {
  9.                 //MessageBox.Show("GLOBINA JE 0 Rezultat je: " + ocena.ToString() + " poteza: " + potez.ToString());
  10.                 return ocena = dobi_rezultat(polje1, igralec);
  11.                
  12.             }
  13.  
  14.             if (igralec == 1)
  15.             {
  16.                 List<Point> prazna_polja = new List<Point>();
  17.                 int st1 = 0;
  18.                 for (int x = 0; x < velikost_igralne_povrsine-1; x++)
  19.                 {
  20.                     for (int y = 0; y < velikost_igralne_povrsine; y++)
  21.                     {
  22.                         if (preveriProsto(x, y, polje1) == true)
  23.                         {
  24.                             if (preveriSosede(x, y, polje1) > 0)
  25.                             {
  26.                                 if (preveri_pozicijo(x, y) == true)
  27.                                 {
  28.                                     prazna_polja.Add(new Point(x, y));
  29.                                     st1++;
  30.                                 }
  31.                             }
  32.                             else if (preveriSosede(x, y, polje1) == 0)
  33.                             {
  34.                                 if (preveriProsto(x, y, polje1) == true)
  35.                                 {
  36.                                     prazna_polja.Add(new Point(x, y));
  37.                                     st1++;
  38.                                 }
  39.                             }
  40.                             else if (preveriSosede(x, y, polje1) == -1)
  41.                             {
  42.                                 if (preveriProsto(x, y, polje1) == true)
  43.                                 {
  44.                                     prazna_polja.Add(new Point(x, y));
  45.                                     st1++;
  46.                                 }
  47.                             }
  48.                             if (preveriSosede(zadnjaI, zadnjaJ, polje) == -1)
  49.                             {
  50.                                 if (preveriProsto(x, y, polje1) == true)
  51.                                 {
  52.                                     prazna_polja.Add(new Point(x, y));
  53.                                     st1++;
  54.                                 }
  55.                             }
  56.                         }
  57.                     }
  58.                 }
  59.                 //MessageBox.Show(prazna_polja.Count.ToString());
  60.  
  61.                 for (int x = 0; x < prazna_polja.Count; x++)
  62.                 {
  63.                     int[,] simulacija = new int[velikost_igralne_povrsine, velikost_igralne_povrsine];
  64.  
  65.                     for (int z = 0; z < velikost_igralne_povrsine; z++)
  66.                     {
  67.                         for (int w = 0; w < velikost_igralne_povrsine; w++)
  68.                         {
  69.                             simulacija[z, w] = polje[z, w];
  70.                         }
  71.                     }
  72.                     MessageBox.Show(prazna_polja[x].ToString());
  73.                     simulacija[prazna_polja[x].X, prazna_polja[x].Y] = 1;
  74.                     potez++;
  75.                     int rezultat = alfa_beta(simulacija, globina - 1, alfa, beta, 1);
  76.  
  77.                     if (rezultat > alfa)
  78.                     {
  79.                         //MessageBox.Show("Rezultat: " + rezultat.ToString() + " alfa: " + alfa.ToString());
  80.                         alfa = rezultat;
  81.                         if (maxGlobina == globina) najboljsa_poteza = new Point(prazna_polja[x].X, prazna_polja[x].Y);
  82.                         //MessageBox.Show("Najboljša poteza: " + najboljsa_poteza.ToString() + " Ocena: " + ocena.ToString());
  83.                     }
  84.                     if (alfa >= beta) return alfa;
  85.                 }
  86.                 return alfa;
  87.             }
  88.             else
  89.             {
  90.                 List<Point> prazna_polja = new List<Point>();
  91.                 int st = 0;
  92.                 for (int x = 0; x < velikost_igralne_povrsine; x++)
  93.                 {
  94.                     for (int y = 0; y < velikost_igralne_povrsine; y++)
  95.                     {
  96.                         if (preveriProsto(x, y, polje) == true)
  97.                         {
  98.                             if (preveriSosede(x, y, polje1) > 0)
  99.                             {
  100.                                 if (preveri_pozicijo(x, y) == true)
  101.                                 {
  102.                                     prazna_polja.Add(new Point(x, y));
  103.                                     st++;
  104.                                 }
  105.                             }
  106.                             else if (preveriSosede(x, y, polje1) == 0)
  107.                             {
  108.                                 if (preveriProsto(x, y, polje1) == true)
  109.                                 {
  110.                                     prazna_polja.Add(new Point(x, y));
  111.                                     st++;
  112.                                 }
  113.                             }
  114.                             else if (preveriSosede(x, y, polje1) == -1)
  115.                             {
  116.                                 if (preveriProsto(x, y, polje1) == true)
  117.                                 {
  118.                                     prazna_polja.Add(new Point(x, y));
  119.                                     st++;
  120.                                 }
  121.                             }
  122.                             if (preveriSosede(zadnjaI, zadnjaJ, polje) == -1)
  123.                             {
  124.                                 if (preveriProsto(x, y, polje1) == true)
  125.                                 {
  126.                                     prazna_polja.Add(new Point(x, y));
  127.                                     st++;
  128.                                 }
  129.                             }
  130.                         }
  131.                     }
  132.                 }
  133.                 //MessageBox.Show(st.ToString());
  134.  
  135.                 for (int x = 0; x < prazna_polja.Count; x++)
  136.                 {
  137.                     int[,] simulacija = new int[velikost_igralne_povrsine, velikost_igralne_povrsine];
  138.                     for (int z = 0; z < velikost_igralne_povrsine; z++)
  139.                     {
  140.                         for (int w = 0; w < velikost_igralne_povrsine; w++)
  141.                         {
  142.                             simulacija[z, w] = polje1[z, w];
  143.                         }
  144.                     }
  145.                     //MessageBox.Show(igralec.ToString());
  146.                     simulacija[prazna_polja[x].X, prazna_polja[x].Y] = 2;
  147.                     potez++;
  148.                     int rezultat = alfa_beta(simulacija, globina - 1, alfa, beta, 2);
  149.                    
  150.                     if (rezultat < beta) beta = rezultat;
  151.                     if (alfa >= beta) return beta;
  152.                 }
  153.                 return beta;
  154.             }
  155.            
  156.         }
Add Comment
Please, Sign In to add comment