private void ZkusNajitPrimeVitezneRadyPoli(TransformaceDesky transformace)
 {
     int rada=1;
     for(int y=0;y<HraciPlocha.VelikostPlochy;y++)
         for(int x=0;x<HraciPlocha.VelikostPlochy;x++)
         {
             if (HraciPoleZarazka(x,y,transformace)==BarvaKamene.Cerny && HraciPoleZarazka(x-1,y,transformace) == BarvaKamene.Cerny)
                 rada++;
             else if(HraciPoleZarazka(x,y,transformace)==BarvaKamene.Bily && HraciPoleZarazka(x-1,y,transformace) == BarvaKamene.Bily)
                 rada++;
             else if(HraciPoleZarazka(x,y,transformace)==BarvaKamene.Cerny && HraciPoleZarazka(x-1,y,transformace) != BarvaKamene.Cerny)
                 rada=1;
             else if(HraciPoleZarazka(x,y,transformace)==BarvaKamene.Bily && HraciPoleZarazka(x-1,y,transformace) != BarvaKamene.Bily)
                 rada=1;
             else
                 rada=0;
             if(rada==HraciPlocha.PocetVRadeKVitezstvi)	// vítìzná n-tice nalezena
             {
                 viteznaRadaPoli = new SouradnicePole[HraciPlocha.PocetVRadeKVitezstvi];
                 for(int i=x-HraciPlocha.PocetVRadeKVitezstvi+1;i<=x;i++)
                     if(transformace==TransformaceDesky.zadna)
                         viteznaRadaPoli[i-(x-HraciPlocha.PocetVRadeKVitezstvi+1)] = new SouradnicePole(i,y);
                     else	//TransformaceDesky.symetrie
                         viteznaRadaPoli[i-(x-HraciPlocha.PocetVRadeKVitezstvi+1)] = new SouradnicePole(y,i);
                 return;
             }
         }
 }
 private void ZkusNajitSikmeVitezneRadyPoli(TransformaceDesky transformace)
 {
     int rada=1;
     for(int diagonala=-HraciPlocha.VelikostPlochy+1;diagonala<=HraciPlocha.VelikostPlochy-1;diagonala++)
         for(int x=0;x<HraciPlocha.VelikostPlochy;x++)
         {
             if		(HraciPoleZarazka(x+diagonala,x,transformace)==BarvaKamene.Cerny && HraciPoleZarazka(x+diagonala-1,x-1,transformace) == BarvaKamene.Cerny)
                 rada++;
             else if (HraciPoleZarazka(x+diagonala,x,transformace)==BarvaKamene.Bily && HraciPoleZarazka(x+diagonala-1,x-1,transformace) == BarvaKamene.Bily)
                 rada++;
             else if (HraciPoleZarazka(x+diagonala,x,transformace)==BarvaKamene.Cerny && HraciPoleZarazka(x+diagonala-1,x-1,transformace) != BarvaKamene.Cerny)
                 rada = 1;
             else if (HraciPoleZarazka(x+diagonala,x,transformace)==BarvaKamene.Bily && HraciPoleZarazka(x+diagonala-1,x-1,transformace) != BarvaKamene.Bily)
                 rada = 1;
             else rada = 0;
             if(rada==HraciPlocha.PocetVRadeKVitezstvi)
             {
                 viteznaRadaPoli = new SouradnicePole[HraciPlocha.PocetVRadeKVitezstvi];
                 for(int i=x-HraciPlocha.PocetVRadeKVitezstvi+1;i<=x;i++)
                     if(transformace == TransformaceDesky.zadna)
                         viteznaRadaPoli[i-(x-HraciPlocha.PocetVRadeKVitezstvi+1)] = new SouradnicePole(i+diagonala,i);
                     else			// TransformaceDesky.rotace
                         viteznaRadaPoli[i-(x-HraciPlocha.PocetVRadeKVitezstvi+1)] = new SouradnicePole(VelikostPlochy-1-i,i+diagonala);
                 return;
             }
         }
 }
        private BarvaKamene HraciPoleZarazka(int radek, int sloupec, TransformaceDesky transformace)
        {
            int x=-1,y=-1;
            if	    (transformace== TransformaceDesky.zadna)
            {
                x=radek;y=sloupec;
            }
            else if (transformace == TransformaceDesky.symetrie)
            {
                x = sloupec; y=radek;
            }
            else if (transformace == TransformaceDesky.rotace)
            {
                x= (VelikostPlochy-1)-sloupec; y=radek;
            }

            if ((x>=0) && (x<HraciPlocha.VelikostPlochy) && (y>=0) && (y<HraciPlocha.VelikostPlochy))
                return hraciPole[x,y];
            else
                return BarvaKamene.Zadny;
        }