Exemple #1
0
        public static void AddVakjeToNeightboursIfNotNull(Vakje hetVakje, Vakje[,] deVakjesArray, int x, int y)
        {
            var hetPotentieleNeighbourVakje = GetVakjeFromArray(deVakjesArray, x, y);

            if (hetPotentieleNeighbourVakje != null)
            {
                hetVakje.SurroundingVakjes.Add(hetPotentieleNeighbourVakje);
            }
        }
Exemple #2
0
        }                                            // Is de toren al eens verzet

        public Toren(string kleur, Vakje vakje, Speler speler)
        {
            this.Kleur  = kleur;
            this.Vakje  = vakje;
            this.Speler = speler;
            if (kleur == "wit")
            {
                Afbeelding = Properties.Resources.TorenWit;
            }
            else
            {
                Afbeelding = Properties.Resources.TorenZwart;
            }
        }
Exemple #3
0
        public static Vakje[,] CreateVakjesArray(GalaxySweeperGame game)
        {
            Vakje[,] deVakjesArray = new Vakje[game.field.Count, game.field[0].Length];

            for (int x = 0; x < game.field.Count; x++)
            {
                var line = game.field[x];
                for (int y = 0; y < line.Length; y++)
                {
                    var character = line[y];
                    if (character != '#')
                    {
                        var vakje = new Vakje(character, x, y);
                        deVakjesArray[x, y] = vakje;
                    }
                }
            }

            int width  = deVakjesArray.GetLength(0);
            int height = deVakjesArray.GetLength(1);

            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    var vakje = deVakjesArray[x, y];

                    if (vakje != null)
                    {
                        AddVakjeToNeightboursIfNotNull(vakje, deVakjesArray, x, y - 1);
                        AddVakjeToNeightboursIfNotNull(vakje, deVakjesArray, x + 1, y - 1);
                        AddVakjeToNeightboursIfNotNull(vakje, deVakjesArray, x - 1, y);
                        AddVakjeToNeightboursIfNotNull(vakje, deVakjesArray, x + 1, y);
                        AddVakjeToNeightboursIfNotNull(vakje, deVakjesArray, x - 1, y + 1);
                        AddVakjeToNeightboursIfNotNull(vakje, deVakjesArray, x, y + 1);
                    }
                }
            }

            return(deVakjesArray);
        }
        public void FindsSetsWithGuaranteedBombs()
        {
            var logger = DefaultLoggerFactory.CreateLoggerForTests();



            var vakjeLinksBoven  = new Vakje('.', 0, 0);
            var vakjeRechtsBoven = new Vakje('.', 1, 0);
            var vakjeLinks       = new Vakje('.', 0, 1);
            var vakjeRechts      = new Vakje('.', 1, 1);
            var vakjeLinksOnder  = new Vakje('.', 0, 2);
            var vakjeRechtsOnder = new Vakje('.', 1, 2);

            var alleVakjes = new List <Vakje>()
            {
                vakjeLinksBoven, vakjeRechtsBoven, vakjeRechts, vakjeRechtsOnder, vakjeLinksOnder, vakjeLinks
            };
            var overallSet = new VakjeSetDeluxe(0, 0, alleVakjes);

            //Set1 groen linksboven
            var set1 = new VakjeSetDeluxe(0, 0, new List <Vakje>()
            {
                vakjeLinks, vakjeLinksBoven
            });

            //Set2 rood top
            var set2 = new VakjeSetDeluxe(0, 0, new List <Vakje>()
            {
                vakjeLinksBoven, vakjeRechtsBoven
            });

            //Set3 Rood rechts (3 set)
            var set3 = new VakjeSetDeluxe(0, 0, new List <Vakje>()
            {
                vakjeRechtsBoven, vakjeRechts, vakjeRechtsOnder
            });

            //Set4 Blauw rechtsboven
            var set4 = new VakjeSetDeluxe(0, 0, new List <Vakje>()
            {
                vakjeRechtsBoven, vakjeRechts
            });

            //Set5 Blauw onder
            var set5 = new VakjeSetDeluxe(0, 0, new List <Vakje>()
            {
                vakjeLinksOnder, vakjeRechtsOnder
            });

            //Set6 Rood linksonder (Enkel)
            var set6 = new VakjeSetDeluxe(0, 0, new List <Vakje>()
            {
                vakjeLinksOnder
            });

            //Set7 Blauw links (Enkel)
            var set7 = new VakjeSetDeluxe(0, 0, new List <Vakje>()
            {
                vakjeLinks
            });

            var alleSets = new List <VakjeSetDeluxe>()
            {
                set1,
                set2,
                set3,
                set4,
                set5,
                set6,
                set7
            };

            var result = SetBepaler.BepaalSetsThatFillMeCompletely(overallSet, alleSets);

            Assert.Equal(2, result.Count);
        }
Exemple #5
0
        public override void kanStukSlaan(Algoritme algoritme, Vakje geselecteerdStuk)
        {
            // Deze methode kijkt vanuit de computer of er een toren geslagen kan worden.
            if (geselecteerdStuk.schaakstuk.Kleur == "zwart")
            {
                // Kijkt of er noord geslagen kan worden
                bool  mogelijkloop = false;
                Vakje 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 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];
                    }
                }

                // Kijkt of er Zuidwest 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 Zuidoost 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];
                    }
                }
            }
        }
Exemple #6
0
        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

            bool  mogelijk     = false;
            bool  mogelijkloop = false;
            Vakje vorige       = selected;

            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];
                }
            }
            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 = spel.schaakbord.CheckSchaak(Speler.koning.Vakje, Speler.koning.Kleur);
                if (checkSchaak == true)
                {
                    selected.schaakstuk   = this;
                    nieuwVakje.schaakstuk = temp;
                    this.Vakje            = selected;
                }
                else
                {
                    if (temp != null)
                    {
                        temp.Slaan();
                        spel.updateAantalStukken(spel.SpelerAanZet);
                    }
                    Speler.ValideZet = true;
                    _eersteZet       = true;
                }
            }
        }
Exemple #7
0
 public BommenBepalerStatsIteratieVondst GetVondstVoorVakje(Vakje vakje)
 {
     return(Iteraties.SelectMany(t => t.Vondsten).FirstOrDefault(t => t.Vakje == vakje));
 }
 public BommenBepalerStatsIteratieVondst(BommenBepalerStatsIteratie iteratie, Vakje vakje, VondstType vondstType)
 {
     Iteratie   = iteratie;
     Vakje      = vakje;
     VondstType = vondstType;
 }
Exemple #9
0
        public override void kanStukSlaan(Algoritme algoritme, Vakje geselecteerdStuk)
        {
            // Deze methode kijkt vanuit de computer of er een paard geslagen kan worden.
            Vakje geselecteerdVak = geselecteerdStuk;

            if (geselecteerdStuk.schaakstuk.Kleur == "zwart" && geselecteerdStuk.schaakstuk != null)
            {
                if (geselecteerdVak.Buren[0] != null && geselecteerdVak.Buren[0].Buren[4] != null && geselecteerdVak.Buren[0].Buren[7] != null)
                {
                    if (geselecteerdVak.Buren[0].Buren[4].schaakstuk != null && geselecteerdVak.Buren[0].Buren[4].schaakstuk != null && geselecteerdVak.Buren[0].Buren[4].schaakstuk.Kleur == "wit")
                    {
                        geselecteerdVak.Buren[0].Buren[4].Pbox.BackColor = System.Drawing.Color.Red;
                        algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[0].Buren[4]);
                        algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                    }
                    else if (geselecteerdVak.Buren[0].Buren[7] != null && geselecteerdVak.Buren[0].Buren[7].schaakstuk != null && geselecteerdVak.Buren[0].Buren[7].schaakstuk.Kleur == "wit")
                    {
                        geselecteerdVak.Buren[0].Buren[7].Pbox.BackColor = System.Drawing.Color.Red;
                        algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[0].Buren[7]);
                        algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                    }
                }

                if (geselecteerdVak.Buren[2] != null && geselecteerdStuk.schaakstuk != null)
                {
                    if (geselecteerdVak.Buren[2].Buren[6] != null && geselecteerdVak.Buren[2].Buren[6].schaakstuk != null && geselecteerdVak.Buren[2].Buren[6].schaakstuk.Kleur == "wit")
                    {
                        geselecteerdVak.Buren[2].Buren[6].Pbox.BackColor = System.Drawing.Color.Red;
                        algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[2].Buren[6]);
                        algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                    }
                    else if (geselecteerdVak.Buren[2].Buren[5] != null && geselecteerdVak.Buren[2].Buren[5].schaakstuk != null && geselecteerdVak.Buren[2].Buren[5].schaakstuk.Kleur == "wit")
                    {
                        geselecteerdVak.Buren[2].Buren[5].Pbox.BackColor = System.Drawing.Color.Red;
                        algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[2].Buren[5]);
                        algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                    }
                }

                if (geselecteerdVak.Buren[3] != null && geselecteerdStuk.schaakstuk != null)
                {
                    if (geselecteerdVak.Buren[3].Buren[7] != null && geselecteerdVak.Buren[3].Buren[7].schaakstuk != null && geselecteerdVak.Buren[3].Buren[7].schaakstuk.Kleur == "wit")
                    {
                        geselecteerdVak.Buren[3].Buren[7].Pbox.BackColor = System.Drawing.Color.Red;
                        algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[3].Buren[7]);
                        algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                    }
                    else if (geselecteerdVak.Buren[3].Buren[6] != null && geselecteerdVak.Buren[3].Buren[6].schaakstuk != null && geselecteerdVak.Buren[3].Buren[6].schaakstuk.Kleur == "wit")
                    {
                        geselecteerdVak.Buren[3].Buren[6].Pbox.BackColor = System.Drawing.Color.Red;
                        algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[3].Buren[6]);
                        algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                    }
                }
                if (geselecteerdVak.Buren[1] != null)
                {
                    if (geselecteerdVak.Buren[1].Buren[7] != null && geselecteerdVak.Buren[1].Buren[7].schaakstuk != null && geselecteerdVak.Buren[1].Buren[7].schaakstuk.Kleur == "wit")
                    {
                        geselecteerdVak.Buren[1].Buren[7].Pbox.BackColor = System.Drawing.Color.Red;
                        algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[1].Buren[7]);
                        algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                    }
                    else if (geselecteerdVak.Buren[1].Buren[6] != null && geselecteerdVak.Buren[1].Buren[6].schaakstuk != null && geselecteerdVak.Buren[1].Buren[6].schaakstuk.Kleur == "wit")
                    {
                        geselecteerdVak.Buren[1].Buren[6].Pbox.BackColor = System.Drawing.Color.Red;
                        algoritme.slaanmogelijkheden.Add(geselecteerdVak.Buren[1].Buren[6]);
                        algoritme.slaanmogelijkhedenVanaf.Add(geselecteerdStuk);
                    }
                }
                else
                {
                }
            }
        }