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; } } } }
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; }