Esempio n. 1
0
        private static void MaakSprong(Positie van,Positie naar ,ref Schaakstuk[,] bord,ref SchaakstukKleur beurt)
        {
            if (bord[van.rij,van.kolom] != null)
            {
                bool goedGekeurd = false;
                switch (bord[van.rij, van.kolom].type)
                {
                    case SchaakstukType.Pion:
                        int value = Math.Abs(van.rij - naar.rij);
                        if (value == 1 || (!bord[van.rij, van.kolom].moved && value ==2) )
                        {
                            bord[van.rij, van.kolom].moved = true;
                            goedGekeurd = true;
                        }
                        break;
                    case SchaakstukType.Toren:
                        int value1 = Math.Abs(van.rij - naar.rij);
                        int value2 = Math.Abs(van.kolom - naar.kolom);
                        if ((value2 == 0 && value1 > 0) || (value2 > 0 && value1 == 0))
                        {
                            goedGekeurd = true;
                        }
                        break;
                    case SchaakstukType.Paard:
                        value1 = Math.Abs(van.rij - naar.rij);
                        value2 = Math.Abs(van.kolom - naar.kolom);
                        if ((value2 == 1 && value1 == 2)|| (value2 == 2 && value1 == 1))
                        {
                            goedGekeurd = true;
                        }
                        break;
                    case SchaakstukType.Loper:
                        value1 = Math.Abs(van.rij - naar.rij);
                        value2 = Math.Abs(van.kolom - naar.kolom);
                        if (value2 == value1 && value1 != 0)
                        {
                            goedGekeurd = true;
                        }
                        break;
                    case SchaakstukType.Koning:
                        value1 = Math.Abs(van.rij - naar.rij);
                        value2 = Math.Abs(van.kolom - naar.kolom);
                        if ((value2 == 1 || value1 == 1) && !(value2 > 1 || value1 > 1))
                        {
                            goedGekeurd = true;
                        }
                        break;
                    case SchaakstukType.Koningin:
                        value1 = Math.Abs(van.rij - naar.rij);
                        value2 = Math.Abs(van.kolom - naar.kolom);
                        if (value2 == value1 && value1 != 0)
                        {
                            goedGekeurd = true;
                        }
                        else if ((value2 == 0 && value1 > 0) || (value2 > 0 && value1 == 0))
                        {
                            goedGekeurd = true;
                        }
                        break;
                }
                if (bord[van.rij, van.kolom].kleur == beurt && goedGekeurd && (bord[naar.rij,naar.kolom] == null || bord[van.rij, van.kolom].kleur != bord[naar.rij, naar.kolom].kleur))
                {
                    bord[naar.rij, naar.kolom] = bord[van.rij, van.kolom];

                    bord[van.rij, van.kolom] = null;

                    if (beurt == SchaakstukKleur.Wit)
                    {
                        beurt = SchaakstukKleur.Zwart;
                    }
                    else
                    {
                        beurt = SchaakstukKleur.Wit;

                    }
                }
            }
        }
Esempio n. 2
0
 private static bool StringToPosition(string txt, out Positie pos)
 {
     // "A2": "A" => kolom 0, "2" => rij 1
     txt = txt.ToUpper();
     pos = new Positie();
     pos.rij = 0;
     pos.kolom = txt[0] - 'A';
     int rij;
     if (int.TryParse(txt[1].ToString(), out rij) && pos.kolom < 8 && rij < 8)
     {
         pos.rij = rij - 1;
     }
     else
     {
         return false;
     }
     return true;
 }