public bool PuòMuovere( Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera = null) { var differenzaColonne = colonnaPartenza - colonnaArrivo; var differenzaTraverse = (int)traversaPartenza - (int)traversaArrivo; var stessaColonna = colonnaPartenza == colonnaArrivo; var stessaTraversa = traversaPartenza == traversaArrivo; if (differenzaColonne == 0 && differenzaTraverse == 0) { return(false); } if ((Math.Abs(differenzaColonne) <= 1 && Math.Abs(differenzaTraverse) <= 1) || ((stessaTraversa && !stessaColonna) || (stessaColonna && !stessaTraversa)) || ((Math.Abs(differenzaColonne) - Math.Abs(differenzaTraverse)) == 0)) { return(true); } else { return(false); } }
public bool PuòMuovere( Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera = null) { var stessaColonna = colonnaPartenza == colonnaArrivo; int distanzaTraLeTraverse; if (Colore == Colore.Bianco) { distanzaTraLeTraverse = (int)traversaArrivo - (int)traversaPartenza; } else { distanzaTraLeTraverse = (int)traversaPartenza - (int)traversaArrivo; } if (stessaColonna && distanzaTraLeTraverse == 1) { return(true); } else if (stessaColonna && ((distanzaTraLeTraverse == 2 && colore == Colore.Bianco && traversaPartenza == Traversa.Seconda) || (colore == Colore.Nero && traversaPartenza == Traversa.Settima && distanzaTraLeTraverse == -2))) { return(true); } else { return(false); } }
public bool PuòMuovere( Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera = null) { var stessaColonna = colonnaPartenza == colonnaArrivo; int distanzaTraLeTraverse; if (Colore == Colore.Bianco) { distanzaTraLeTraverse = (int)traversaArrivo - (int)traversaPartenza; } else { distanzaTraLeTraverse = (int)traversaPartenza - (int)traversaArrivo; } if (stessaColonna && distanzaTraLeTraverse == 1) { return(true); } else { return(false); } }
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 bool PuòMuovere( Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera) { return(new Torre(colore).PuòMuovere(colonnaPartenza, traversaPartenza, colonnaArrivo, traversaArrivo, scacchiera) || new Alfiere(colore). PuòMuovere(colonnaPartenza, traversaPartenza, colonnaArrivo, traversaArrivo, scacchiera)); }
private static string DeterminaMossa(IScacchiera scacchiera, Colore colore){ var pezziGiocabili = scacchiera.Case.Where(casa => casa.PezzoPresente?.Colore == colore).OrderBy(casa => Guid.NewGuid()).ToList(); foreach (var pezzoGiocabile in pezziGiocabili) { var destinazioneScelta = scacchiera .Case.ToList() .Where(casa => casa.PezzoPresente==null || casa.PezzoPresente.Colore != colore) .OrderBy(casa => Guid.NewGuid()) .FirstOrDefault(casa => pezzoGiocabile.PezzoPresente.PuòMuovere(pezzoGiocabile.Colonna, pezzoGiocabile.Traversa, casa.Colonna, casa.Traversa, scacchiera.Case)); if (destinazioneScelta == null) continue; return $"{pezzoGiocabile.Colonna}{(int) pezzoGiocabile.Traversa} {destinazioneScelta.Colonna}{(int) destinazioneScelta.Traversa}"; } return ""; }
public bool PuòMuovere(Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera) { if (Math.Abs((int)(colonnaArrivo - colonnaPartenza) * (int)(traversaArrivo - traversaPartenza)) <= 1) { return(new Donna(colore).PuòMuovere(colonnaPartenza, traversaPartenza, colonnaArrivo, traversaArrivo, scacchiera)); } return(false); }
public bool PuòMuovere( Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera = null) { var stessaColonna = colonnaPartenza == colonnaArrivo; var stessaTraversa = traversaPartenza == traversaArrivo; if ((stessaTraversa && !stessaColonna) || (stessaColonna && !stessaTraversa)) { return(true); } else { return(false); } }
private static void Disegna(IScacchiera scacchiera) { for (var i = 8; i>=1; i--){ Console.Write(i); Console.Write(" "); for (var j = 1; j<=8; j++) { Console.BackgroundColor = (i+j) % 2 != 0 ? ConsoleColor.Black : ConsoleColor.DarkGray; var pezzo = scacchiera[(Colonna) j, (Traversa) i].PezzoPresente; var carattere = pezzo != null ? pezzo.Carattere : ' '; Console.Write($" {carattere} "); } Console.BackgroundColor = ConsoleColor.Black; Console.WriteLine(" "); } Console.Write(" "); for (var i = 1; i<=8; i++){ Console.Write($" {(Colonna)i} "); } Console.WriteLine(); }
public bool PuòMuovere( Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera = null) { var differenzaColonne = colonnaPartenza - colonnaArrivo; var differenzaTraverse = (int)traversaPartenza - (int)traversaArrivo; if (differenzaColonne == 0 && differenzaTraverse == 0) { return(false); } if (Math.Abs(differenzaColonne) <= 1 && Math.Abs(differenzaTraverse) <= 1) { return(true); } else { return(false); } }
public bool PuòMuovere( Colonna colonnaPartenza, Traversa traversaPartenza, Colonna colonnaArrivo, Traversa traversaArrivo, IScacchiera scacchiera = null) { var differenzaColonne = colonnaPartenza - colonnaArrivo; var differenzaTraverse = (int)traversaPartenza - (int)traversaArrivo; if (differenzaTraverse == 2 || differenzaTraverse == -2) { if (differenzaColonne == 1 || differenzaColonne == -1) { return(true); } else { return(false); } } else if (differenzaColonne == 2 || differenzaColonne == -2) { if (differenzaTraverse == 1 || differenzaTraverse == -1) { return(true); } else { return(false); } } else { return(false); } }
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 Tavolo(IScacchiera scacchiera, IOrologio orologio, IBloccoNote bloccoNote) { Scacchiera = scacchiera; Orologio = orologio; BloccoNote = bloccoNote; }
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); }
public Tavolo(IScacchiera scacchiera, IOrologio orologio) { Scacchiera = scacchiera; Orologio = orologio; }