예제 #1
0
        //BeginStand tekent de vier stenen die al op het bord liggen aan het begin van het spel.
        private void BeginStand()
        {
            int centerX = xkolommen / 2;
            int centerY = yrijen / 2;

            stenen[centerX - 1, centerY - 1] = new Steen(centerX - 1, centerY - 1, true);
            stenen[centerX, centerY]         = new Steen(centerX, centerY, true);
            stenen[centerX - 1, centerY]     = new Steen(centerX - 1, centerY, false);
            stenen[centerX, centerY - 1]     = new Steen(centerX, centerY - 1, false);
        }
예제 #2
0
        //Deze onderstaande methode checkt of er omliggende stenen zijn van de vijandige kleur.
        public bool Insluit(int a, int b)
        {
            bool nietaanzet;

            if (beurt % 2 == 0)
            {
                nietaanzet = false;
            }
            else
            {
                nietaanzet = true;
            }

            var richtingen = Richtingen();

            foreach (int richtingx in richtingen.Item1)
            {
                foreach (int richtingy in richtingen.Item2)
                {
                    int stappengezet = 1;
                    int teller       = 0; //De teller telt hoeveel stenen er van de vijand ingesloten moeten worden.
                    for (int x = a + richtingx * stappengezet, y = b + richtingy * stappengezet;
                         x >= 0 && y >= 0 && x < xkolommen && y < yrijen;
                         stappengezet++, x = a + richtingx * stappengezet, y = b + richtingy * stappengezet)
                    {
                        //Stel we willen een steen neerzetten op plek [a,b], dan mogen de omliggende stenen op plekken [x,y] niet leeg zijn.
                        //Dus als alle omliggendeStenen de waarde null hebben, mag er op [a,b] geen steen geplaatst worden.
                        Steen omliggendeSteen = stenen[x, y];
                        if (omliggendeSteen == null)
                        {
                            break;
                        }

                        //Naast dat er een steen naast plek [a,b] moeten liggen, moet minstens een van de omliggende stenen van de vijandige kleur zijn.
                        //Oftewel een van de omliggende stenen moet van de kleur zijn die niet aan zet is.
                        if (omliggendeSteen.green == nietaanzet)
                        {
                            teller++;
                        }
                        else
                        {
                            if (teller > 0)
                            {
                                return(true);
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }
            }
            return(false);
        }
예제 #3
0
        //Als er op de Picturebox geklikt wordt, wordt Veldenklikker aangeroepen. Deze methode kijkt of het legaal is om op de desbetreffende
        //plek een steen te plaatsen. Zo ja, dan wordt er een steen getekend en veranderen de vijandige stenen die worden ingesloten van kleur.
        private void Veldenklikker(object o, MouseEventArgs mea)
        {
            int locatieMuisX = mea.X;
            int locatieMuisY = mea.Y;
            int a = 0, b = 0;

            Point locatieSteen = new Point(a, b);

            //Stap 1: Transleer de muispositie naar de positie in de array stenen.
            for (int positieX = xkolommen; locatieMuisX < xkolommen * grootte && locatieMuisX > 0; positieX -= 1)
            {
                locatieMuisX += grootte;
                a             = positieX - 1;
            }
            for (int positieY = yrijen; locatieMuisY < xkolommen * grootte && locatieMuisY > 0; positieY -= 1)
            {
                locatieMuisY += grootte;
                b             = positieY - 1;
            }

            //Stap 2: Is de desbetreffende positie legaal? Oftewel er mag nog geen steen liggen en er moet minstens een vijandige steen worden ingesloten.
            if (stenen[a, b] == null && Insluit(a, b) == true)
            {
                legaal = true;
            }

            //Stap 3: Creeer een nieuwe Steen op de positie indien deze legaal is, en verander omliggende stenen van kleur.
            if (legaal == true)
            {
                if (beurt % 2 == 0)
                {
                    stenen[a, b] = new Steen(a, b, true);
                    beurt        = beurt + 1;
                }

                else
                {
                    stenen[a, b] = new Steen(a, b, false);
                    beurt        = beurt + 1;
                }

                Omzet(a, b);
                legaal = false;
                velden.Invalidate();
                zet.Text         = AanDeBeurt();
                winnaar.Text     = Winnaar();
                aantalgroen.Text = Aantalgroen() + " stenen";
                aantalblauw.Text = Aantalblauw() + " stenen";
            }
        }
예제 #4
0
        //Omzet verandert de stenen indien nodig van kleur.
        public void Omzet(int a, int b)
        {
            bool nietaanzet, aanzet;

            if (beurt % 2 == 0)
            {
                nietaanzet = true;
            }
            else
            {
                nietaanzet = false;
            }

            aanzet = !nietaanzet;

            var richtingen = Richtingen();

            foreach (int richtingx in richtingen.Item1)
            {
                foreach (int richtingy in richtingen.Item2)
                {
                    int stappengezet = 1;
                    int teller       = 0; //De teller telt hoeveel stenen er van de vijand ingesloten moeten worden.
                    for (int x = a + richtingx * stappengezet, y = b + richtingy * stappengezet;
                         x >= 0 && y >= 0 && x < xkolommen && y < yrijen;
                         stappengezet++, x = a + richtingx * stappengezet, y = b - richtingy * stappengezet)
                    {
                        if (richtingy == 0 && richtingx == 0)
                        {
                            break;
                        }

                        Steen omliggendeSteen = stenen[x, y];

                        if (omliggendeSteen == null)
                        {
                            break;
                        }

                        if (omliggendeSteen.green == nietaanzet)
                        {
                            teller++;
                        }

                        else if (omliggendeSteen.green == aanzet)
                        {
                            if (teller > 0)
                            {
                                while (teller > 0)
                                {
                                    stenen[a + richtingx * teller, b + richtingy * teller].green = aanzet;
                                    teller--;
                                }
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }
        }
예제 #5
0
        //Als er op de Picturebox geklikt wordt, wordt Veldenklikker aangeroepen. Deze methode kijkt of het legaal is om op de desbetreffende
        //plek een steen te plaatsen. Zo ja, dan wordt er een steen getekend en veranderen de vijandige stenen die worden ingesloten van kleur.
        private void Veldenklikker(object o, MouseEventArgs mea)
        {
            int locatieMuisX = mea.X;
            int locatieMuisY = mea.Y;
            int a = 0, b = 0;

            Point locatieSteen = new Point(a, b);

            //Stap 1: Transleer de muispositie naar de positie in de array stenen.
            for (int positieX = xkolommen; locatieMuisX < xkolommen * grootte && locatieMuisX > 0; positieX -= 1)
            {
                locatieMuisX += grootte;
                a = positieX - 1;
            }
            for (int positieY = yrijen; locatieMuisY < xkolommen * grootte && locatieMuisY > 0; positieY -= 1)
            {
                locatieMuisY += grootte;
                b = positieY - 1;
            }

            //Stap 2: Is de desbetreffende positie legaal? Oftewel er mag nog geen steen liggen en er moet minstens een vijandige steen worden ingesloten.
            if (stenen[a, b] == null && Insluit(a, b) == true)
            {
                legaal = true;
            }

            //Stap 3: Creeer een nieuwe Steen op de positie indien deze legaal is, en verander omliggende stenen van kleur.
            if (legaal == true)
            {

                if (beurt % 2 == 0)
                    {
                        stenen[a, b] = new Steen(a, b, true);
                        beurt = beurt + 1;
                    }

                else
                    {
                        stenen[a, b] = new Steen(a, b, false);
                        beurt = beurt + 1;
                    }

                Omzet(a, b);
                legaal = false;
                velden.Invalidate();
                zet.Text = AanDeBeurt();
                winnaar.Text = Winnaar();
                aantalgroen.Text = Aantalgroen() + " stenen";
                aantalblauw.Text = Aantalblauw() + " stenen";
            }
        }
예제 #6
0
 //BeginStand tekent de vier stenen die al op het bord liggen aan het begin van het spel.
 private void BeginStand()
 {
     int centerX = xkolommen / 2;
     int centerY = yrijen / 2;
     stenen[centerX - 1, centerY - 1] = new Steen(centerX - 1, centerY - 1, true);
     stenen[centerX, centerY] = new Steen(centerX, centerY, true);
     stenen[centerX - 1, centerY] = new Steen(centerX - 1, centerY, false);
     stenen[centerX, centerY - 1] = new Steen(centerX, centerY - 1, false);
 }