/// <summary> /// metoda,ki za skakača izračuna vsa njegova delovanja /// </summary> /// <param name="fig">Object: objekt Figura,ki predstavlja skakača</param> /// <returns>list: seznam vseh potez skakača</returns> public List<int[]> Skakac(Figura fig) { List<int[]> vsePot = new List<int[]>(); //generiramo tabelo tabel,vseh novih koordinat skakača int[][] tockaSkak = new int[8][]; int[] T1 = new int[2]; T1[0] = fig.x + 2; T1[1] = fig.y + 1; tockaSkak[0] = T1; int[] T2 = new int[2]; T2[0] = fig.x + 2; T2[1] = fig.y - 1; tockaSkak[1] = T2; int[] T3 = new int[2]; T3[0] = fig.x + 1; T3[1] = fig.y + 2; tockaSkak[2] = T3; int[] T4 = new int[2]; T4[0] = fig.x + 1; T4[1] = fig.y - 2; tockaSkak[3] = T4; int[] T5 = new int[2]; T5[0] = fig.x - 2; T5[1] = fig.y + 1; tockaSkak[4] = T5; int[] T6 = new int[2]; T6[0] = fig.x - 2; T6[1] = fig.y - 1; tockaSkak[5] = T6; int[] T7 = new int[2]; T7[0] = fig.x - 1; T7[1] = fig.y + 2; tockaSkak[6] = T7; int[] T8 = new int[2]; T8[0] = fig.x - 1; T8[1] = fig.y - 2; tockaSkak[7] = T8; //pregledamo vsa nova polja for (int i = 0; i < 8; i++) { //če so na šahovnici... if ((tockaSkak[i][0] < 8) && (tockaSkak[i][0] >= 0) && (tockaSkak[i][1] < 8) && (tockaSkak[i][1] >= 0)) { //če na njih ni lastne figure...jih dodamo if ("" + this.sahovnica[tockaSkak[i][0], tockaSkak[i][1]][0] != fig.barvaFigure()) { vsePot.Add(tockaSkak[i]); } } } return vsePot; }
/// <summary> /// metoda,ki za trdnjavo izračuna vsa njena delovanja /// </summary> /// <param name="fig">Object: objekt Figura,ki predstavlja trdnjavo</param> /// <returns>list: seznam vseh potez trdnjave</returns> public List<int[]> Trdnjava(Figura fig) { List<int[]> vsePot = new List<int[]>(); //4 smeri premikov string[] vseSmeri = new string[4]; vseSmeri[0] = "+0"; vseSmeri[1] = "-0"; vseSmeri[2] = "0+"; vseSmeri[3] = "0-"; //gremo v vsako smer foreach (string smer in vseSmeri) { //se premikamo po 1 for (int i = 1; i < 8; i++) { //tu shranjujemo koordinate novih polj int novX = 42; int novY = 42; //koordinate so odvisne od smeri in pa števila korakov if (smer == "+0") { novX = fig.x + i; novY = fig.y; } if (smer == "-0") { novX = fig.x - i; novY = fig.y; } if (smer == "0+") { novX = fig.x; novY = fig.y + i; } if (smer == "0-") { novX = fig.x; novY = fig.y - i; } //preverimo nove koordinate,če so na šahovnici if (novX >= 0 && novX < 8 && novY >= 0 && novY < 8) { //tvorimo tabelo iz novih koordinat int[] potLov = new int[2]; potLov[0] = novX; potLov[1] = novY; //če je novo polje prazno,je premik možen in nadaljujemo v tej smeri if (this.sahovnica[novX, novY] == ".") { vsePot.Add(potLov); } //če je na polju nasprotnikova figura je premik možen,nadaljne poteze v tej smeri niso možne if ((this.sahovnica[novX, novY] != ".") && ("" + sahovnica[novX, novY][0] != fig.barvaFigure())) { vsePot.Add(potLov); break; } //če je na polju lastna figura,premik ni možen in prenehamo s premikanjem v tej smeri if ("" + this.sahovnica[novX, novY][0] == fig.barvaFigure()) { break; } } } } return vsePot; }
/// <summary> /// metoda,ki za kmeta izračuna vsa njegova delovanja(brez EP) /// </summary> /// <param name="fig">Object: objekt Figura,ki predstavlja kmeta</param> /// <returns>list: seznam vseh potez kmeta</returns> public List<int[]> Kmet(Figura fig) { List<int[]> vsePot = new List<int[]>(); //definiramo jemanja int[] J1 = new int[2]; int[] J2 = new int[2]; //...beli if (fig.barvaFigure() == "b") { //dva mozna premika int[] T1 = new int[2]; T1[0] = fig.x + 1; T1[1] = fig.y; int[] T2 = new int[2]; T2[0] = fig.x + 2; T2[1] = fig.y; //dve jemanji J1[0] = fig.x + 1; J1[1] = fig.y + 1; J2[0] = fig.x + 1; J2[1] = fig.y - 1; //ce je pred njim prazno polje ga dodamo... if (this.sahovnica[T1[0], T1[1]][0] == '.') { vsePot.Add(T1); //...ce obe polji pred njim prazni in je na zacetku dodamo se drug premik if (fig.x < 6 && this.sahovnica[T2[0], T2[1]][0] == '.' && fig.x == 1) { vsePot.Add(T2); } } } //...crni if (fig.barvaFigure() == "c") { //dva mozna premika int[] T1 = new int[2]; T1[0] = fig.x - 1; T1[1] = fig.y; int[] T2 = new int[2]; T2[0] = fig.x - 2; T2[1] = fig.y; //dve jemanji J1[0] = fig.x - 1; J1[1] = fig.y + 1; J2[0] = fig.x - 1; J2[1] = fig.y - 1; //ce je pred njim prazno polje ga dodamo... if (this.sahovnica[T1[0], T1[1]][0] == '.') { vsePot.Add(T1); //...ce obe polji pred njim prazni in je na zacetku dodamo se drug premik if ((fig.x > 1 && this.sahovnica[T2[0], T2[1]][0] == '.') && (fig.x == 6)) { vsePot.Add(T2); } } } //preverimo še jemanja... int[][] vsaJem = new int[2][]; vsaJem[0] = J1; vsaJem[1] = J2; foreach (int[] jem in vsaJem) { //...ce so znotraj sahovnice if ((jem[1] < 8) && (jem[1] >= 0)) { //...in polje ni prazno ali zasedeno z lastno figuro...dodamo if ((this.sahovnica[jem[0], jem[1]][0] != '.') && ("" + this.sahovnica[jem[0], jem[1]][0] != fig.barvaFigure())) { vsePot.Add(jem); } } } return vsePot; }