public void visualizzaConfigurazione() { int i = 1; System.Console.WriteLine(" | A | B | C | D | E | F | G | H |"); System.Console.WriteLine("-------------------------------------------"); foreach (Traversa traversa in Enum.GetValues(typeof(Traversa))) { System.Console.Write($" {i} |"); i++; foreach (Colonna colonna in Enum.GetValues(typeof(Colonna))) { IPezzo pezzo = this[colonna, traversa].PezzoPresente; if (pezzo != null) { System.Console.Write(string.Format(" {0} |", pezzo.ToString())); } else { System.Console.Write(string.Format(" |")); } } System.Console.WriteLine("\n-------------------------------------------"); } }
public bool PuòMuovere(Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera) { var distanzaTraLeColonne = Math.Abs(colonnaPartenza - colonnaArrivo); var distanzaTraLeTraverse = Math.Abs(traversaPartenza - traversaArrivo); //controllo se lo spostamento è 2x1 if ((distanzaTraLeColonne == 2 && distanzaTraLeTraverse == 1) || (distanzaTraLeTraverse == 2 && distanzaTraLeColonne == 1)) { IPezzo pezzoPresente = scacchiera[colonnaArrivo, traversaArrivo].PezzoPresente; //controllo pezzo non presente if (pezzoPresente == null) { return(true); } //pezzo del avversario if (pezzoPresente.Colore != colore) { return(true); } return(false); } return(false); }
public bool PuòMuovere(Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera) { var stessaColonna = colonnaPartenza == colonnaArrivo; var stessaTraversa = traversaPartenza == traversaArrivo; if (stessaColonna && stessaTraversa) { return(false); } if (stessaColonna) { int verso = Math.Sign(traversaArrivo - traversaPartenza); for (int i = (int)traversaPartenza + verso;; i += verso) { if (i == (int)traversaArrivo) { IPezzo pezzoSullaCasaDiArrivo = scacchiera[colonnaPartenza, (Traversa)i].PezzoPresente; if (pezzoSullaCasaDiArrivo == null) { return(true); } return(pezzoSullaCasaDiArrivo.Colore != colore? true : false); } if (scacchiera[colonnaPartenza, (Traversa)i].PezzoPresente != null) { return(false); } } } if (stessaTraversa) { int verso = Math.Sign(colonnaArrivo - colonnaPartenza); for (int i = (int)colonnaPartenza + verso;; i += verso) { if (i == (int)colonnaArrivo) { IPezzo pezzoSullaCasaDiArrivo = scacchiera[(Colonna)i, traversaPartenza].PezzoPresente; if (pezzoSullaCasaDiArrivo == null) { return(true); } return(pezzoSullaCasaDiArrivo.Colore != colore? true : false); } if (scacchiera[(Colonna)i, traversaPartenza].PezzoPresente != null) { return(false); } } } //per far contento il compilatore return(false); }
public void IPezziNonPossonoRestareFermi(Type t) { //Given IPezzo pezzo = Activator.CreateInstance(t, Colore.Bianco) as IPezzo; Scacchiera scacchiera = new Scacchiera(); //When bool esito = pezzo.PuòMuovere(Colonna.A, Traversa.Prima, Colonna.A, Traversa.Prima, scacchiera); //Then Assert.False(esito, t.Name); }
public bool PuòMuovere(Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera) { var distanzaTraLeColonne = colonnaArrivo - colonnaPartenza; int versoSpostamentoOrizzontale = Math.Sign(distanzaTraLeColonne); var distanzaTraLeTraverse = traversaArrivo - traversaPartenza; int versoSpostamentoVerticale = Math.Sign(distanzaTraLeTraverse); if (Math.Abs(distanzaTraLeColonne) != Math.Abs(distanzaTraLeTraverse) || distanzaTraLeColonne == 0) { return(false); } int j = (int)traversaPartenza + versoSpostamentoVerticale; for (int i = (int)colonnaPartenza + versoSpostamentoOrizzontale;;) { if (i == (int)colonnaArrivo) { IPezzo pezzoSullaCasaDiArrivo = scacchiera[colonnaArrivo, traversaArrivo].PezzoPresente; if (pezzoSullaCasaDiArrivo == null) { return(true); } return(pezzoSullaCasaDiArrivo.Colore != colore? true : false); } if (scacchiera[(Colonna)i, (Traversa)j].PezzoPresente != null) { return(false); } i += versoSpostamentoOrizzontale; j += versoSpostamentoVerticale; } }
public bool PuòMuovere( Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera) { var stessaColonna = colonnaPartenza == colonnaArrivo; var distanzaTraLeTraverse = (int)traversaArrivo - (int)traversaPartenza; //caso bianco if (colore == Colore.Bianco) { //solo spostamento if (stessaColonna && scacchiera[colonnaArrivo, traversaArrivo].PezzoPresente == null) { //spostamento in avanti di una casa if (distanzaTraLeTraverse == 1) { return(true); } //spostamento in avanti di 2 case if (traversaPartenza == Traversa.Seconda && distanzaTraLeTraverse == 2 && scacchiera[colonnaArrivo, traversaArrivo - 1].PezzoPresente == null) { return(true); } } //caso in cui un pezzo avversario viene mangiato if (Math.Abs((int)colonnaArrivo - (int)colonnaPartenza) == 1 && distanzaTraLeTraverse == 1) { IPezzo pezzo = scacchiera[colonnaArrivo, traversaArrivo].PezzoPresente; if (pezzo == null) { return(false); } if (pezzo.Colore != colore) { return(true); } } return(false); } //caso nero if (stessaColonna && scacchiera[colonnaArrivo, traversaArrivo].PezzoPresente == null) { //spostamento in avanti di una casa if (distanzaTraLeTraverse == -1) { return(true); } //spostamento in avanti di 2 case if (traversaPartenza == Traversa.Settima && distanzaTraLeTraverse == -2 && scacchiera[colonnaArrivo, traversaArrivo + 1].PezzoPresente == null) { return(true); } } //caso in cui un pezzo avversario viene mangiato if (Math.Abs((int)colonnaArrivo - (int)colonnaPartenza) == 1 && distanzaTraLeTraverse == -1) { IPezzo pezzo = scacchiera[colonnaArrivo, traversaArrivo].PezzoPresente; if (pezzo == null) { return(false); } if (pezzo.Colore != colore) { return(true); } } return(false); }