Beispiel #1
0
 /// <summary>
 /// Chack of mag spelen.
 /// Als ja dan staart het spel.
 /// als Nee Wacht op andere speler.
 /// </summary>
 protected override void HandlHetSpel()
 {
     if (this.game.KanStarten())
     {
         SpeelVlak      speelVlak  = new SpeelVlak(8);
         GameController controller = new GameController(speelVlak, this.game);
         controller.GameStart();
         Console.ReadKey();
     }
 }
Beispiel #2
0
        /// <inheritdoc/>
        public override int DoeZet(string inzet, SpeelVlak speelVlak, Game game)
        {
            for (int kolom = 0; kolom < speelVlak.Dimension; kolom++)
            {
                if (!speelVlak.MagInzetten(kolom))
                {
                    continue;
                }

                // Controleert of kan de computer winnen.
                int veldOpKolom = speelVlak.ZetTekenOpSpeelvlak(kolom, this.GebruikTeken);
                if (speelVlak.HeeftGewonnen(this.GebruikTeken))
                {
                    // Als ja, dan reset deze veld en return het nummer van de kolom.
                    speelVlak.ResetVeld(kolom, veldOpKolom);
                    return(kolom);
                }

                // als kan niet winnen, dan controleert of de andere speler kan winnen.
                else
                {
                    // reset eerst de oude teken en daarna ga verder.
                    speelVlak.ResetVeld(kolom, veldOpKolom);

                    // Hier breng ik de tegenspeler want ik heb zijn teken nodig om te controleren of kan hij winnen.
                    Speler tegenSpeler = game.TegenSpeler(this);
                    veldOpKolom = speelVlak.ZetTekenOpSpeelvlak(kolom, tegenSpeler.GebruikTeken);
                    if (speelVlak.HeeftGewonnen(tegenSpeler.GebruikTeken))
                    {
                        // Als de tegenspeler kan winnen dan zet je teken dus verkom je dat.
                        speelVlak.ResetVeld(kolom, veldOpKolom);
                        return(kolom);
                    }
                }

                speelVlak.ResetVeld(kolom, veldOpKolom);
            }

            // Als de computer speler heeft geen goede veld gevangen, dan geef de eerste kolom terug om te teken te zeten op het speelvlak.
            int random;

            do
            {
                random = this.GeefRandomNummer(speelVlak);
            }while (!speelVlak.MagInzetten(random));

            return(random);
        }
Beispiel #3
0
        /// <inheritdoc/>
        public override int DoeZet(string inzet, SpeelVlak speelVlak, Game game)
        {
            // het nummer die de speler heeft gekozen.
            int.TryParse(inzet, out int keuzeNummer);

            if (keuzeNummer < 0 || keuzeNummer > speelVlak.Dimension)
            {
                throw new ArgumentException("Mag niet de inzet mider dan nul of hoger dan de dimension van het speelvlak");
            }

            // doet een nummer af want de array start van nummer nul.
            this.HuidigeInZet = keuzeNummer - 1;

            // De speler gaat een nummer tussen een en de dimension kiesen.
            return(this.HuidigeInZet);
        }
Beispiel #4
0
        /// <summary>
        /// tekent op het speelvlak het teken die de speler wil inzetten op het speelvlak.
        /// </summary>
        /// <param name="inzet">De keuze van de speler.</param>
        /// <param name="speelVlak">Het speelvalk.</param>
        /// <param name="teken">Het teken van de speler.</param>
        public void ZetTekenOpSpeelvlak(int inzet, SpeelVlak speelVlak, Teken teken)
        {
            if (teken == Teken.Undefined)
            {
                throw new ArgumentException("Mag niet de teken Undefined zijn of null.");
            }

            if (speelVlak == null)
            {
                throw new ArgumentException("mag niet het speelvlak null zijn.");
            }

            if (inzet < 0)
            {
                throw new ArgumentException("Mag niet het inzet nul of minder zijn.");
            }

            speelVlak.ZetTekenOpSpeelvlak(inzet, teken);
        }
Beispiel #5
0
 /// <summary>
 /// Check of de speler heeft gewonnen of niet.
 /// </summary>
 /// <param name="speelVlak">Het speelvlak.</param>
 /// <param name="teken">De teken van de speler die zal nagaan.</param>
 /// <returns>Heeft vier op een rij of niet.</returns>
 public bool HeeftGewonnen(SpeelVlak speelVlak, Teken teken)
 {
     return(speelVlak.HeeftGewonnen(teken));
 }
Beispiel #6
0
        private int GeefRandomNummer(SpeelVlak speelVlak)
        {
            Random random = new Random();

            return(random.Next(speelVlak.Dimension));
        }
Beispiel #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GameController"/> class.
 /// </summary>
 /// <param name="gameVierOpEenRij">Game.</param>
 public GameController(Game gameVierOpEenRij)
 {
     this.gameVierOpEenRij = gameVierOpEenRij;
     this.speelVlak        = gameVierOpEenRij.SpeelVlak;
 }