public Figura OdigrajPotez(Figura figura, Pozicija pozicija, Ploca ploca) { if (!DobraFigura(figura)) { throw new Exception("Kriva figura."); } return(figura.PostaviPoziciju(pozicija, ploca)); }
private void PozicijaPromijenjena(object sender, EventArgs e) { PozicijaEventArgs pea = e as PozicijaEventArgs; Ploca ploca = pea.Ploca; Figura figura = sender as Figura; Pozicija pozicija = pea.Pozicija; ploca.AzurirajStanje(figura, pozicija); }
public void PozicijaSeMijenja(object sender, EventArgs eventArgs) { Figura figura = (Figura)sender; PozicijaEventArgs pea = eventArgs as PozicijaEventArgs; if (figura.Pozicija != null) { figura.LegalanPotez(pea.Pozicija, pea.Ploca); } }
public static Kralj VratiKraljaSaPloce(Figura figura, Ploca ploca) { Kralj kralj = null; if (figura.Boja == Boja.Bijeli) { kralj = new Kralj(Boja.Bijeli); } else { kralj = new Kralj(Boja.Crni); } return(ploca.VratiFiguruIstogTipaBoje(kralj) as Kralj); }
internal void AzurirajStanje(Figura figura, Pozicija novaPozicija) { var staraPozicija = figura.Pozicija; pozicijaFigura[staraPozicija] = null; stanje[figura.Pozicija.Horizontalno, figura.Pozicija.Vertikalno] = null; string kljuc = PoljeZaKolonu(figura.Pozicija.Vertikalno) + (figura.Pozicija.Horizontalno + 1); var fig = dict[kljuc]; dict[kljuc] = null; figura.Pozicija = novaPozicija; pozicijaFigura[novaPozicija] = figura; kljuc = PoljeZaKolonu(novaPozicija.Vertikalno) + novaPozicija.Horizontalno; dict[kljuc] = figura; stanje[novaPozicija.Horizontalno, novaPozicija.Vertikalno] = figura; }
public void IspisiPlocu() { //Console.SetWindowSize(600, 400); for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (stanje[i, j] == null) { Console.Write("----"); } else { Figura figura = stanje[i, j]; Console.Write(figura.ToString(figura.Pozicija)); } Console.Write(" | "); } Console.WriteLine(); Console.Write("--------------------------------------------------------------------"); Console.WriteLine(); } }
public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca) { base.LegalanPotez(novaPozicija, ploca); Figura figura = null; if (this.Pozicija.Horizontalno != novaPozicija.Horizontalno && this.Pozicija.Vertikalno != novaPozicija.Vertikalno) { throw new IllegalMoveException("Illegal move", true); } if (this.Pozicija.Vertikalno < novaPozicija.Vertikalno) { for (int i = this.Pozicija.Vertikalno + 1; i <= novaPozicija.Vertikalno; i++) { figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(novaPozicija.Horizontalno).PostaviVertikalno(i)); if (figura != null && figura.Boja == this.Boja) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } else if (figura != null && figura.Pozicija.Vertikalno < novaPozicija.Vertikalno) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } } if (this.Pozicija.Vertikalno > novaPozicija.Vertikalno) { for (int i = this.Pozicija.Vertikalno - 1; i >= novaPozicija.Vertikalno; i--) { figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(novaPozicija.Horizontalno).PostaviVertikalno(i)); if (figura != null && figura.Boja == this.Boja) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } else if (figura != null && figura.Pozicija.Horizontalno < novaPozicija.Horizontalno) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } } if (this.Pozicija.Horizontalno < novaPozicija.Horizontalno) { for (int i = this.Pozicija.Horizontalno + 1; i <= novaPozicija.Horizontalno; i++) { figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(i).PostaviVertikalno(novaPozicija.Vertikalno)); if (figura != null && figura.Boja == this.Boja) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } else if (figura != null && figura.Pozicija.Horizontalno < novaPozicija.Horizontalno) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } } if (this.Pozicija.Horizontalno > novaPozicija.Horizontalno) { for (int i = this.Pozicija.Horizontalno - 1; i >= novaPozicija.Horizontalno; i--) { figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(i).PostaviVertikalno(novaPozicija.Vertikalno)); if (figura != null && figura.Boja == this.Boja) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } else if (figura != null && figura.Pozicija.Horizontalno < novaPozicija.Horizontalno) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } } var kralj = Kralj.VratiKraljaSaPloce(this, ploca); return(true); }
public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca) { base.LegalanPotez(novaPozicija, ploca); int horizontalno = Math.Abs(this.Pozicija.Horizontalno - novaPozicija.Horizontalno); int vertikalno = Math.Abs(this.Pozicija.Vertikalno - novaPozicija.Vertikalno); if (horizontalno != vertikalno) { throw new IllegalMoveException("Illegal move", true); } Figura figura = null; if (this.Pozicija.Horizontalno > novaPozicija.Horizontalno) { int ver = this.Pozicija.Vertikalno; for (int i = this.Pozicija.Horizontalno; i > novaPozicija.Horizontalno; i--) { int hor = i - 1; if (this.Pozicija.Vertikalno > novaPozicija.Vertikalno) { figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(hor).PostaviVertikalno(--ver)); if (figura != null) { if (hor == novaPozicija.Horizontalno && ver == novaPozicija.Vertikalno) { if (this.Boja == figura.Boja) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } else { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } } else { figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(hor).PostaviVertikalno(++ver)); if (figura != null) { if (hor == novaPozicija.Horizontalno && ver == novaPozicija.Vertikalno) { if (this.Boja == figura.Boja) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } else { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } } } } else { int ver = this.Pozicija.Vertikalno; for (int i = this.Pozicija.Horizontalno; i < novaPozicija.Horizontalno; i++) { int hor = i + 1; if (this.Pozicija.Vertikalno > novaPozicija.Vertikalno) { //ver = this.Pozicija.Vertikalno - i; figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(hor).PostaviVertikalno(--ver)); if (figura != null) { if (hor == novaPozicija.Horizontalno && ver == novaPozicija.Vertikalno) { if (this.Boja == figura.Boja) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } else { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } } else { figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(hor).PostaviVertikalno(++ver)); if (figura != null) { if (hor == novaPozicija.Horizontalno && ver == novaPozicija.Vertikalno) { if (this.Boja == figura.Boja) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } else { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } } } } } return(true); }
public Figura VratiFiguruIstogTipaBoje(Figura figura) { return(hashFigura.Where(x => x.Boja == figura.Boja && x.GetType() == figura.GetType()).FirstOrDefault()); }
public bool DobraFigura(Figura figura) { return(this.Boja == figura.Boja); }