예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
 public abstract IEnumerable <Cella> CalcolaMosseDisponibili(Cella partenza);
예제 #5
0
        public bool Muovi(Cella partenza, Cella arrivo)
        {
            IEnumerable <Cella> cellePossibili = CalcolaMosseDisponibili(partenza);

            return(cellePossibili.Contains(arrivo));
        }