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); } }
} // 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; } }
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); }
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]; } } } }
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; } } }
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; }
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 { } } }