}     // Schaakstuk afbeeldingen hierin opslaan als image.

        // Methodes
        public void beweegSchaakStuk(veld eersteAangevinkteVeld, veld tweedeAangevinkteVeld)  // Sla schaakstuk
        {
            KoningGeslagenWinnaar(tweedeAangevinkteVeld);                                     // Als koning geslagen wordt, laat dan een popup zien en sluit het spel.
            tweedeAangevinkteVeld._Schaakstuk            = eersteAangevinkteVeld._Schaakstuk; // vervang de schaakstuk met de eerst aangeklikte schaakstuk.
            eersteAangevinkteVeld._Schaakstuk            = null;                              //  verwijder de schaakstuk waar je als eerst op hebt geklikt.
            eersteAangevinkteVeld._VakjePictureBox.Image = null;                              //  verwijder de schaakstuk afbeelding waar je als eerst op hebt geklikt van het veld.
        }
 private void KoningGeslagenWinnaar(veld tweedeAangevinkteVeld) // Hiermee sluti die de programma als je hebt gewonnen.
 {
     if (tweedeAangevinkteVeld._Schaakstuk != null)
     {
         if (tweedeAangevinkteVeld._Schaakstuk is Koning)                   // als je op een leegvakje klikt, kan je geen get type doen want die schaakstuk bestaat niet.
         {
             System.Windows.Forms.MessageBox.Show("Er is een winnaar !!!"); // Weergeef een popup
             Application.Exit();                                            // Sluit spel
         }
     }
 }
 private void MaakSchaakBord() // hier wordt de schaakbord gemaakt met vakjes.
 {
     //Hier wordt er gewerkt met een dubbele forloop om de bord te maken.
     for (int i = 0; i < myArray.GetLength(0); i++)
     {
         for (int j = 0; j < myArray.GetLength(1); j++)
         {
             CheckVorigeKleur = !CheckVorigeKleur;          // Hier wissel je de boolean om, zodat het veld om en om een andere kleur als tile zet.
             myArray[i, j]    = new veld(CheckVorigeKleur); // Hier maak worden de vakjes aangemaakt, en met die check bepaal je in de constructor van veld welke afbeelding die pakt.
             // this.Controls.Add(myArray[i, j]._VakjePictureBox); // Hiermee worden de vakjes ook echt op het form gezet.
         }
         CheckVorigeKleur = !CheckVorigeKleur; // Als een nieuwe regel wordt gestart dan begint het met een nieuwe vakje kleur.
     }
 }
        // Events
        private void PictureBox1_MouseDown(object sender, MouseEventArgs e) // Selecteer vakjes.
        {
            veld aangeklikteVeld;

            if (e.Button == MouseButtons.Left)                                          // Als je op de linkermuis knop hebt geklikt.
            {
                int x = e.X;                                                            // locatie van muis op de picturebox waar alles naartoe wordt getekend.
                int y = e.Y;                                                            // locatie van muis op de picturebox waar alles naartoe wordt getekend.
                int i = y / 100;                                                        // BV : 250 / 100 = 2.5 - afgerond is 2. 2 is in de array derde rij.
                int j = x / 100;                                                        // BV : 250 / 100 = 2.5 - afgerond is 2. 2 is in de array derde kolom.
                aangeklikteVeld = myArray[i, j];                                        // dus drie vakjes naar beneden en drie naar rechts.

                if (aangeklikteVeld._Schaakstuk != null && EersteOfTweedeKlik == false) // alleen als er een object is en check op false staat kan het volgende worden uitgevoerd
                {
                    eersteAangevinkteVeld = aangeklikteVeld;                            // het vakje waar je op clickt pakt die, dus heel de instantie.
                    EersteOfTweedeKlik    = true;                                       // zet het dan op true zodat de volgende x dat je clickt wat anders wordt uitgevoerd.
                }
                else if (eersteAangevinkteVeld == aangeklikteVeld)                      // als je klikt op de instantie van de if hierboven.
                {
                    EersteOfTweedeKlik = false;                                         // zet op false, zo deselecteer je een schaakstuk.
                }
                else if (EersteOfTweedeKlik == true && eersteAangevinkteVeld._Schaakstuk.kleurSchaakstuk == "zwart" && Speler._SpelerBeurt == true)
                {
                    if (eersteAangevinkteVeld._Schaakstuk != null)
                    {
                        tweedeAangevinkteVeld = aangeklikteVeld;                                                     // het vakje waar je op clickt pakt die, dus heel de instantie.
                        eersteAangevinkteVeld._Schaakstuk.CheckBeweeg(eersteAangevinkteVeld, tweedeAangevinkteVeld); // this is instantie van deze class. Want je hebt hier op gelickt. Die stuurt die naar beweeg methode.
                        Speler._SpelerBeurt = false;
                        EersteOfTweedeKlik  = false;                                                                 // zet het dan op true zodat de volgende x dat je clickt wat anders wordt uitgevoerd.
                    }
                }
                else if (EersteOfTweedeKlik == true && eersteAangevinkteVeld._Schaakstuk.kleurSchaakstuk == "wit" && Speler._SpelerBeurt == false)
                {
                    if (eersteAangevinkteVeld._Schaakstuk != null)
                    {
                        tweedeAangevinkteVeld = aangeklikteVeld;                                                     // het vakje waar je op clickt pakt die, dus heel de instantie.
                        eersteAangevinkteVeld._Schaakstuk.CheckBeweeg(eersteAangevinkteVeld, tweedeAangevinkteVeld); // this is instantie van deze class. Want je hebt hier op gelickt. Die stuurt die naar beweeg methode.                                                                    //if schaakstuk is PrintControllerWithStatusDialog and player 1 == true
                        Speler._SpelerBeurt = true;
                        EersteOfTweedeKlik  = false;                                                                 // zet het dan op true zodat de volgende x dat je clickt wat anders wordt uitgevoerd.
                    }
                }
                PictureBoxImageSetOpSchaakstukAfbeelding(); // Schaakstuk staat al op een nieuwe positie, en foto is verwijderd. Met deze methode zet je de image van de picturebox op die van de schaakstuk.
                WeergeefSchaakBord();                       // Schaakstuk wordt op een nieuwe positie in de array gezet, en moet daarna opnieuw weergeven worden.
            }
        }
Beispiel #5
0
 public override void CheckBeweeg(veld eerstAangeklikteVeld, veld tweedeAangevinkteVeld)                                                             // Bij de tweede klik krijg instantie mee van de eerst aangeklikte veld.
 {
     for (int beweegRichting = 0; beweegRichting < 8; beweegRichting++)                                                                              // Hiermee wordt er bepaald welke richtingen een koning op kan gaan, namelijk alle richtingen.
     {
         if (eerstAangeklikteVeld.BuurVakje[beweegRichting] != null && eerstAangeklikteVeld.BuurVakje[beweegRichting].Equals(tweedeAangevinkteVeld)) // Als het vakje wel bestaat, en de buur komt overeen met de tweede klik.
         {
             if (eerstAangeklikteVeld.BuurVakje[beweegRichting]._Schaakstuk == null)                                                                 // Als de buur van een richting geen schaakstuk heeft.
             {
                 beweegSchaakStuk(eerstAangeklikteVeld, tweedeAangevinkteVeld);                                                                      // Beweeg Schaakstuk.
             }
             else // Als er wel een schaakstuk op de buurvakje staat.
             {
                 if (eerstAangeklikteVeld.BuurVakje[beweegRichting]._Schaakstuk.kleurSchaakstuk != kleurSchaakstuk) // Als de schaakstuk van de buurvakje niet het zelfde is als de kleur van deze instantie.
                 {
                     beweegSchaakStuk(eerstAangeklikteVeld, tweedeAangevinkteVeld);                                 // Beweeg Schaakstuk.
                 }// stuur de buur en check of het overeenkomt met de tweede klik.
             }
             break; // Break de loop zodat die niet verder gaat zoeken, want dan kan die errors geven.
         }
     }
 } // Check om te kunnen bewegen
 public override void CheckBeweeg(veld eerstAangeklikteVeld, veld tweedeAangevinkteVeld) // Bij de tweede klik krijg instantie mee van de eerst aangeklikte veld.
 {
     for (int beweegRichting = 0; beweegRichting < 8; beweegRichting++)                  // Hiermee bepaal je welke richtingen Koning op kan gaan, namelijk alle richtingen.
     {
         veld huidigeVakje = eerstAangeklikteVeld;                                       // sla de eerst geselecteerde vakje op. Doe dit telkens zodat je de oorspronkelijke waarde reset zodat, op het moment dat beweegRichting veranderd, het vanaf de juiste vakje begint te zoeken.
         for (int aantalStappen = 0; aantalStappen < 8; aantalStappen++)                 // Door deze loop wordt de onderstaande code 8 keer herhaald en wordt in de huidige vakje, de buur 8 keer opgeslagen.
         {
             if (huidigeVakje.BuurVakje[beweegRichting] != null)                         // Als de buurvakje wel bestaat, telkens van een specifieke richting. Toren bijvoorbeeld, heeft bij het begin alleen maar 2 buren. Zo voorkom je de null error.
             {
                 if (huidigeVakje.BuurVakje[beweegRichting]._Schaakstuk == null)         // Als de buurvakje van een richting geen schaakstuk heeft.
                 {
                     huidigeVakje = huidigeVakje.BuurVakje[beweegRichting];              // Sla de buur op in huidigeVakje, en dit doe je telkens totdat het buur overeenkomt met de tweede aangeklikte veld.
                     if (huidigeVakje.Equals(tweedeAangevinkteVeld))                     // Als de buurvakje, dus de loop die je doorgaat, all richtingen 8 x op, gelijk staat een de tweede klik.
                     {
                         beweegSchaakStuk(eerstAangeklikteVeld, tweedeAangevinkteVeld);  // Roep beweegmethode op zodat schaakstuk kan bewegen.
                         aantalStappen  = 8;                                             // Forloop wordt afgerond.
                         beweegRichting = 8;                                             // Forloop wordt afgerond.
                     }// stuur de buur en check of het overeenkomt met de tweede klik.
                 }
                 else // Als er wel een schaakstuk op de specifieke vakje staat waar die is met zoeken.
                 {
                     if (huidigeVakje.BuurVakje[beweegRichting]._Schaakstuk.kleurSchaakstuk != eerstAangeklikteVeld._Schaakstuk.kleurSchaakstuk) // Als de schaakstuk van de huidige vakje een specifieke kleur heeft, en de schaakstuk van de eerst aangeklikte veld is van een ander kleur.
                     {
                         huidigeVakje  = huidigeVakje.BuurVakje[beweegRichting];
                         aantalStappen = 8;                                                 // Forloop wordt afgerond, anders blijft die checken en geeft die een error.
                         if (huidigeVakje.Equals(tweedeAangevinkteVeld))                    // Als het vakje wel bestaat
                         {
                             beweegSchaakStuk(eerstAangeklikteVeld, tweedeAangevinkteVeld); // Roep beweegmethode op zodat schaakstuk kan bewegen.
                             beweegRichting = 8;                                            // Forloop wordt afgerond.
                         }// stuur de buur en check of het overeenkomt met de tweede klik.
                     }
                 }
             }
         }
     } // Check om te kunnen slaan
 }
 public abstract void CheckBeweeg(veld eerstAangeklikteVeldBuren, veld tweedeAangevinkteVeld); // afbstract zodat omdat alle schaakstukken op eigen manier bewegen. Hiermee kan je ook voorkomen dat je telkens moet zeggen eersteaangeklikt.Toren etc.. je zegt gewoon . schaakstuk, dan pakt die dat specifieke schaakstuk.
Beispiel #8
0
        public override void CheckBeweeg(veld eerstAangeklikteVeld, veld tweedeAangevinkteVeld) // Bij de tweede klik krijg instantie mee van de eerst aangeklikte veld.
        {
            veld huidigeVakje = eerstAangeklikteVeld;                                           // Maak een tweede versie aan van eerstAangeklikte veld, zodat je de aantal stappen kan onthouden in deze specifieke classe variabel en zodat de  variabel eerstAangeklikteveld zijn oorsprinkelijke waarde blijft houden.
            int  richting     = 0;

            if (eerstAangeklikteVeld._Schaakstuk.kleurSchaakstuk == "zwart") // Als een zwarte Pion is gekozen.
            {
                richting = 2;                                                // Geef richting 2 om te bewegen (NIET om te slaan)
            }
            else // Als een witte Pion is gekozen.
            {
                richting = 0;     // Geef richting 0 om te bewegen (NIET om te slaan)
            }

            for (int beweegRichting = 0; beweegRichting < 8; beweegRichting++)                         // Loop alle richtingen langs, maar pak uiteindelijk alleen de richtingen 0,2,4,5,6,7.
            {
                if (eerstAangeklikteVeld.BuurVakje[richting] != null)                                  // Als het vakje van de richting waar een specifieke pion naar toe kan BEWEGEN bestaat.
                {
                    if (eerstAangeklikteVeld.BuurVakje[richting]._Schaakstuk == null)                  // Als de buur van een richting geen schaakstuk heeft.
                    {
                        if (beweegRichting == 0 || beweegRichting == 2)                                // Als de richting 0 of 2 is (Noord of Zuid, hangt af van schaakstuk kleur waar je op hebt geklikt)
                        {
                            if (tweeStappenPionCheck == true)                                          // Hiermee kan een pion maximaal twee zetten doen, en voor maar 1 keer.
                            {
                                for (int aantalStappen = 0; aantalStappen < 1; aantalStappen++)        // Deze loop zorgt ervoor dat je twee keer loopt in de onderstaande stukje. Dat heb je nodig om de vorige buur op te slaan, zodat bij de tweede keer in de loop de buur van de buur kan worden gepakt.
                                {
                                    huidigeVakje = huidigeVakje.BuurVakje[richting];                   // Sla de buur op in huidigeVakje, en dit doe je telkens totdat het buur overeenkomt met de tweede aangeklikte veld.
                                    if (huidigeVakje.Equals(tweedeAangevinkteVeld))                    // Als de buurvakje, richting 0 en 2 (Noord of Zuid), gelijk staat een de tweede klik.
                                    {
                                        beweegSchaakStuk(eerstAangeklikteVeld, tweedeAangevinkteVeld); // Beweeg Schaakstuk.
                                        tweeStappenPionCheck = false;                                  // Zet op false, zodat 2 stappen zetten maar een keer mag.
                                        beweegRichting       = 8;                                      // Break de forloop, zodat die niet andere richtingen gaat checken nadat je de schaakstuk hebt verplaatst. Want anders krijg je een error.
                                        break;                                                         // Break ook eigen loop, omdat schaakstuk al gezet is.
                                    }
                                }
                            }
                            else // Na de eerste zet, kan een Pion alleen maar een stap doen.
                            {
                                if (eerstAangeklikteVeld.BuurVakje[richting].Equals(tweedeAangevinkteVeld)) // Als de buurvakje, richting 0 en 2 (Noord of Zuid), gelijk staat een de tweede klik.
                                {
                                    beweegSchaakStuk(eerstAangeklikteVeld, tweedeAangevinkteVeld); // Beweeg Schaakstuk.
                                    break;                                                         // Break de forloop, zodat die niet andere richtingen gaat checken nadat je de schaakstuk hebt verplaatst. Want anders krijg je een error.
                                }
                            }
                        }
                    }
                }
                if (beweegRichting == richting + 4 || beweegRichting == richting + 5)                                                                       // Aan de hand van de gekozen schaakstuk(kleur) tel je bijvoorbeeld 4 en 5 op bij richting (richting wit = 0, 4 is Noord-Oost, 5 is Noord-West)(richting zwart = 2, 6 is Zuid-Oost, 7 is Zuid-West)
                {
                    if (eerstAangeklikteVeld.BuurVakje[beweegRichting] != null && eerstAangeklikteVeld.BuurVakje[beweegRichting]._Schaakstuk != null)       // Als het vakje van de richting waar een specifieke pion naar toe kan SLAAN en schaakstuk bestaat.
                    {
                        if (eerstAangeklikteVeld.BuurVakje[beweegRichting]._Schaakstuk.kleurSchaakstuk != eerstAangeklikteVeld._Schaakstuk.kleurSchaakstuk) // Als de schaakstuk van de huidige vakje een specifieke kleur heeft, en de schaakstuk van de eerst aangeklikte veld is van een ander kleur.
                        {
                            if (eerstAangeklikteVeld.BuurVakje[beweegRichting].Equals(tweedeAangevinkteVeld))                                               // Als de buurvakje, richting 4,5 en 6,7, gelijk staat een de tweede klik.
                            {
                                beweegSchaakStuk(eerstAangeklikteVeld, tweedeAangevinkteVeld);                                                              // Beweeg Schaakstuk.
                                break;                                                                                                                      // Break de forloop, zodat die niet andere richtingen gaat checken nadat je de schaakstuk hebt verplaatst. Want anders krijg je een error.
                            }
                        }
                    }
                }
            }
        }