protected bool IsRand(Veld veld, Bord bord) { if (veld == bord[0, 1] || veld == bord[1, 0] || veld == bord[1, 2] || veld == bord[2, 1]) { return(true); } return(false); }
protected bool IsHoek(Veld veld, Bord bord) { if (veld == bord[0, 0] || veld == bord[2, 2] || veld == bord[2, 0] || veld == bord[0, 2]) { return(true); } return(false); }
protected bool ZijnOpposRanden(Veld veld1, Veld veld2, Bord bord) { if (veld1 == bord[0, 1] && veld2 == bord[2, 1] || veld1 == bord[1, 0] && veld2 == bord[1, 2] || veld2 == bord[0, 1] && veld1 == bord[2, 1] || veld2 == bord[1, 0] && veld1 == bord[1, 2]) { return(true); } return(false); }
protected bool IsCenter(Veld veld) { if (veld.Kolom == 2 && veld.Rij == 2) { return(true); } else { return(false); } }
protected Veld Vork(Veld randofhoek, Veld hoek, Bord bord) { if (randofhoek.Kolom == 2) { return(bord[randofhoek.Rij - 1, hoek.Kolom - 1]); } else { return(bord[hoek.Rij - 1, randofhoek.Kolom - 1]); } }
public override Veld VerkiestVeld(Spel spel) { //1) Probeer zelf een reeks te maken: Veld winnendVeld = WinnendVeld(spel); if (winnendVeld != null) { return(winnendVeld); } //2) Kan er geen reeks gemaakt worden => tegenstander blokkeren: return(base.VerkiestVeld(spel)); }
public static int AddVeld(string afkorting, string naam, int blokid) { using (TimechasersEntities te = new TimechasersEntities()) { Veld veld = te.Veld.Add(new Veld() { Afkorting = afkorting, ANaam = naam, BlokID = blokid }); te.SaveChanges(); return(veld.Id); } }
public ReversiForm() { int veldomvang; //Variabelen om gemakkelijk omvang van het veld aan te passen // gerben heeft iets aangepast breedte = 6; hoogte = 6; veldomvang = 80; //Rode speler is 1, blauwe speler is 2 beurt = 1; //Array met het hele speelbord, opgedeeld in velden velden = new Veld[breedte, hoogte]; //Form opmaken this.Text = "Reversi"; this.Size = new Size((breedte+1)*veldomvang, (hoogte+2)*veldomvang); this.BackColor = Color.DimGray; this.Paint += ReversiForm_Paint; //buttons nieuw spel en help Button nieuw; nieuw = new Button(); Button help; help = new Button(); nieuw.Location = new Point(); nieuw.Location = new Point(); //Velden initialiseren for (int x = 0; x < breedte; x++) { for (int y = 0; y < hoogte; y++) { velden[x, y] = new Veld(this, x, y, veldomvang); velden[x, y].Location = new Point(x*veldomvang+veldomvang/2, y*veldomvang+veldomvang/2); Controls.Add(velden[x, y]); } } }
protected Veld GespiegeldeHoek(Bord bord, Veld eigenMove) { Veld gespiegeldeHoek = null; for (int iLijnen = 6; iLijnen < 8; iLijnen++) { for (int iVeld = 0; iVeld < 3; iVeld++) { if (bord.Lijnen[iLijnen].Velden[iVeld] == eigenMove) { if (iVeld == 2) { gespiegeldeHoek = bord.Lijnen[iLijnen].Velden[0]; } else { gespiegeldeHoek = bord.Lijnen[iLijnen].Velden[2]; } } } } return(gespiegeldeHoek); }
public void Speel(Spel spel) { Veld veld = VerkiestVeld(spel); spel.Speel(veld); }
public override Veld VerkiestVeld(Spel spel) { #region checks en variabelen int aantalIngenomen = AantalIngenomen(spel.Bord); List <Lijn> randLijnen = GetRandLijnen(spel.Bord); Veld doel = null; doel = WinnendVeld(spel); if (doel != null) { return(doel); } doel = BlokkerendVeld(spel); if (doel != null) { return(doel); } #endregion //SPELER 1 if (Speler == Speler.O) { #region Eerste beurt speler 1 //neemt een hoek (hoogste kans), center of rand if (aantalIngenomen == 0) { int rnd = RandomInt(); if (rnd <= 15) { doel = spel.Bord[4]; return(doel); } else if (rnd >= 85) { doel = RandomRand(spel.Bord); return(doel); } doel = RandomHoek(spel.Bord); return(doel); } #endregion #region Tweede beurt speler 1 else if (aantalIngenomen == 2) { Veld eigenMove = VeldenSpeler(spel.Bord, Speler)[0]; Veld tegenstanderMove = VeldenSpeler(spel.Bord, Tegenstander)[0]; #region Speler 1 speelde hoek if (IsHoek(eigenMove, spel.Bord)) { Veld gespiegeldeEersteMove = GespiegeldeHoek(spel.Bord, eigenMove); #region Tegenstander speelde hoek of rand //x speelt geen center if (tegenstanderMove != spel.Bord[1, 1]) { Veld excludeHoek = null; foreach (Lijn lijn in randLijnen) { if (lijn.AantalVrijeVelden() == 1) { if (lijn.Velden[0].Speler == Speler) { excludeHoek = lijn.Velden[2]; } else { excludeHoek = lijn.Velden[0]; } } } do { doel = RandomHoek(spel.Bord); } while (doel == excludeHoek || doel == gespiegeldeEersteMove || !doel.IsVrij()); return(doel); } #endregion #region Tegenstander speelde center //x speelt center else { int rnd = RandomInt(); if (rnd <= 10) { foreach (Lijn lijn in randLijnen) { if (lijn.AantalVrijeVelden() == 3) { doel = lijn.Velden[1]; if (doel.IsVrij()) { return(doel); } } } } return(gespiegeldeEersteMove); } #endregion } #endregion #region Speler 1 speelde center else if (IsCenter(eigenMove)) { #region Tegenstander speelde hoek //gespiegelde hoek nemen, daarna nog vorkpoging if (IsHoek(tegenstanderMove, spel.Bord)) { Veld gespiegeldeHoek = GespiegeldeHoek(spel.Bord, tegenstanderMove); return(gespiegeldeHoek); } #endregion #region Tegenstander speelde rand else { do { doel = RandomHoek(spel.Bord); } while (!doel.IsVrij()); return(doel); } #endregion } #endregion #region Speler 1 speelde rand else if (IsRand(eigenMove, spel.Bord)) { #region Tegenstander speelde rand if (IsRand(tegenstanderMove, spel.Bord)) { //tegenstander speelt near rand if (!ZijnOpposRanden(tegenstanderMove, eigenMove, spel.Bord)) { doel = Vork(tegenstanderMove, eigenMove, spel.Bord); if (doel.IsVrij()) { return(doel); } } //tegenstander speelt opposite rand else { foreach (Lijn lijn in randLijnen) { foreach (Veld v in lijn.Velden) { if (v.Speler == Tegenstander) { //2 mogelijke hoeken, neem ééntje at random int rnd = RandomInt(); if (rnd >= 50) { doel = lijn.Velden[0]; if (doel.IsVrij()) { return(doel); } } else { doel = lijn.Velden[2]; if (doel.IsVrij()) { return(doel); } } } } } } } #endregion #region Tegenstander speelde hoek else if (IsHoek(tegenstanderMove, spel.Bord)) //zoek eerst naar near corner { foreach (Lijn lijn in randLijnen) { if (lijn.AantalVrijeVelden() == 1)//if true=> near corner { foreach (Veld v in lijn.Velden) { if (v.IsVrij()) { doel = GespiegeldeHoek(spel.Bord, v); if (doel.IsVrij()) { return(doel); } } } } } //niets gevonden? tegenstander speelt far corner doel = GespiegeldeHoek(spel.Bord, Vork(eigenMove, tegenstanderMove, spel.Bord)); if (doel.IsVrij()) { return(doel); } } #endregion #region Tegenstander speelde center int rnd2 = RandomInt(); //random hoek if (rnd2 <= 10) { foreach (Lijn lijn in randLijnen) { if (lijn.Velden[1].Speler == Speler) { Veld excludeHoek1 = lijn.Velden[0]; Veld excludeHoek2 = lijn.Velden[2]; do { doel = RandomHoek(spel.Bord); } while (doel == excludeHoek1 || doel == excludeHoek2); return(doel); } } } //random rand die niet opposite is van eigen move else { do { doel = RandomRand(spel.Bord); } while (!doel.IsVrij() || ZijnOpposRanden(doel, eigenMove, spel.Bord)); return(doel); } #endregion } #endregion } #endregion } //SPELER 2 else { #region Eerste beurt speler 2 if (aantalIngenomen == 1) { Veld move1 = VeldenSpeler(spel.Bord, Tegenstander)[0]; if (IsCenter(move1)) { doel = RandomHoek(spel.Bord); return(doel); } else { doel = spel.Bord[4]; return(doel); } } #endregion #region Tweede beurt speler 2 else if (aantalIngenomen == 3) { Veld move1 = VeldenSpeler(spel.Bord, Tegenstander)[0]; Veld move2 = VeldenSpeler(spel.Bord, Tegenstander)[1]; //al op vrij checken in method //o neemt 2 hoeken if (IsHoek(move1, spel.Bord) && IsHoek(move2, spel.Bord)) { do { doel = RandomRand(spel.Bord); } while (!doel.IsVrij()); return(doel); } //o neemt center en hoek else if (IsCenter(move1) && IsHoek(move2, spel.Bord) || IsCenter(move2) && IsHoek(move1, spel.Bord)) { do { doel = RandomHoek(spel.Bord); } while (!doel.IsVrij()); return(doel); } //o neemt 2 randen else if (IsRand(move1, spel.Bord) && IsRand(move2, spel.Bord)) { if (ZijnOpposRanden(move1, move2, spel.Bord)) { do { doel = RandomHoek(spel.Bord); } while (!doel.IsVrij());//checks op is vrij en while lus in method, return(doel); } else { doel = Vork(move1, move2, spel.Bord); if (doel.IsVrij()) { return(doel); } } } //o neemt rand en hoek else if (IsRand(move1, spel.Bord) && IsHoek(move2, spel.Bord) || IsHoek(move1, spel.Bord) && IsRand(move2, spel.Bord)) { Veld hoek; Veld rand; hoek = IsHoek(move1, spel.Bord) ? move1 : move2; rand = IsRand(move1, spel.Bord) ? move1 : move2; doel = Vork(rand, hoek, spel.Bord); if (doel.IsVrij()) { return(doel); } } } #endregion } #region "Overige beurten of geen returns" doel = MinimaxVeld(spel.Bord); if (doel == null || (!doel.IsVrij())) { return(base.VerkiestVeld(spel)); } return(doel); #endregion }
public ActionResult EditBoekingPost(BoekingViewModel reserveringsModel) { reserveringsModel.Velden = repository.Velds.Where(p => p.VeldID.Equals(reserveringsModel.Reserv.VeldID)).ToList(); reserveringsModel.Plaatsen = repository.Plaatss.Where(p => p.VeldID.Equals(reserveringsModel.Reserv.VeldID)).ToList(); Plaats GekozenPlaats = reserveringsModel.Plaatsen.First(); Veld GekozenVeld = reserveringsModel.Velden.FirstOrDefault(); reserveringsModel.Resveringens = repository.Reserverings.Where(p => p.BeginDatum >= reserveringsModel.Reserv.BeginDatum && p.BeginDatum <= reserveringsModel.Reserv.EindDatum || p.EindDatum <= reserveringsModel.Reserv.BeginDatum && p.EindDatum >= reserveringsModel.Reserv.EindDatum).ToList(); reserveringsModel.Boekings = repository.Boekings.Where(p => p.BeginDatum >= reserveringsModel.Boeking.BeginDatum && p.BeginDatum <= reserveringsModel.Boeking.EindDatum || p.EindDatum <= reserveringsModel.Boeking.BeginDatum && p.EindDatum >= reserveringsModel.Boeking.EindDatum).ToList(); if (GekozenPlaats == null) { db.SaveChanges(); return(RedirectToAction("ReserveringSucces", "Bezoeker", new { area = "" })); } if (reserveringsModel.Resveringens != null) { int i = 0; foreach (var id in reserveringsModel.Resveringens) { idList.Add(id.PlaatsId); } foreach (var id in reserveringsModel.Boekings) { if (!idList.Contains(id.PlaatsId)) { idList.Add(id.PlaatsId); } } var resvIdArray = idList.ToArray(); var PlaatsArray = reserveringsModel.Plaatsen.ToArray(); while (i <= PlaatsArray.Length) { if (resvIdArray.Contains(PlaatsArray[i].PlaatsID)) { i++; if (i == PlaatsArray.Length) { //throw new Exception("Geen plek"); return(RedirectToAction("GeenPlek", "Bezoeker", new { area = "" })); } else { continue; } } else { reserveringsModel.Reserv.PlaatsId = PlaatsArray[i].PlaatsID; } if (ModelState.IsValid) { if (reserveringsModel.Reserv.EindDatum > reserveringsModel.Reserv.BeginDatum) { db.Entry(reserveringsModel.Boeking).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); return(RedirectToAction("ReserveringSucces", "Bezoeker", new { area = "" })); } } return(View(reserveringsModel)); } } else { if (ModelState.IsValid) { if (reserveringsModel.Reserv.EindDatum > reserveringsModel.Reserv.BeginDatum) { db.Entry(reserveringsModel.Reserv).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); return(RedirectToAction("ReserveringSucces", "Bezoeker", new { area = "" })); } } return(View(reserveringsModel)); } return(View(reserveringsModel)); }