public Figura OdigrajPotez(Figura figura, Pozicija pozicija, Ploca ploca) { if (!DobraFigura(figura)) { throw new Exception("Kriva figura."); } return(figura.PostaviPoziciju(pozicija, ploca)); }
public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca) { base.LegalanPotez(novaPozicija, ploca); return(true); }
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 override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca) { base.LegalanPotez(novaPozicija, ploca); if (Math.Abs(this.Pozicija.Horizontalno - novaPozicija.Horizontalno) > 1 || Math.Abs(this.Pozicija.Vertikalno - novaPozicija.Vertikalno) > 1) { throw new IllegalMoveException("Illegal move", true); } return(true); }
public virtual bool LegalanPotez(Pozicija pozicija, Ploca ploca) { if (this.Pozicija.Horizontalno == pozicija.Horizontalno && this.Pozicija.Vertikalno == pozicija.Vertikalno) { throw new NoMoveException("No move"); } if (pozicija.Horizontalno < 0 || pozicija.Horizontalno > 7 || pozicija.Vertikalno < 0 || pozicija.Vertikalno > 7) { throw new Exception("Illegal move"); } return(true); }
public Figura PostaviPoziciju(Pozicija pozicija, Ploca ploca) { OnPozicijaSeMijenja(this, new PozicijaEventArgs { Pozicija = pozicija, Ploca = ploca }); OnPozicijaPromijenjena(this, new PozicijaEventArgs { Pozicija = pozicija, Ploca = ploca }); this.Pozicija = pozicija; return(this); }
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); }
public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca) { base.LegalanPotez(novaPozicija, ploca); int horizontalno = this.Pozicija.Horizontalno > novaPozicija.Horizontalno ? this.Pozicija.Horizontalno - novaPozicija.Horizontalno : novaPozicija.Horizontalno - this.Pozicija.Horizontalno; int vertikalno = this.Pozicija.Vertikalno > novaPozicija.Vertikalno ? this.Pozicija.Vertikalno - novaPozicija.Vertikalno : novaPozicija.Vertikalno - this.Pozicija.Vertikalno; if (!((horizontalno == 2 && vertikalno == 1) || (horizontalno == 1 && vertikalno == 2))) { throw new IllegalMoveException("Illegal move"); } var figura = ploca.VratiFiguru(novaPozicija); if (figura != null && figura.Boja == this.Boja) { throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu."); } return(true); }
public override bool PodZastitom(Ploca ploca) { throw new NotImplementedException(); }
public override string ToString(Pozicija pozicija) { //return this.Boja.ToString() + " Kralj " + pozicija.Horizontalno + "," + pozicija.Vertikalno; return("K" + Ploca.SkracenaBoja(this.Boja) + "-" + this.Id); }
public abstract bool PodZastitom(Ploca ploca);
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); }