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; }