public override IEnumerable <Cella> CalcolaMosseDisponibili(Cella partenza) { List <Cella> celle = new List <Cella>(); char lettera = partenza.LetteraColonna(); int valLettera; int inizio = 64; int colonna = (int)lettera - inizio; // D = 4 -> 8 int riga = partenza.NRiga; // 5 -> 9 for (int i = 0; i <= 7; i++) { for (int y = 0; y <= 7; y++) { valLettera = inizio + y + 1; if ((i + 1 == riga || y + 1 == colonna) && !(colonna == y + 1 && riga == i + 1)) { Cella c = new Cella((char)valLettera + "" + (i + 1)); if (c.Valida()) { celle.Add(c); } } } } return(celle); }
public override IEnumerable <Cella> CalcolaMosseDisponibili(Cella partenza) { int direzione = Bianco ? 1 : -1; List <Cella> celle = new List <Cella>(); for (int i = 1; i <= 2; i++) { Cella c = new Cella(partenza.LetteraColonna() + "" + (partenza.NRiga + i * direzione)); if (c.Valida()) { celle.Add(c); } } return(celle); }
public override IEnumerable <Cella> CalcolaMosseDisponibili(Cella partenza) { List <Cella> celle = new List <Cella>(); char lettera = partenza.LetteraColonna(); int valLettera; for (int i = -2; i <= 2; i++) { valLettera = (int)lettera + i; if (i != 0) { if (Math.Abs(i) == 2) { for (int y = -1; y <= 1; y += 2) { Cella c = new Cella((char)valLettera + "" + (partenza.NRiga + y)); if (c.Valida()) { celle.Add(c); } } } else { for (int y = -2; y <= 2; y += 4) { Cella c = new Cella((char)valLettera + "" + (partenza.NRiga + y)); if (c.Valida()) { celle.Add(c); } } } } } return(celle); }
public abstract IEnumerable <Cella> CalcolaMosseDisponibili(Cella partenza);
public bool Muovi(Cella partenza, Cella arrivo) { IEnumerable <Cella> cellePossibili = CalcolaMosseDisponibili(partenza); return(cellePossibili.Contains(arrivo)); }