예제 #1
0
        int Załaduj(T Mapa, int i, RuchE R)
        {
            int X, Y, Z;

            if (Przeszukajaj(Mapa, out X, out Y, out Z, i, R))
            {
                return(Z);
            }
            if (!TrwanieGry(Mapa))
            {
                int m = OcanaPlanszy(Mapa);
                ListaOcenaPlańszy[X][Y] = m;
                return(m);
            }
            i--;
            if (i != 0)
            {
                bool b = true;
                int  Max = Przegrana, Min = Wygrana;
                T[]  Los = PobieraniePlansz(Mapa, R);
                foreach (T ID in Los)
                {
                    b = false;
                    int Wspułczynik;
                    if (R == RuchE.Gracz)
                    {
                        Wspułczynik = Załaduj(ID, i, RuchE.Komputer);
                        if (Wspułczynik < Min)
                        {
                            Min = Wspułczynik;
                        }
                        if (Min == Przegrana)
                        {
                            ListaOcenaPlańszy[X][Y] = Min;
                            return(Min);
                        }
                    }
                    else
                    {
                        Wspułczynik = Załaduj(ID, i, RuchE.Gracz);
                        if (Wspułczynik > Max)
                        {
                            Max = Wspułczynik;
                        }

                        if (Max == Wygrana)
                        {
                            ListaOcenaPlańszy[X][Y] = Max;
                            return(Max);
                        }
                    }
                }

                if (b)
                {
                    int m = OcanaPlanszy(Mapa);;
                    ListaOcenaPlańszy[X][Y] = m;
                    return(m);
                }
                if (R == RuchE.Gracz)
                {
                    ListaOcenaPlańszy[X][Y] = Min;
                    return(Min);
                }
                if (R == RuchE.Komputer)
                {
                    ListaOcenaPlańszy[X][Y] = Max;
                    return(Max);
                }
            }
            else
            {
                int m = OcanaPlanszy(Mapa);;
                ListaOcenaPlańszy[X][Y] = m;
                return(m);
            }
            return(0);
        }
예제 #2
0
 private bool Przeszukajaj(T obiekt, out int X, out int Y, out int IloścPunktów, int Numer, RuchE R)
 {
     IloścPunktów = 0;
     X            = obiekt.NumerTabeli;
     for (Y = 0; Y < ListaRóchów[X].Count; Y++)
     {
         if (ListaRóchów[X][Y] == R && ListaPlansz[X][Y].Porównanie(obiekt))
         {
             if (ListaIlośćRuchów[X][Y] < Numer)
             {
                 ListaIlośćRuchów[X][Y] = Numer;
                 return(false);
             }
             else
             {
                 IloścPunktów = ListaOcenaPlańszy[X][Y];
                 return(true);
             }
         }
     }
     ListaPlansz[X].Add(obiekt);
     ListaOcenaPlańszy[X].Add(0);
     ListaRóchów[X].Add(R);
     ListaIlośćRuchów[X].Add(Numer);
     return(false);
 }
예제 #3
0
 /// <summary>
 /// Metoda Przechowywana w tym delegacje zwraca możlwości nastepne stany aplikacji
 /// </summary>
 /// <param name="Mapa">Bierzocy stan aplikacji</param>
 /// <returns>Stany aplikacje nastepujoce z bierzocego stanu aplikacji</returns>
 protected abstract T[] PobieraniePlansz(T Mapa, RuchE GraczCzyKomputer);