Exemple #1
0
        public void SelecteerVakje(Vakje nieuwVakje, Spel spel)
        {
            if (Selected != null)                                          //alleen als er al iets is geselecteerd
            {
                Vakje clicked = nieuwVakje;                                //voor de singleplayer
                Selected.schaakstuk.Verplaats(nieuwVakje, Selected, spel); //probeer het schaakstuk te verplaatsen

                Selected.Pbox.update();                                    //update het eerste vakje
                nieuwVakje.Pbox.update();                                  //update het tweede vakje
                Selected = null;                                           //niets is meer geselecteerd

                if (ValideZet == true)                                     //als het schaakstuk daar heen mag
                {
                    spel.Selected = clicked;                               //voor de singleplayer
                    spel.VeranderSpeler();                                 //de andere speler is aan zet
                    if (spel.SpelMode == "Singleplayer")
                    {
                        spel.ComputerSpeler.Zet(clicked);  // laat de computer op de mens reageren
                        spel.VeranderSpeler();
                    }

                    // De pion voor en-passant wordt weer vergeten.
                    EnPassantPion = null;
                }
                ValideZet = false;
            }
        }
 public void Zet(Vakje _pictures)
 {
     // Deze methode wordt aangeroepen door de mens nadat hij een zet heeft gedaan, de computer begint met deze methode aan zijn zet.
     _vorigVakje      = spel.Selected;              // slaat het door de speler geselecteerde vakje op
     _vorigSchaakstuk = spel.Selected.schaakstuk;   // slaat het door de speler geselecteerde schaakstuk op
     bepaalMensPositie();
 }
        public void voerZetUit(Vakje geselecteerdStuk, Vakje geselecteerdVakje)
        {
            // Vanuit algoritme wordt deze methode aangeroepen en wordt er een zet uitgevoerd

            VerplaatsingsLijst.Add(geselecteerdVakje);       // slaat de positie van de computerszet in lijst op

            geselecteerdStuk.schaakstuk.Verplaats(geselecteerdVakje, geselecteerdStuk, spel);
            geselecteerdStuk.Pbox.update();                 //update het eerste vakje
            geselecteerdVakje.Pbox.update();                //update het tweede vakje
            geselecteerdStuk = null;                        //niets is meer geselecteerd
        }
Exemple #4
0
        }                                           //wanneer het mogelijk is om te rokeren verschijnt een melding of je wilt rokeren

        public Koning(string kleur, Vakje vakje, Speler speler)
        {
            this.Kleur  = kleur;
            this.Vakje  = vakje;
            this.Speler = speler;
            if (kleur == "wit")
            {
                Afbeelding = Properties.Resources.KoningWit;
            }
            else
            {
                Afbeelding = Properties.Resources.KoningZwart;
            }
        }
Exemple #5
0
        public void SelecteerStuk(Vakje clicked, Spel spel)
        {
            if (Selected != null) //alleen als er al een stuk is geselecteerd
            {
                if (Selected.schaakstuk is Toren && clicked.schaakstuk is Koning)
                {
                    //als het eerste stuk een toren is en het tweede een koning probeer dan te rokeren
                    (clicked.schaakstuk as Koning).Rokeren(Selected, clicked, this, spel);
                    DeselecteerStuk();
                }

                else if (Selected.schaakstuk is Koning && clicked.schaakstuk is Toren)
                {
                    //als het eerste stuk een koning is en het tweede een toren probeer dan te rokeren
                    (Selected.schaakstuk as Koning).Rokeren(clicked, Selected, this, spel);
                    DeselecteerStuk();
                }
            }

            if (ValideZet == false)      //als hij niet gerokeerd heeft
            {
                if (clicked == Selected) //als het stuk waarop geklikt is al geselecteerd was
                {
                    DeselecteerStuk();
                }
                else
                {
                    if (Selected != null) //als er al een stuk geselecteerd staat
                    {
                        DeselecteerStuk();
                    }
                    this.Selected          = clicked;      //het stuk waarop geklikt is wordt geselecteerd
                    clicked.Pbox.BackColor = _selectColor; //de kleur van het vakje veranderd
                }
            }
            else // als het rokeren gelukt is
            {
                spel.VeranderSpeler(); //De speler veranderd;

                // De pion voor en-passant wordt weer vergeten.
                EnPassantPion = null;
            }

            ValideZet = false;
        }
 public override void kanStukSlaan(Algoritme algoritme, Vakje geselecteerdStuk)
 {
     // Deze methode kijkt vanuit de computer of er een pion geslagen kan worden.
     if (geselecteerdStuk.schaakstuk.Kleur == "zwart")
     {
         Vakje geselecteerdVak = geselecteerdStuk;
         if (geselecteerdVak.Buren[5] != null && geselecteerdVak.Buren[5].schaakstuk != null && geselecteerdVak.Buren[5].schaakstuk.Kleur == "wit")
         {
             algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[5]);
             algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
         }
         else if (geselecteerdVak.Buren[6] != null && geselecteerdVak.Buren[6].schaakstuk != null && geselecteerdVak.Buren[6].schaakstuk.Kleur == "wit")
         {
             algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[6]);
             algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
         }
         else
         {
         }
     }
 }
Exemple #7
0
        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;
                }
            }
        }
        private void controleerBurenSchaak(string richting, Vakje waarVanDaan)
        {
            bool   reactie      = false;
            string slaRichting  = richting;
            Vakje  oudVakje     = waarVanDaan;
            Vakje  volgendVakje = waarVanDaan;
            bool   mogelijkloop = false;

            if (richting == "Noord")
            {
                volgendVakje = waarVanDaan.Buren[0];
            }
            else if (richting == "Noordoost")
            {
                volgendVakje = waarVanDaan.Buren[4];
            }
            else if (richting == "Noordwest")
            {
                volgendVakje = waarVanDaan.Buren[7];
            }
            else if (richting == "West")
            {
                volgendVakje = waarVanDaan.Buren[3];
            }
            else if (richting == "Zuid")
            {
                volgendVakje = waarVanDaan.Buren[2];
            }
            else if (richting == "Zuidoost")
            {
                volgendVakje = waarVanDaan.Buren[5];
            }
            else if (richting == "Zuidwest")
            {
                volgendVakje = waarVanDaan.Buren[6];
            }
            else
            {
                volgendVakje = waarVanDaan.Buren[1];
            }

            // loopt door de slaanrichting van de tegenstander en verzet een stuk zodat er niet meer geslagen kan worden
            while (mogelijkloop == false)
            {
                if (volgendVakje == null)
                {
                    mogelijkloop = true;
                }
                else
                {
                    if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk is Koning && volgendVakje.schaakstuk.Kleur == "zwart")
                    {
                        mogelijkloop = true;
                    }
                    else
                    {
                        // Controleert buurnoord
                        if (volgendVakje.Buren[0] != null && volgendVakje.Buren[0].schaakstuk != null && volgendVakje.Buren[0].schaakstuk.Kleur == "zwart")
                        {
                            // kijkt of er een schaakstuk staat die schaak kan blokkeren en verplaats dat schaakstuk
                            if (volgendVakje.Buren[0].schaakstuk is Pion && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[0], volgendVakje);
                            }

                            else if (volgendVakje.Buren[0].schaakstuk is Toren && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[0], volgendVakje);
                            }
                            else if (volgendVakje.Buren[0].schaakstuk is Dame && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[0], volgendVakje);
                            }
                        }

                        // Controleert buurnoordoost
                        if (volgendVakje.Buren[4] != null && volgendVakje.Buren[4].schaakstuk != null && volgendVakje.Buren[4].schaakstuk.Kleur == "zwart")
                        {
                            // kijkt of er een schaakstuk staat die schaak kan en blokkeren en verplaats dat schaakstuk
                            if (volgendVakje.Buren[4].schaakstuk is Loper && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[4], volgendVakje);
                            }
                            else if (volgendVakje.Buren[4].schaakstuk is Dame && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[4], volgendVakje);
                            }
                            // slaat de tegenstander met een pion
                            else if (oudVakje.Buren[4] != null && oudVakje.Buren[4].schaakstuk is Pion && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(oudVakje.Buren[4], oudVakje);
                            }
                        }

                        // Controleert buurnoordwest
                        if (volgendVakje.Buren[7] != null && volgendVakje.Buren[7].schaakstuk != null && volgendVakje.Buren[7].schaakstuk.Kleur == "zwart")
                        {
                            // kijkt of er een schaakstuk staat die schaak kan en blokkeren en verplaats dat schaakstuk
                            if (volgendVakje.Buren[7].schaakstuk is Loper && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[7], volgendVakje);
                            }
                            else if (volgendVakje.Buren[7].schaakstuk is Dame && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[7], volgendVakje);
                            }
                            // slaat de tegenstander met een pion
                            else if (oudVakje.Buren[7] != null && oudVakje.Buren[7].schaakstuk is Pion && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(oudVakje.Buren[7], oudVakje);
                            }
                        }

                        // Controleert buurwest
                        if (volgendVakje.Buren[3] != null && volgendVakje.Buren[3].schaakstuk != null && volgendVakje.Buren[3].schaakstuk.Kleur == "zwart")
                        {
                            // kijkt of er een schaakstuk staat die schaak kan blokkeren en verplaats dat schaakstuk
                            if (volgendVakje.Buren[3].schaakstuk is Toren && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[3], volgendVakje);
                            }
                            else if (volgendVakje.Buren[3].schaakstuk is Dame && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[3], volgendVakje);
                            }
                        }

                        // Controleert buuroost
                        if (volgendVakje.Buren[1] != null && volgendVakje.Buren[1].schaakstuk != null && volgendVakje.Buren[1].schaakstuk.Kleur == "zwart")
                        {
                            // kijkt of er een schaakstuk staat die schaak kan blokkeren en verplaats dat schaakstuk
                            if (volgendVakje.Buren[1].schaakstuk is Toren && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[1], volgendVakje);
                            }
                            else if (volgendVakje.Buren[1].schaakstuk is Dame && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[1], volgendVakje);
                            }
                        }

                        // Controleert buurzuid
                        if (volgendVakje.Buren[2] != null && volgendVakje.Buren[2].schaakstuk != null && volgendVakje.Buren[2].schaakstuk.Kleur == "zwart")
                        {
                            // kijkt of er een schaakstuk staat die schaak kan blokkeren en verplaats dat schaakstuk
                            if (volgendVakje.Buren[2].schaakstuk is Toren && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[2], volgendVakje);
                            }
                            else if (volgendVakje.Buren[2].schaakstuk is Dame && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[2], volgendVakje);
                            }
                        }

                        // Controleert buurzuidoost
                        if (volgendVakje.Buren[5] != null && volgendVakje.Buren[5].schaakstuk != null && volgendVakje.Buren[5].schaakstuk.Kleur == "zwart")
                        {
                            // kijkt of er een schaakstuk staat die schaak kan en blokkeren en verplaats dat schaakstuk
                            if (volgendVakje.Buren[5].schaakstuk is Loper && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[5], volgendVakje);
                            }
                            else if (volgendVakje.Buren[5].schaakstuk is Dame && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[5], volgendVakje);
                            }
                        }

                        // Controleert buurzuidwest
                        if (volgendVakje.Buren[6] != null && volgendVakje.Buren[6].schaakstuk != null && volgendVakje.Buren[6].schaakstuk.Kleur == "zwart")
                        {
                            // kijkt of er een schaakstuk staat die schaak kan en blokkeren en verplaats dat schaakstuk
                            if (volgendVakje.Buren[6].schaakstuk is Loper && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[6], volgendVakje);
                            }
                            else if (volgendVakje.Buren[6].schaakstuk is Dame && reactie == false)
                            {
                                reactie      = true;
                                mogelijkloop = true;
                                _computer.voerZetUit(volgendVakje.Buren[6], volgendVakje);
                            }
                        }

                        // gaat naar het volgende vakje wanneer er niets verplaatst kan worden
                        if (mogelijkloop == false)
                        {
                            // verder in de richting
                            if (richting == "Noord")
                            {
                                volgendVakje = volgendVakje.Buren[0];
                            }
                            else if (richting == "Noordoost")
                            {
                                volgendVakje = volgendVakje.Buren[4];
                            }
                            else if (richting == "Noordwest")
                            {
                                volgendVakje = volgendVakje.Buren[7];
                            }
                            else if (richting == "West")
                            {
                                volgendVakje = volgendVakje.Buren[3];
                            }
                            else if (richting == "Oost")
                            {
                                volgendVakje = volgendVakje.Buren[1];
                            }
                            else if (richting == "Zuid")
                            {
                                volgendVakje = volgendVakje.Buren[2];
                            }
                            else if (richting == "Zuidoost")
                            {
                                volgendVakje = volgendVakje.Buren[5];
                            }
                            else if (richting == "Zuidwest")
                            {
                                volgendVakje = volgendVakje.Buren[6];
                            }
                        }
                    }
                }
            }
            _computer.ZojuistSchaak   = true; // voorkomt een tweede computer zet
            _computer.KoningVerplaats = true;
        }
        public void reageerOpSchaak(Vakje geselecteerd)
        {
            Vakje waarVanDaan = geselecteerd;
            Vakje volgendVakje;
            bool  reactie = false;

            // bepaal richting van het slaan
            bool mogelijkloop = false;

            volgendVakje = geselecteerd.Buren[0];
            while (mogelijkloop == false)
            {
                if (volgendVakje == null)
                {
                    mogelijkloop = true;
                }
                else
                {
                    if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk is Koning && volgendVakje.schaakstuk.Kleur == "zwart")
                    {
                        mogelijkloop   = true;
                        _slaanRichting = "Noord";
                    }
                    else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                    {
                        mogelijkloop = true;
                    }
                    volgendVakje = volgendVakje.Buren[0];
                }
            }

            mogelijkloop = false;
            volgendVakje = geselecteerd.Buren[4];
            while (mogelijkloop == false)
            {
                if (volgendVakje == null)
                {
                    mogelijkloop = true;
                }
                else
                {
                    if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk is Koning && volgendVakje.schaakstuk.Kleur == "zwart")
                    {
                        mogelijkloop   = true;
                        _slaanRichting = "Noordoost";
                    }
                    else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                    {
                        mogelijkloop = true;
                    }
                    volgendVakje = volgendVakje.Buren[4];
                }
            }

            mogelijkloop = false;
            volgendVakje = geselecteerd.Buren[7];
            while (mogelijkloop == false)
            {
                if (volgendVakje == null)
                {
                    mogelijkloop = true;
                }
                else
                {
                    if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk is Koning && volgendVakje.schaakstuk.Kleur == "zwart")
                    {
                        mogelijkloop   = true;
                        _slaanRichting = "Noordwest";
                    }
                    else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                    {
                        mogelijkloop = true;
                    }
                    volgendVakje = volgendVakje.Buren[7];
                }
            }

            mogelijkloop = false;
            volgendVakje = geselecteerd.Buren[1];
            while (mogelijkloop == false)
            {
                if (volgendVakje == null)
                {
                    mogelijkloop = true;
                }
                else
                {
                    if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk is Koning && volgendVakje.schaakstuk.Kleur == "zwart")
                    {
                        mogelijkloop   = true;
                        _slaanRichting = "Oost";
                    }
                    else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                    {
                        mogelijkloop = true;
                    }
                    volgendVakje = volgendVakje.Buren[1];
                }
            }


            mogelijkloop = false;
            volgendVakje = geselecteerd.Buren[2];
            while (mogelijkloop == false)
            {
                if (volgendVakje == null)
                {
                    mogelijkloop = true;
                }
                else
                {
                    if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk is Koning && volgendVakje.schaakstuk.Kleur == "zwart")
                    {
                        mogelijkloop   = true;
                        _slaanRichting = "Zuid";
                    }
                    else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                    {
                        mogelijkloop = true;
                    }
                    volgendVakje = volgendVakje.Buren[2];
                }
            }


            mogelijkloop = false;
            volgendVakje = geselecteerd.Buren[5];
            while (mogelijkloop == false)
            {
                if (volgendVakje == null)
                {
                    mogelijkloop = true;
                }
                else
                {
                    if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk is Koning && volgendVakje.schaakstuk.Kleur == "zwart")
                    {
                        mogelijkloop   = true;
                        _slaanRichting = "Zuidoost";
                    }
                    else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                    {
                        mogelijkloop = true;
                    }
                    volgendVakje = volgendVakje.Buren[5];
                }
            }

            mogelijkloop = false;
            volgendVakje = geselecteerd.Buren[6];
            while (mogelijkloop == false)
            {
                if (volgendVakje == null)
                {
                    mogelijkloop = true;
                }
                else
                {
                    if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk is Koning && volgendVakje.schaakstuk.Kleur == "zwart")
                    {
                        mogelijkloop   = true;
                        _slaanRichting = "Zuidwest";
                    }
                    else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                    {
                        mogelijkloop = true;
                    }
                    volgendVakje = volgendVakje.Buren[6];
                }
            }

            mogelijkloop = false;
            volgendVakje = geselecteerd.Buren[3];
            while (mogelijkloop == false)
            {
                if (volgendVakje == null)
                {
                    mogelijkloop = true;
                }
                else
                {
                    if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk is Koning && volgendVakje.schaakstuk.Kleur == "zwart")
                    {
                        mogelijkloop   = true;
                        _slaanRichting = "West";
                    }
                    else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                    {
                        mogelijkloop = true;
                    }
                    volgendVakje = volgendVakje.Buren[3];
                }
            }
            // Reageert op het schaak zetten van de computer
            if (reactie == false)
            {
                // sla waar mogelijk
                if (_koning.Vakje.Buren[0] != null && _koning.Vakje.Buren[0].schaakstuk != null && _koning.Vakje.Buren[0].schaakstuk.Kleur == "wit" && reactie == false)
                {
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[0]);
                    reactie = true;
                }
                else if (_koning.Vakje.Buren[4] != null && _koning.Vakje.Buren[4].schaakstuk != null && _koning.Vakje.Buren[4].schaakstuk.Kleur == "wit" && reactie == false)
                {
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[4]);
                    reactie = true;
                }
                else if (_koning.Vakje.Buren[7] != null && _koning.Vakje.Buren[7].schaakstuk != null && _koning.Vakje.Buren[7].schaakstuk.Kleur == "wit" && reactie == false)
                {
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[7]);
                    reactie = true;
                }
                else if (_koning.Vakje.Buren[3] != null && _koning.Vakje.Buren[3].schaakstuk != null && _koning.Vakje.Buren[3].schaakstuk.Kleur == "wit" && reactie == false)
                {
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[3]);
                    reactie = true;
                }
                else if (_koning.Vakje.Buren[2] != null && _koning.Vakje.Buren[2].schaakstuk != null && _koning.Vakje.Buren[2].schaakstuk.Kleur == "wit" && reactie == false)
                {
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[2]);
                    reactie = true;
                }
                else if (_koning.Vakje.Buren[5] != null && _koning.Vakje.Buren[5].schaakstuk != null && _koning.Vakje.Buren[5].schaakstuk.Kleur == "wit" && reactie == false)
                {
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[5]);
                    reactie = true;
                }
                else if (_koning.Vakje.Buren[1] != null && _koning.Vakje.Buren[1].schaakstuk != null && _koning.Vakje.Buren[1].schaakstuk.Kleur == "wit" && reactie == false)
                {
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[1]);
                    reactie = true;
                }

                // verplaats naar een vakje waar koning niet schaak gezet kan worden
                if (_koning.Vakje.Buren[0] != null && _koning.Vakje.Buren[0].schaakstuk == null && _slaanRichting != "Noord" && _slaanRichting != "Zuid" && reactie == false)
                {
                    _computer.KoningVerplaats = true;
                    reactie = true;
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[0]);
                }
                else if (_koning.Vakje.Buren[4] != null && _koning.Vakje.Buren[4].schaakstuk == null && _slaanRichting != "Noordoost" && _slaanRichting != "Zuidwest" && reactie == false)
                {
                    _computer.KoningVerplaats = true;
                    reactie = true;
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[4]);
                }
                else if (_koning.Vakje.Buren[7] != null && _koning.Vakje.Buren[7].schaakstuk == null && _slaanRichting != "Noordwest" && _slaanRichting != "Zuidoost" && reactie == false)
                {
                    _computer.KoningVerplaats = true;
                    reactie = true;
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[7]);
                }
                else if (_koning.Vakje.Buren[3] != null && _koning.Vakje.Buren[3].schaakstuk == null && _slaanRichting != "West" && _slaanRichting != "Oost" && reactie == false)
                {
                    _computer.KoningVerplaats = true;
                    reactie = true;
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[3]);
                }
                else if (_koning.Vakje.Buren[1] != null && _koning.Vakje.Buren[1].schaakstuk == null && _slaanRichting != "Oost" && _slaanRichting != "West" && reactie == false)
                {
                    _computer.KoningVerplaats = true;
                    reactie = true;
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[1]);
                }
                else if (_koning.Vakje.Buren[2] != null && _koning.Vakje.Buren[2].schaakstuk == null && _slaanRichting != "Zuid" && _slaanRichting != "Noord" && reactie == false)
                {
                    _computer.KoningVerplaats = true;
                    reactie = true;
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[2]);
                }
                else if (_koning.Vakje.Buren[5] != null && _koning.Vakje.Buren[5].schaakstuk == null && _slaanRichting != "Zuidoost" && _slaanRichting != "Noordwest" && reactie == false)
                {
                    _computer.KoningVerplaats = true;
                    reactie = true;
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[5]);
                }
                else if (_koning.Vakje.Buren[6] != null && _koning.Vakje.Buren[6].schaakstuk == null && _slaanRichting != "Zuidwest" && _slaanRichting != "Noordoost" && reactie == false)
                {
                    _computer.KoningVerplaats = true;
                    reactie = true;
                    _computer.voerZetUit(_koning.Vakje, _koning.Vakje.Buren[6]);
                }

                if (reactie == true)
                {
                    // voorkomt dat computer twee zetten achter elkaar doet
                    _computer.ZojuistSchaak = true;
                }
                else if (reactie == false)
                {
                    controleerBurenSchaak(_slaanRichting, waarVanDaan);
                }
            }
        }
        private void voorkomStackOverflow()
        {
            bool verplaatst = false;
            int  teller     = 0;

            // voorkom een stack overflow door een domme zet te doen
            while (verplaatst == false)
            {
                Vakje      vakje      = _computer.VerplaatsingsLijst[teller];
                Schaakstuk schaakstuk = _computer.VerplaatsingsLijst[teller].schaakstuk;
                if (schaakstuk is Pion && vakje.Buren[2] != null && vakje.Buren[2].schaakstuk == null)
                {
                    _computer.voerZetUit(vakje, vakje.Buren[2]);
                    verplaatst = true;
                }
                else if (schaakstuk is Paard)
                {
                    if (vakje.Buren[4] != null && vakje.Buren[4].schaakstuk == null)
                    {
                        _computer.voerZetUit(vakje, vakje.Buren[4]);
                        verplaatst = true;
                    }
                    else if (vakje.Buren[7] != null && vakje.Buren[7].schaakstuk == null)
                    {
                        _computer.voerZetUit(vakje, vakje.Buren[7]);
                        verplaatst = true;
                    }
                    else if (vakje.Buren[5] != null && vakje.Buren[5].schaakstuk == null)
                    {
                        _computer.voerZetUit(vakje, vakje.Buren[5]);
                        verplaatst = true;
                    }
                    else if (vakje.Buren[6] != null && vakje.Buren[6].schaakstuk == null)
                    {
                        _computer.voerZetUit(vakje, vakje.Buren[6]);
                        verplaatst = true;
                    }
                    else if (vakje.Buren[3].Buren[0] != null && vakje.Buren[3].Buren[0].schaakstuk == null)
                    {
                        _computer.voerZetUit(vakje, vakje.Buren[3].Buren[0]);
                        verplaatst = true;
                    }
                    else if (vakje.Buren[3].Buren[2] != null && vakje.Buren[3].Buren[2].schaakstuk == null)
                    {
                        _computer.voerZetUit(vakje, vakje.Buren[3].Buren[2]);
                        verplaatst = true;
                    }
                    else if (vakje.Buren[1].Buren[0] != null && vakje.Buren[1].Buren[0].schaakstuk == null)
                    {
                        _computer.voerZetUit(vakje, vakje.Buren[1].Buren[0]);
                        verplaatst = true;
                    }
                    else if (vakje.Buren[1].Buren[2] != null && vakje.Buren[1].Buren[2].schaakstuk == null)
                    {
                        _computer.voerZetUit(vakje, vakje.Buren[1].Buren[2]);
                        verplaatst = true;
                    }
                }
                if (teller < _computer.VerplaatsingsLijst.Count)
                {
                    teller++;
                }
                else
                {
                    verplaatst = true;
                    verplaatsNieuwStuk();
                }
            }
        }
 public abstract void kanStukSlaan(Algoritme algoritme, Vakje geselecteerdStuk);
        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();
                    }
                }
            }
        }
Exemple #13
0
        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;
                }
            }
        }
Exemple #14
0
        public override void kanStukSlaan(Algoritme algoritme, Vakje geselecteerdStuk)
        {
            // Deze methode kijkt vanuit de computer of er een dame geslagen kan worden.
            if (geselecteerdStuk.schaakstuk.Kleur == "zwart")
            {
                // Kijkt of er noordwest geslagen kan worden
                bool  mogelijkloop = false;
                Vakje volgendVakje = geselecteerdStuk.Buren[7];
                while (mogelijkloop == false)
                {
                    if (volgendVakje == null)
                    {
                        mogelijkloop = true;
                    }
                    else
                    {
                        if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                        {
                            mogelijkloop = true;
                            algoritme.slaanmogelijkheden.Add(volgendVakje);
                            algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                        }
                        else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "zwart")
                        {
                            mogelijkloop = true;
                        }
                        volgendVakje = volgendVakje.Buren[7];
                    }
                }

                // Kijkt of er noordoost geslagen kan worden
                mogelijkloop = false;
                volgendVakje = geselecteerdStuk.Buren[4];
                while (mogelijkloop == false)
                {
                    if (volgendVakje == null)
                    {
                        mogelijkloop = true;
                    }
                    else
                    {
                        if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                        {
                            mogelijkloop = true;
                            algoritme.slaanmogelijkheden.Add(volgendVakje);
                            algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                        }
                        else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "zwart")
                        {
                            mogelijkloop = true;
                        }
                        volgendVakje = volgendVakje.Buren[4];
                    }
                }

                // Kijkt of er Zuidwest geslagen kan worden
                mogelijkloop = false;
                volgendVakje = geselecteerdStuk.Buren[6];
                while (mogelijkloop == false)
                {
                    if (volgendVakje == null)
                    {
                        mogelijkloop = true;
                    }
                    else
                    {
                        if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                        {
                            mogelijkloop = true;
                            algoritme.slaanmogelijkheden.Add(volgendVakje);
                            algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                        }
                        else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "zwart")
                        {
                            mogelijkloop = true;
                        }
                        volgendVakje = volgendVakje.Buren[6];
                    }
                }

                // Kijkt of er Zuidoost geslagen kan worden
                mogelijkloop = false;
                volgendVakje = geselecteerdStuk.Buren[5];
                while (mogelijkloop == false)
                {
                    if (volgendVakje == null)
                    {
                        mogelijkloop = true;
                    }
                    else
                    {
                        if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                        {
                            mogelijkloop = true;
                            algoritme.slaanmogelijkheden.Add(volgendVakje);
                            algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                        }
                        else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "zwart")
                        {
                            mogelijkloop = true;
                        }
                        volgendVakje = volgendVakje.Buren[5];
                    }
                }

                // Kijkt of er Noord geslagen kan worden
                mogelijkloop = false;
                volgendVakje = geselecteerdStuk.Buren[0];
                while (mogelijkloop == false)
                {
                    if (volgendVakje == null)
                    {
                        mogelijkloop = true;
                    }
                    else
                    {
                        if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                        {
                            mogelijkloop = true;
                            algoritme.slaanmogelijkheden.Add(volgendVakje);
                            algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                        }
                        else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "zwart")
                        {
                            mogelijkloop = true;
                        }
                        volgendVakje = volgendVakje.Buren[0];
                    }
                }

                // Kijkt of er West geslagen kan worden
                mogelijkloop = false;
                volgendVakje = geselecteerdStuk.Buren[3];
                while (mogelijkloop == false)
                {
                    if (volgendVakje == null)
                    {
                        mogelijkloop = true;
                    }
                    else
                    {
                        if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                        {
                            mogelijkloop = true;
                            algoritme.slaanmogelijkheden.Add(volgendVakje);
                            algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                        }
                        else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "zwart")
                        {
                            mogelijkloop = true;
                        }
                        volgendVakje = volgendVakje.Buren[3];
                    }
                }

                // Kijkt of er Zuid geslagen kan worden
                mogelijkloop = false;
                volgendVakje = geselecteerdStuk.Buren[2];
                while (mogelijkloop == false)
                {
                    if (volgendVakje == null)
                    {
                        mogelijkloop = true;
                    }
                    else
                    {
                        if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                        {
                            mogelijkloop = true;
                            algoritme.slaanmogelijkheden.Add(volgendVakje);
                            algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                        }
                        else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "zwart")
                        {
                            mogelijkloop = true;
                        }
                        volgendVakje = volgendVakje.Buren[2];
                    }
                }


                // Kijkt of er Oost geslagen kan worden
                mogelijkloop = false;
                volgendVakje = geselecteerdStuk.Buren[1];
                while (mogelijkloop == false)
                {
                    if (volgendVakje == null)
                    {
                        mogelijkloop = true;
                    }
                    else
                    {
                        if (volgendVakje != null && volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "wit")
                        {
                            mogelijkloop = true;
                            algoritme.slaanmogelijkheden.Add(volgendVakje);
                            algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                        }
                        else if (volgendVakje.schaakstuk != null && volgendVakje.schaakstuk.Kleur == "zwart")
                        {
                            mogelijkloop = true;
                        }
                        volgendVakje = volgendVakje.Buren[1];
                    }
                }
            }
        }
Exemple #15
0
        public void Rokeren(Vakje vakjeToren, Vakje vakjeKoning, Mens speler, Spel spel)
        {
            Vakje      toren1     = vakjeToren;
            Vakje      koning1    = vakjeKoning;
            bool       rokeerwest = true;
            Schaakstuk tempToren  = vakjeToren.schaakstuk;
            Vakje      _Randoost;
            Vakje      vorige      = vakjeKoning;
            bool       checkschaak = false;

            // Rokeren voor klassieke schaakvariant
            if (spel.Variant == "Klassiek")
            {
                _wilRokeren = false;
                bool magrokeren = true;
                if (vakjeToren.Buren[1] == null) // Als het gaat om de rechter toren.
                {
                    //check of rokeren mogelijk is door te kijken of alle vakjes leeg zijn, en de koning en toren nog geen zet gedaan hebben.
                    if (_eersteZet == false && (vakjeToren.schaakstuk as Toren)._eersteZet == false && vakjeToren.Buren[3].schaakstuk == null && vakjeToren.Buren[3].Buren[3].schaakstuk == null)
                    {
                        while (vorige != null)
                        {
                            //voor elk vakje van de koning tot en met de toren moet gekeken worden dat dit vakje niet geraakt kan worden.
                            checkschaak = spel.schaakbord.CheckSchaak(vorige, speler.koning.Kleur);
                            if (checkschaak == true)
                            {
                                magrokeren = false;
                            }
                            vorige = vorige.Buren[1];
                        }

                        if (magrokeren == true)
                        {
                            // popup voor rokeren
                            Rokerenmelding _Rokerenmelding = new Rokerenmelding(this);
                            _Rokerenmelding.ShowDialog();
                        }
                    }

                    if (_wilRokeren == true)
                    {
                        this.Vakje = vakjeKoning.Buren[1].Buren[1];
                        vakjeKoning.Buren[1].Buren[1].schaakstuk = this;

                        tempToren.Vakje = vakjeKoning.Buren[1];
                        vakjeKoning.Buren[1].schaakstuk = tempToren;

                        vakjeKoning.schaakstuk = null;
                        vakjeToren.schaakstuk  = null;

                        this.Vakje.Pbox.update();
                        this.Vakje.Buren[3].Buren[3].Pbox.update();
                        this.Vakje.Buren[3].Pbox.update();
                        this.Vakje.Buren[1].Pbox.update();

                        speler.ValideZet = true;
                        _eersteZet       = true;

                        if (spel.SpelMode == "Singleplayer")
                        {
                            spel.ComputerSpeler.Zet(tempToren.Vakje);  // laat de computer op de mens reageren
                            spel.VeranderSpeler();
                        }
                    }
                }

                else if (vakjeToren.Buren[3] == null) //Als het gaat om de linker toren.
                {
                    //check of rokeren mogelijk is door te kijken of alle vakjes leeg zijn, en de koning en toren nog geen zet gedaan hebben.
                    if (_eersteZet == false && (vakjeToren.schaakstuk as Toren)._eersteZet == false && vakjeToren.Buren[1].schaakstuk == null && vakjeToren.Buren[1].Buren[1].schaakstuk == null && vakjeToren.Buren[1].Buren[1].Buren[1].schaakstuk == null)
                    {
                        while (vorige != null)
                        {
                            //voor elk vakje van de koning tot en met de toren moet gekeken worden dat dit vakje niet geraakt kan worden.
                            checkschaak = spel.schaakbord.CheckSchaak(vorige, speler.koning.Kleur);
                            if (checkschaak == true)
                            {
                                magrokeren = false;
                            }
                            vorige = vorige.Buren[3];
                        }

                        if (magrokeren == true)
                        {
                            // popup voor rokeren
                            Rokerenmelding _Rokerenmelding = new Rokerenmelding(this);
                            _Rokerenmelding.ShowDialog();
                            spel.VeranderSpeler();
                        }
                    }
                    if (_wilRokeren == true)
                    {
                        this.Vakje = vakjeKoning.Buren[3].Buren[3];
                        vakjeKoning.Buren[3].Buren[3].schaakstuk = this;

                        tempToren.Vakje = vakjeKoning.Buren[3];
                        vakjeKoning.Buren[3].schaakstuk = tempToren;

                        vakjeToren.Buren[1].schaakstuk = null;
                        vakjeKoning.schaakstuk         = null;
                        vakjeToren.schaakstuk          = null;

                        this.Vakje.Pbox.update();
                        this.Vakje.Buren[3].Buren[3].Pbox.update();
                        this.Vakje.Buren[3].Pbox.update();
                        this.Vakje.Buren[1].Pbox.update();
                        this.Vakje.Buren[1].Buren[1].Pbox.update();

                        speler.ValideZet = true;
                        _eersteZet       = true;
                    }
                }
            }
            // Rokeren voor 960 schaakvariant
            else if (spel.Variant == "Chess960")
            {
                if (_eersteZet == false && (vakjeToren.schaakstuk as Toren)._eersteZet == false)
                {
                    rokeerwest = false;
                    bool  vakjesleeg         = false;
                    int   aantalplaatsenwest = 0;                   // aantal plaatsen tussen koning en linker toren
                    int   aantalplaatsenoost = 0;                   // aantal plaatsen tussen koning en rechter toren
                    int   i           = 0;
                    int   west        = 0;
                    Vakje _vorigWest  = vakjeKoning.Buren[3];
                    Vakje _vorigVakje = vakjeKoning.Buren[3];

                    while (_vorigWest != null)                      //bepaald locatie van de koning a.d.v. het aantal buren links
                    {
                        west++;
                        if (_vorigWest.schaakstuk is Toren)
                        {
                            aantalplaatsenwest = west;
                        }
                        if (_vorigWest.Buren[3] != null)
                        {
                            _vorigWest = _vorigWest.Buren[3];
                        }
                        else
                        {
                            break;
                        }
                    }
                    Vakje _randWest  = _vorigWest;
                    Vakje _vorigOost = _randWest;
                    _Randoost = _randWest.Buren[1].Buren[1].Buren[1].Buren[1].Buren[1].Buren[1].Buren[1];
                    Vakje koningnieuw_W = _randWest.Buren[1].Buren[1];
                    Vakje torennieuw_W  = _randWest.Buren[1].Buren[1].Buren[1];
                    Vakje koningnieuw_O = _Randoost.Buren[3];
                    Vakje torennieuw_O  = _Randoost.Buren[3].Buren[3];
                    // voor west

                    vakjesleeg = true;

                    if (vakjeKoning.Buren[3].schaakstuk is Toren)
                    {
                        if (vakjeKoning.Buren[3] == vakjeToren)
                        {
                            aantalplaatsenwest = 1;
                            rokeerwest         = true;

                            while (i <= aantalplaatsenwest)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[3];
                                    if (koningnieuw_W.schaakstuk == null || koningnieuw_W == vakjeKoning || koningnieuw_W == vakjeToren)
                                    {
                                        if (torennieuw_W.schaakstuk == null || torennieuw_W == vakjeKoning || torennieuw_W == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }

                                i++;
                            }
                            _magRokeren = true;
                        }
                    }
                    else if (vakjeKoning.Buren[3].Buren[3].schaakstuk is Toren)
                    {
                        if (vakjeKoning.Buren[3].Buren[3] == vakjeToren)
                        {
                            aantalplaatsenwest = 2;
                            rokeerwest         = true;
                            while (i < aantalplaatsenwest - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[3];
                                    if (koningnieuw_W.schaakstuk == null || koningnieuw_W == vakjeKoning || koningnieuw_W == vakjeToren)
                                    {
                                        if (torennieuw_W.schaakstuk == null || torennieuw_W == vakjeKoning || torennieuw_W == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                    }
                    else if (vakjeKoning.Buren[3].Buren[3].Buren[3].schaakstuk is Toren)
                    {
                        if (vakjeKoning.Buren[3].Buren[3].Buren[3] == vakjeToren)
                        {
                            rokeerwest         = true;
                            aantalplaatsenwest = 3;
                            while (i < aantalplaatsenwest - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[3];
                                    if (koningnieuw_W.schaakstuk == null || koningnieuw_W == vakjeKoning || koningnieuw_W == vakjeToren)
                                    {
                                        if (torennieuw_W.schaakstuk == null || torennieuw_W == vakjeKoning || torennieuw_W == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                    }
                    else if (vakjeKoning.Buren[3].Buren[3].Buren[3].Buren[3].schaakstuk is Toren)
                    {
                        if (vakjeKoning.Buren[3].Buren[3].Buren[3].Buren[3] == vakjeToren)
                        {
                            rokeerwest         = true;
                            aantalplaatsenwest = 4;
                            while (i < aantalplaatsenwest - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[3];
                                    if (koningnieuw_W.schaakstuk == null || koningnieuw_W == vakjeKoning || koningnieuw_W == vakjeToren)
                                    {
                                        if (torennieuw_W.schaakstuk == null || torennieuw_W == vakjeKoning || torennieuw_W == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                    }
                    else if (vakjeKoning.Buren[3].Buren[3].Buren[3].Buren[3].Buren[3].schaakstuk is Toren)
                    {
                        if (vakjeKoning.Buren[3].Buren[3].Buren[3].Buren[3].Buren[3] == vakjeToren)
                        {
                            rokeerwest         = true;
                            aantalplaatsenwest = 5;
                            while (i < aantalplaatsenwest - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[3];
                                    if (koningnieuw_W.schaakstuk == null || koningnieuw_W == vakjeKoning || koningnieuw_W == vakjeToren)
                                    {
                                        if (torennieuw_W.schaakstuk == null || torennieuw_W == vakjeKoning || torennieuw_W == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                    }
                    else if (vakjeKoning.Buren[3].Buren[3].Buren[3].Buren[3].Buren[3].Buren[3].schaakstuk is Toren)
                    {
                        if (vakjeKoning.Buren[3].Buren[3].Buren[3].Buren[3].Buren[3].Buren[3] == vakjeToren)
                        {
                            rokeerwest         = true;
                            aantalplaatsenwest = 6;
                            while (i < aantalplaatsenwest - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[3];
                                    if (koningnieuw_W.schaakstuk == null || koningnieuw_W == vakjeKoning || koningnieuw_W == vakjeToren)
                                    {
                                        if (torennieuw_W.schaakstuk == null || torennieuw_W == vakjeKoning || torennieuw_W == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                    }
                    else if (vakjeKoning.Buren[3].Buren[3].Buren[3].Buren[3].Buren[3].Buren[3].Buren[3].schaakstuk is Toren)
                    {
                        if (vakjeKoning.Buren[3].Buren[3].Buren[3].Buren[3].Buren[3].Buren[3].Buren[3] == vakjeToren)
                        {
                            rokeerwest         = true;
                            aantalplaatsenwest = 7;
                            while (i < aantalplaatsenwest - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[3];
                                    if (koningnieuw_W.schaakstuk == null || koningnieuw_W == vakjeKoning || koningnieuw_W == vakjeToren)
                                    {
                                        if (torennieuw_W.schaakstuk == null || torennieuw_W == vakjeKoning || torennieuw_W == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                    }

                    if (rokeerwest == false)
                    {
                        _vorigVakje = vakjeKoning.Buren[1];
                        // voor oost
                        vakjesleeg = true;
                        if (vakjeKoning.Buren[1] == vakjeToren)
                        {
                            rokeerwest  = false;
                            _magRokeren = true;
                            while (i <= aantalplaatsenoost)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[1];
                                    if (koningnieuw_O.schaakstuk == null || koningnieuw_O.schaakstuk is Koning || koningnieuw_O == vakjeToren)
                                    {
                                        if (torennieuw_O.schaakstuk == null || torennieuw_O.schaakstuk is Koning || torennieuw_O == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                        else if (vakjeKoning.Buren[1].Buren[1] == vakjeToren)
                        {
                            rokeerwest         = false;
                            aantalplaatsenoost = 2;
                            while (i < aantalplaatsenoost - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[1];
                                    if (koningnieuw_O.schaakstuk == null || koningnieuw_O.schaakstuk is Koning || koningnieuw_O == vakjeToren)
                                    {
                                        if (torennieuw_O.schaakstuk == null || torennieuw_O.schaakstuk is Koning || torennieuw_O == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                        else if (vakjeKoning.Buren[1].Buren[1].Buren[1] == vakjeToren)
                        {
                            rokeerwest         = false;
                            aantalplaatsenoost = 3;
                            while (i < aantalplaatsenoost - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[1];
                                    if (koningnieuw_O.schaakstuk == null || koningnieuw_O.schaakstuk is Koning || koningnieuw_O == vakjeToren)
                                    {
                                        if (torennieuw_O.schaakstuk == null || torennieuw_O.schaakstuk is Koning || torennieuw_O == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }

                            _magRokeren = true;
                        }
                        else if (vakjeKoning.Buren[1].Buren[1].Buren[1].Buren[1] == vakjeToren)
                        {
                            rokeerwest         = false;
                            aantalplaatsenoost = 4;
                            while (i < aantalplaatsenoost - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[1];
                                    if (koningnieuw_O.schaakstuk == null || koningnieuw_O.schaakstuk is Koning || koningnieuw_O == vakjeToren)
                                    {
                                        if (torennieuw_O.schaakstuk == null || torennieuw_O.schaakstuk is Koning || torennieuw_O == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                        else if (vakjeKoning.Buren[1].Buren[1].Buren[1].Buren[1].Buren[1] == vakjeToren)
                        {
                            rokeerwest         = false;
                            aantalplaatsenoost = 5;
                            while (i < aantalplaatsenoost - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[1];
                                    if (koningnieuw_O.schaakstuk == null || koningnieuw_O.schaakstuk is Koning || koningnieuw_O == vakjeToren)
                                    {
                                        if (torennieuw_O.schaakstuk == null || torennieuw_O.schaakstuk is Koning || torennieuw_O == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                        else if (vakjeKoning.Buren[1].Buren[1].Buren[1].Buren[1].Buren[1].Buren[1] == vakjeToren)
                        {
                            rokeerwest         = false;
                            aantalplaatsenoost = 6;
                            while (i < aantalplaatsenoost - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[1];
                                    if (koningnieuw_O.schaakstuk == null || koningnieuw_O.schaakstuk is Koning || koningnieuw_O == vakjeToren)
                                    {
                                        if (torennieuw_O.schaakstuk == null || torennieuw_O.schaakstuk is Koning || torennieuw_O == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                        else if (vakjeKoning.Buren[1].Buren[1].Buren[1].Buren[1].Buren[1].Buren[1].Buren[1] == vakjeToren)
                        {
                            rokeerwest         = false;
                            aantalplaatsenoost = 7;
                            while (i < aantalplaatsenoost - 1)
                            {
                                if (_vorigVakje.schaakstuk == null || _vorigVakje.schaakstuk is Toren)
                                {
                                    _vorigVakje = _vorigVakje.Buren[1];
                                    if (koningnieuw_O.schaakstuk == null || koningnieuw_O.schaakstuk is Koning || koningnieuw_O == vakjeToren)
                                    {
                                        if (torennieuw_O.schaakstuk == null || torennieuw_O.schaakstuk is Koning || torennieuw_O == vakjeToren)
                                        {
                                            vakjesleeg = true;
                                        }
                                        else
                                        {
                                            vakjesleeg = false;
                                        }
                                    }
                                    else
                                    {
                                        vakjesleeg = false;
                                    }
                                }
                                else
                                {
                                    vakjesleeg = false;
                                }
                                i++;
                            }
                            _magRokeren = true;
                        }
                    }


                    if (_magRokeren == true)
                    {
                        if (vakjesleeg == true)
                        {
                            Rokerenmelding _Rokerenmelding = new Rokerenmelding(this);
                            _Rokerenmelding.ShowDialog();
                        }
                    }

                    if (_wilRokeren == true && _magRokeren == true)
                    {
                        if (vakjesleeg == true)
                        {
                            // ROKEREN NAAR OOST KANT
                            if (rokeerwest == false)
                            {
                                Vakje      _torenOud  = vakjeToren;
                                Vakje      _koningOud = vakjeKoning;
                                Schaakstuk Tempkoning = vakjeKoning.schaakstuk;
                                _Randoost.Buren[3].Buren[3].schaakstuk = tempToren;
                                _Randoost.Buren[3].schaakstuk          = Tempkoning;
                                _Randoost.Buren[3].Pbox.update();
                                _Randoost.Buren[3].Pbox.update();
                                _koningOud.schaakstuk = null;
                                _torenOud.schaakstuk  = null;
                                vakjeToren.schaakstuk = null;
                                this.Vakje.Pbox.update();
                                vakjeToren.Pbox.update();
                                _torenOud.Pbox.update();
                                _Randoost.Buren[3].schaakstuk = Tempkoning;
                                _Randoost.Buren[3].Pbox.update();
                                _Randoost.Buren[3].Buren[3].schaakstuk = tempToren;
                                _Randoost.Buren[3].Buren[3].Pbox.update();
                                _eersteZet = true;
                            }
                            else // ROKEREN NAAR WEST KANT
                            {
                                Vakje      _torenOud  = vakjeToren;
                                Vakje      _koningOud = vakjeKoning;
                                Schaakstuk Tempkoning = vakjeKoning.schaakstuk;
                                _randWest.Buren[1].Buren[1].Buren[1].schaakstuk = tempToren;
                                _randWest.Buren[1].Buren[1].schaakstuk          = Tempkoning;
                                _randWest.Buren[1].Pbox.update();
                                _randWest.Buren[1].Buren[1].schaakstuk = null;
                                _randWest.Buren[1].Buren[1].Pbox.update();
                                _koningOud.schaakstuk = null;
                                _torenOud.schaakstuk  = null;
                                vakjeToren.schaakstuk = null;
                                this.Vakje.Pbox.update();
                                vakjeToren.Pbox.update();
                                _torenOud.Pbox.update();
                                _randWest.Buren[1].Buren[1].schaakstuk = Tempkoning;
                                _randWest.Buren[1].Buren[1].Pbox.update();
                                _randWest.Buren[1].Buren[1].Buren[1].schaakstuk = tempToren;
                                _randWest.Buren[1].Buren[1].Buren[1].Pbox.update();
                                _eersteZet = true;
                            }
                        }

                        speler.ValideZet = true;
                        _eersteZet       = true;
                    }
                }
            }
        }
Exemple #16
0
        public override void kanStukSlaan(Algoritme algoritme, Vakje geselecteerdStuk)
        {
            // Deze methode kijkt vanuit de computer of er een koning geslagen kan worden.
            if (geselecteerdStuk.schaakstuk.Kleur == "zwart")
            {
                Vakje geselecteerdVak = geselecteerdStuk;

                // noord
                if (geselecteerdVak.Buren[7] != null && geselecteerdVak.Buren[7].schaakstuk != null && geselecteerdVak.Buren[7].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[7]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }
                else if (geselecteerdVak.Buren[0] != null && geselecteerdVak.Buren[0].schaakstuk != null && geselecteerdVak.Buren[0].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[0]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }
                else if (geselecteerdVak.Buren[4] != null && geselecteerdVak.Buren[4].schaakstuk != null && geselecteerdVak.Buren[4].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[4]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }

                // west
                else if (geselecteerdVak.Buren[3].Buren[0] != null && geselecteerdVak.Buren[3].Buren[0].schaakstuk != null && geselecteerdVak.Buren[3].Buren[0].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[3].Buren[0]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }
                else if (geselecteerdVak.Buren[3] != null && geselecteerdVak.Buren[3].schaakstuk != null && geselecteerdVak.Buren[3].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[3]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }
                else if (geselecteerdVak.Buren[3].Buren[2] != null && geselecteerdVak.Buren[3].Buren[2].schaakstuk != null && geselecteerdVak.Buren[3].Buren[2].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[3].Buren[2]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }

                // zuid
                else if (geselecteerdVak.Buren[6] != null && geselecteerdVak.Buren[6].schaakstuk != null && geselecteerdVak.Buren[6].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[6]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }
                else if (geselecteerdVak.Buren[2] != null && geselecteerdVak.Buren[2].schaakstuk != null && geselecteerdVak.Buren[2].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[2]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }
                else if (geselecteerdVak.Buren[5] != null && geselecteerdVak.Buren[5].schaakstuk != null && geselecteerdVak.Buren[5].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[5]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }

                // oost
                else if (geselecteerdVak.Buren[1].Buren[0] != null && geselecteerdVak.Buren[1].Buren[0].schaakstuk != null && geselecteerdVak.Buren[1].Buren[0].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[1].Buren[0]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }
                else if (geselecteerdVak.Buren[1] != null && geselecteerdVak.Buren[1].schaakstuk != null && geselecteerdVak.Buren[1].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[1]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }
                else if (geselecteerdVak.Buren[1].Buren[2] != null && geselecteerdVak.Buren[1].Buren[2].schaakstuk != null && geselecteerdVak.Buren[1].Buren[2].schaakstuk.Kleur == "wit")
                {
                    algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[1].Buren[2]);
                    algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                }
                else
                {
                }
            }
        }
 public abstract void Verplaats(Vakje nieuwVakje, Vakje selected, Spel spel);