static bool GeldigePaardZet(Positie vanPos, Positie naarPos) { bool isCorrect = false; int y = vanPos.rij; int x = vanPos.kolom; int newY = naarPos.rij; int newX = naarPos.kolom; if (x == newX - 1 && y == newY - 2) { isCorrect = true; } if (x == newX - 1 && y == newY + 2) { isCorrect = true; } if (x == newX + 1 && y == newY - 2) { isCorrect = true; } if (x == newX + 1 && y == newY + 2) { isCorrect = true; } return(isCorrect); }
static void MaakSprong(Schaakstuk[,] schaakbord, Positie vanPos, Positie naarPos) { if (schaakbord[vanPos.rij, vanPos.kolom] != null) { Schaakstuk schaakstuk = (Schaakstuk)schaakbord.GetValue(vanPos.rij, vanPos.kolom); int type = (int)schaakstuk.type; int paard = (int)SchaakstukType.Paard; if (type == paard) { if (GeldigePaardZet(vanPos, naarPos)) { schaakbord[naarPos.rij, naarPos.kolom] = schaakstuk; schaakbord[vanPos.rij, vanPos.kolom] = null; } else { Console.WriteLine("Ongeldige zet"); VerplaatsStukken(schaakbord); } } else { schaakbord[naarPos.rij, naarPos.kolom] = schaakstuk; schaakbord[vanPos.rij, vanPos.kolom] = null; } } else { Console.WriteLine("Er staat geen schaakstuk op deze positie!"); } }
static void VerplaatsStukken(Schaakstuk[,] schaakbord) { Positie vanPos = new Positie(); Positie naarPos = new Positie(); while (true) { Console.Write("Geef 'van-positie' <bv A2>: "); string vanPosS = Console.ReadLine(); StringToPositie(vanPosS, out vanPos); Console.Write("Geef 'naar-positie' <bv A3>: "); string naarPosS = Console.ReadLine(); StringToPositie(naarPosS, out naarPos); MaakSprong(schaakbord, vanPos, naarPos); ToonsSchaakbord(schaakbord); //if(StringToPositie(vanPos, out pos)) //{ // Schaakstuk item = (Schaakstuk)schaakbord.GetValue(pos.rij, pos.kolom); // SchaakstukType type = item.type; // Console.WriteLine("er staat een schaakstuk op van-positie: " + type); //} //else //{ // Console.WriteLine("false"); //} } }
static bool StringToPositie(string txt, out Positie pos) { pos = new Positie(); // "A2": "A" => kolom 0, "2" => rij 1 try { pos.kolom = txt[0] - 'A'; pos.rij = Int32.Parse(txt[1].ToString()) - 1; return(true); } catch { Console.WriteLine("Ongeldige invoer"); return(false); } }