public override void Verplaats(Vakje nieuwVakje, Vakje selected, Spel spel) { if (spel.SpelerAanZet == spel.Speler1) { Speler = spel.Speler1; } else if (spel.SpelerAanZet == spel.Speler2) { Speler = spel.Speler2; } else if (spel.SpelMode == "Singleplayer") { Speler = spel.ComputerSpeler; } //Kijk of het schaakstuk het geselecteerde vakje kan vinden, //door alle vakjes waar heen bewogen mag worden te vergelijken met het geselecteerde vakje Schaakstuk tempPion = null; bool locatie = false; bool mogelijk = false; if (Kleur == "wit") { // Witte pion een stapje naar voren if (selected.Buren[0] == nieuwVakje && nieuwVakje.schaakstuk == null) { mogelijk = true; } // Slaan naar noordoost voor een witte pion else if (selected.Buren[4] == nieuwVakje && nieuwVakje.schaakstuk != null) { mogelijk = true; } // Slaan naar noordwest voor een witte pion else if (selected.Buren[7] == nieuwVakje && nieuwVakje.schaakstuk != null) { mogelijk = true; } // Twee stappen vooruit voor een witte pion else if (eersteZet == false && selected.Buren[0].Buren[0] == nieuwVakje && selected.Buren[0].Buren[0].schaakstuk == null && selected.Buren[0].schaakstuk == null) { mogelijk = true; // Zodat de tegenstander mag en-passant slaan if (nieuwVakje.Buren[1] != null) { if (nieuwVakje.Buren[1].schaakstuk is Pion) { // Als er oost een pion staat dan onthoudt de tegenstander dat hij deze pion en-passant mag slaan (nieuwVakje.Buren[1].schaakstuk as Pion).Speler.EnPassantPion = this; } } if (nieuwVakje.Buren[3] != null) { if (nieuwVakje.Buren[3].schaakstuk is Pion) { // Als er west een pion staat dan onthoudt de tegenstander dat hij deze pion en-passant mag slaan (nieuwVakje.Buren[3].schaakstuk as Pion).Speler.EnPassantPion = this; } } } else if (selected.Buren[1] != null) { //en-passant slaan naar noordoost if (selected.Buren[4] == nieuwVakje && base.Speler.EnPassantPion == selected.Buren[1].schaakstuk && base.Speler.EnPassantPion != null) { spel.updateAantalStukken(spel.SpelerAanZet); tempPion = selected.Buren[1].schaakstuk; locatie = false; selected.Buren[1].schaakstuk.Slaan(); selected.Buren[1].schaakstuk = null; //De andere pion verdwijnt selected.Buren[1].Pbox.update(); // update deze pbox zodat je de pion niet meer ziet mogelijk = true; } } if (selected.Buren[3] != null) { //en-passant slaan naar noordwest if (selected.Buren[7] == nieuwVakje && base.Speler.EnPassantPion == selected.Buren[3].schaakstuk && base.Speler.EnPassantPion != null) { spel.updateAantalStukken(spel.SpelerAanZet); tempPion = selected.Buren[3].schaakstuk; locatie = true; selected.Buren[3].schaakstuk.Slaan(); selected.Buren[3].schaakstuk = null; //De andere pion verdwijnt selected.Buren[3].Pbox.update(); //update deze pbox zodat je de pion niet meer ziet mogelijk = true; } } } else if (Kleur == "zwart") { // Zwarte pion een stapje naar voren if (selected.Buren[2] == nieuwVakje && nieuwVakje.schaakstuk == null) { mogelijk = true; } // Slaan naar zuidoost voor een zwarte pion else if (selected.Buren[5] == nieuwVakje && Kleur == "zwart" && nieuwVakje.schaakstuk != null) { mogelijk = true; } // Slaan naar zuidwest voor een zwarte pion else if (selected.Buren[6] == nieuwVakje && nieuwVakje.schaakstuk != null) { mogelijk = true; } // Twee stappen vooruit voor een zwarte pion else if (eersteZet == false && selected.Buren[2].Buren[2] == nieuwVakje && selected.Buren[2].Buren[2].schaakstuk == null && selected.Buren[2].schaakstuk == null) { mogelijk = true; // Zodat de tegenstander mag en-passant slaan if (nieuwVakje.Buren[1] != null) { if (nieuwVakje.Buren[1].schaakstuk is Pion) { // Als er oost een pion staat dan onthoudt de tegenstander dat hij deze pion en-passant mag slaan (nieuwVakje.Buren[1].schaakstuk as Pion).Speler.EnPassantPion = this; } } if (nieuwVakje.Buren[3] != null) { if (nieuwVakje.Buren[3].schaakstuk is Pion) { // Als er west een pion staat dan onthoudt de tegenstander dat hij deze pion en-passant mag slaan (nieuwVakje.Buren[3].schaakstuk as Pion).Speler.EnPassantPion = this; } } } else if (selected.Buren[1] != null) { //en-passant slaan naar zuidoost if (selected.Buren[5] == nieuwVakje && base.Speler.EnPassantPion == selected.Buren[1].schaakstuk && base.Speler.EnPassantPion != null) { spel.updateAantalStukken(spel.SpelerAanZet); locatie = false; tempPion = selected.Buren[1].schaakstuk; selected.Buren[1].schaakstuk.Slaan(); selected.Buren[1].schaakstuk = null; //De andere pion verdwijnt selected.Buren[1].Pbox.update(); // update deze pbox zodat je de pion niet meer ziet mogelijk = true; } } if (spel.SpelMode == "Multiplayer") { if (selected.Buren[3] != null) { //en-passant slaan naar zuidwest if (selected.Buren[6] == nieuwVakje && base.Speler.EnPassantPion == selected.Buren[3].schaakstuk && base.Speler.EnPassantPion != null) { spel.updateAantalStukken(spel.SpelerAanZet); locatie = true; tempPion = selected.Buren[3].schaakstuk; selected.Buren[3].schaakstuk.Slaan(); selected.Buren[3].schaakstuk = null; //De andere pion verdwijnt selected.Buren[3].Pbox.update(); // update deze pbox zodat je de pion niet meer ziet mogelijk = true; } } } } if (mogelijk == true) { //Als het schaakstuk het vakje kan bereiken, wordt het schaakstuk verplaatst. //Hierna wordt gekeken of de koning schaak staat. //Als de koning schaak staat, dan wordt het schaakstuk weer terug geplaatst waar die stond. //Staat de koning niet schaak, dan is de zet definitief en is de andere speler aan de beurt. Schaakstuk temp = nieuwVakje.schaakstuk; nieuwVakje.schaakstuk = this; selected.schaakstuk = null; this.Vakje = nieuwVakje; bool checkSchaak; checkSchaak = spel.schaakbord.CheckSchaak(spel.SpelerAanZet.koning.Vakje, spel.SpelerAanZet.koning.Kleur); if (checkSchaak == true) { selected.schaakstuk = this; nieuwVakje.schaakstuk = temp; this.Vakje = selected; if (tempPion != null) { if (locatie == false) { selected.Buren[1].schaakstuk = tempPion; selected.Buren[1].Pbox.update(); } else { selected.Buren[3].schaakstuk = tempPion; selected.Buren[3].Pbox.update(); } } } else { if (temp != null) { temp.Slaan(); spel.updateAantalStukken(spel.SpelerAanZet); } eersteZet = true; Speler.ValideZet = true; } } //De pion wil promoveren wanneer hij op de eerste of laatste rij komt te staan if (Vakje.Buren[0] == null || Vakje.Buren[2] == null) { if (spel.SpelMode != "Singleplayer") { nieuwVakje.Pbox.update(); selected.Pbox.update(); Vakje.schaakstuk = new Dame(Kleur, Vakje, base.Speler); PromoveerForm promoveerform = new PromoveerForm(this, Kleur); promoveerform.ShowDialog(); } else { if (spel.SpelerAanZet == spel.ComputerSpeler) { nieuwVakje.Pbox.update(); selected.Pbox.update(); Vakje.schaakstuk = new Dame(Kleur, Vakje, base.Speler); } else { nieuwVakje.Pbox.update(); selected.Pbox.update(); Vakje.schaakstuk = new Dame(Kleur, Vakje, base.Speler); PromoveerForm promoveerform = new PromoveerForm(this, Kleur); promoveerform.ShowDialog(); } } } }
public override void Verplaats(Vakje nieuwVakje, Vakje selected, Spel spel) { //Kijk of het schaakstuk het geselecteerde vakje kan vinden, //door alle vakjes waar heen bewogen mag worden te vergelijken met het geselecteerde vakje bool gevonden = false; if (selected.Buren[0] == nieuwVakje) { gevonden = true; } else if (selected.Buren[1] == nieuwVakje) { gevonden = true; } else if (selected.Buren[2] == nieuwVakje) { gevonden = true; } else if (selected.Buren[3] == nieuwVakje) { gevonden = true; } else if (selected.Buren[4] == nieuwVakje) { gevonden = true; } else if (selected.Buren[7] == nieuwVakje) { gevonden = true; } else if (selected.Buren[5] == nieuwVakje) { gevonden = true; } else if (selected.Buren[6] == nieuwVakje) { gevonden = true; } if (gevonden == true) { //Als het schaakstuk het vakje kan bereiken, wordt het schaakstuk verplaatst. //Hierna wordt gekeken of de koning schaak staat. //Als de koning schaak staat, dan wordt het schaakstuk weer terug geplaatst waar die stond. //Staat de koning niet schaak, dan is de zet definitief en is de andere speler aan de beurt. Schaakstuk temp = nieuwVakje.schaakstuk; nieuwVakje.schaakstuk = this; selected.schaakstuk = null; this.Vakje = nieuwVakje; bool checkSchaak = spel.schaakbord.CheckSchaak(spel.SpelerAanZet.koning.Vakje, spel.SpelerAanZet.koning.Kleur); if (checkSchaak == true) { selected.schaakstuk = this; nieuwVakje.schaakstuk = temp; this.Vakje = selected; } else { if (temp != null) { spel.updateAantalStukken(spel.SpelerAanZet); temp.Slaan(); } _eersteZet = true; spel.SpelerAanZet.ValideZet = true; } } }
public override void Verplaats(Vakje nieuwVakje, Vakje selected, Spel spel) { bool mogelijk = false; bool mogelijkloop = false; Vakje vorige = selected; //Kijk of het schaakstuk het geselecteerde vakje kan vinden, //door alle vakjes waar heen bewogen mag worden te vergelijken met het geselecteerde vakje while (mogelijkloop == false) { if (vorige.Buren[0] == nieuwVakje) { mogelijk = true; mogelijkloop = true; } else if (vorige.Buren[0] == null || vorige.Buren[0].schaakstuk != null) { mogelijkloop = true; } vorige = vorige.Buren[0]; } mogelijkloop = false; vorige = selected; if (mogelijk == false) { while (mogelijkloop == false) { if (vorige.Buren[1] == nieuwVakje) { mogelijk = true; mogelijkloop = true; } else if (vorige.Buren[1] == null || vorige.Buren[1].schaakstuk != null) { mogelijkloop = true; } vorige = vorige.Buren[1]; } } mogelijkloop = false; vorige = selected; if (mogelijk == false) { while (mogelijkloop == false) { if (vorige.Buren[2] == nieuwVakje) { mogelijk = true; mogelijkloop = true; } else if (vorige.Buren[2] == null || vorige.Buren[2].schaakstuk != null) { mogelijkloop = true; } vorige = vorige.Buren[2]; } } mogelijkloop = false; vorige = selected; if (mogelijk == false) { while (mogelijkloop == false) { if (vorige.Buren[3] == nieuwVakje) { mogelijk = true; mogelijkloop = true; } else if (vorige.Buren[3] == null || vorige.Buren[3].schaakstuk != null) { mogelijkloop = true; } vorige = vorige.Buren[3]; } } mogelijkloop = false; vorige = selected; while (mogelijkloop == false) { if (vorige.Buren[4] == nieuwVakje) { mogelijk = true; mogelijkloop = true; } else if (vorige.Buren[4] == null || vorige.Buren[4].schaakstuk != null) { mogelijkloop = true; } vorige = vorige.Buren[4]; } mogelijkloop = false; vorige = selected; if (mogelijk == false) { while (mogelijkloop == false) { if (vorige.Buren[7] == nieuwVakje) { mogelijk = true; mogelijkloop = true; } else if (vorige.Buren[7] == null || vorige.Buren[7].schaakstuk != null) { mogelijkloop = true; } vorige = vorige.Buren[7]; } } mogelijkloop = false; vorige = selected; if (mogelijk == false) { while (mogelijkloop == false) { if (vorige.Buren[5] == nieuwVakje) { mogelijk = true; mogelijkloop = true; } else if (vorige.Buren[5] == null || vorige.Buren[5].schaakstuk != null) { mogelijkloop = true; } vorige = vorige.Buren[5]; } } mogelijkloop = false; vorige = selected; if (mogelijk == false) { while (mogelijkloop == false) { if (vorige.Buren[6] == nieuwVakje) { mogelijk = true; mogelijkloop = true; } else if (vorige.Buren[6] == null || vorige.Buren[6].schaakstuk != null) { mogelijkloop = true; } vorige = vorige.Buren[6]; } } //Als het schaakstuk het vakje kan bereiken, wordt het schaakstuk verplaatst. //Hierna wordt gekeken of de koning schaak staat. //Als de koning schaak staat, dan wordt het schaakstuk weer terug geplaatst waar die stond. //Staat de koning niet schaak, dan is de zet definitief en is de andere speler aan de beurt. if (mogelijk == true) { Schaakstuk temp = nieuwVakje.schaakstuk; nieuwVakje.schaakstuk = this; selected.schaakstuk = null; this.Vakje = nieuwVakje; bool checkSchaak = spel.schaakbord.CheckSchaak(spel.SpelerAanZet.koning.Vakje, spel.SpelerAanZet.koning.Kleur); if (checkSchaak == true) { selected.schaakstuk = this; nieuwVakje.schaakstuk = temp; this.Vakje = selected; } else { if (temp != null) { spel.updateAantalStukken(spel.SpelerAanZet); temp.Slaan(); } spel.SpelerAanZet.ValideZet = true; } } }