/// <summary> /// metoda,ki naredi premik ene figure na šahovnici s tem da ustvari nov objekt Sahovnica /// </summary> /// <param name="x">int: vrsta novega polja figure</param> /// <param name="y">int: stolpec novega polja figure</param> /// <param name="f">Object: objekt Figura,katero želimo premakniti</param> /// <returns>Object: objekt Sahovnica,ki predstavlja novo sahovnico</returns> public Sahovnica Premik(int novX, int novY, Figura f) { //novi sahovnici najprej naredimo ustrezno pozicijo string[,] novaSahovnica = (string[,])this.sahovnica.Clone(); novaSahovnica[f.x, f.y] = "."; novaSahovnica[novX, novY] = f.IzpisFigure(); //preverimo ali bo še možno narediti rokade bool novaMozMalRokBeli = this.moznaMalaRokadaBeli; bool novaMozMalRokCrni = this.moznaMalaRokadaCrni; bool novaMozVelRokBeli = this.moznaVelikaRokadaBeli; bool novaMozVelRokCrni = this.moznaVelikaRokadaCrni; int novPravilo50 = this.pravilo50+1; List<int[]> noviMozniEP = new List<int[]>(); //če je prislo do jemanja ali se premakne kmet...zacnemo pravilo50 steti od zacetka if (f.ImeFigure() == "P" || this.sahovnica[novX, novY] != ".") novPravilo50 = 0; //pogledamo če bodo v naslednji potezi mozni EP if (f.ImeFigure() == "P") { if (this.kdo == "b") { if (f.x == 1 && novX == 3) { if (f.y < 7 && f.y > 0) { if (this.sahovnica[3, f.y - 1] == "cP") { noviMozniEP.Add(new int[2] { f.y - 1, f.y }); } if (this.sahovnica[3, f.y + 1] == "cP") noviMozniEP.Add(new int[2] { f.y + 1, f.y }); } else if (f.y == 7 && this.sahovnica[3, f.y - 1] == "cP") noviMozniEP.Add(new int[2] { f.y - 1, f.y }); else if (f.y == 0 && this.sahovnica[3, f.y + 1] == "cP") noviMozniEP.Add(new int[2] { f.y + 1, f.y }); } } if (this.kdo == "c") { if (f.x == 6 && novX == 4) { if (f.y < 7 && f.y > 0) { if (this.sahovnica[4, f.y - 1] == "bP") noviMozniEP.Add(new int[2] { f.y - 1, f.y }); if (this.sahovnica[4, f.y + 1] == "bP") noviMozniEP.Add(new int[2] { f.y + 1, f.y }); } else if (f.y == 7 && this.sahovnica[4, f.y - 1] == "bP") noviMozniEP.Add(new int[2] { f.y - 1, f.y }); else if (f.y == 0 && this.sahovnica[4, f.y + 1] == "bP") noviMozniEP.Add(new int[2] { f.y + 1, f.y }); } } } if (noviMozniEP.Count() == 0) noviMozniEP = null; //če beli premakne katero od trdnjav ali kralja if (f.x == 0) { if (f.y == 0) novaMozVelRokBeli = false; else if (f.y == 7) novaMozMalRokBeli = false; else if (f.y == 4) { novaMozMalRokBeli = false; novaMozVelRokBeli = false; } } //če črni premakne katero od trdnjav ali kralja else if (f.x == 7) { if (f.y == 0) novaMozVelRokCrni = false; else if (f.y == 7) novaMozMalRokCrni = false; else if (f.y == 4) { novaMozMalRokCrni = false; novaMozVelRokCrni = false; } } //če je bil izveden premik na katero od mest trdnjav ali kralja if (novX == 0) { if (novY == 0) novaMozVelRokBeli = false; else if (novY == 7) novaMozMalRokBeli = false; else if (novY == 4) { novaMozMalRokBeli = false; novaMozVelRokBeli = false; } } else if (novX == 7) { if (novY == 0) novaMozVelRokCrni = false; else if (novY == 7) novaMozMalRokCrni = false; else if (novY == 4) { novaMozMalRokCrni = false; novaMozVelRokCrni = false; } } //nato ustvarimo nov objekt Sahovnica z novimi parametri Sahovnica sah = new Sahovnica(novaSahovnica, this.kdo, novaMozMalRokBeli, novaMozMalRokCrni, novaMozVelRokBeli, novaMozVelRokCrni, noviMozniEP, novPravilo50,this.kateraPoteza+1); return sah; }
/// <summary> /// metoda,ki za vsako figuro pokliče ustrezno metodo glede na to kakšne vrste figura je /// </summary> /// <param name="fig">Object: objekt figura</param> /// <returns>List: seznam vseh potez te figure</returns> public List<int[]> VsePotezeFigura(Figura fig) { //seznam kjer bomo shranili mozne premike List<int[]> vsePot = new List<int[]>(); //kmet... if (fig.ImeFigure() == "P") { vsePot = Kmet(fig); } //skakač else if (fig.ImeFigure() == "S") { vsePot = Skakac(fig); } //lovec else if (fig.ImeFigure() == "L") { vsePot = Lovec(fig); } //trdnjava else if (fig.ImeFigure() == "T") { vsePot = Trdnjava(fig); } //dama else if (fig.ImeFigure() == "D") { vsePot = Dama(fig); } //kralj else if (fig.ImeFigure() == "K") { vsePot = Kralj(fig); } return vsePot; }