public static void IzpišiPotezeEneFigure(Figura F, List<int[]> poteze) { string izpis = F.IzpisFigure() + ": "; foreach (int[] poteza in poteze) { izpis += "" + poteza[0] + poteza[1] + " , "; } Console.WriteLine(izpis); }
/// <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; }