Exemplo n.º 1
0
 public Boolean doZet(int pos)
 {
     if (speelVeld[pos] == null)
     {
         speelVeld[pos] = new SpeelSteen(speler1.type);
         return(true);
     }
     return(false);
 }
Exemplo n.º 2
0
        public void computerDoeZetBestePlek(SpeelSteenType computerSpeelType, SpeelSteenType spelerSpeelType, int speelModus)
        {
            /* SpeelModus:
             * 0 = easy
             * 1 = medium
             * 2 = hard
             */
            //haalt het type speelsteen van de computer op en van de speler
            SpeelSteenType computerType = computerSpeelType;
            SpeelSteenType opponentType = spelerSpeelType;

            //vindt eerst alle stukken van de tegenstander
            List <int> stukkenTegenstanderPositie = new List <int>();

            for (int i = 0; i < speelStenen.Length; i++)
            {
                if (speelStenen[i] != null && speelStenen[i].type == opponentType)
                {
                    stukkenTegenstanderPositie.Add(i);
                }
            }

            if (speelModus != 0) //easy speelmodus, random lege plek
            {
                //moet nu checke of de tegenstander drie op een rij heeft in een volgende beurt
                if (stukkenTegenstanderPositie.Count > 1)                                       //checkt eerst of de tegenstander wel minimaal 2 stukken heeft staan
                {
                    int bestPlaceToPutIn = geBestPlaceToPutStukForSpeelSteenType(computerType); //checkt of de computer bijna 3 op een rij heeft
                    if (bestPlaceToPutIn < 0)                                                   //tegenstander heeft nog niet bijna 3 op een rij
                    {
                        //checkt de positie van de tegenstander, waar deze 3 op een rij heeft
                        bestPlaceToPutIn = geBestPlaceToPutStukForSpeelSteenType(opponentType);
                        if (bestPlaceToPutIn < 0)                                        //ook geen plekken waar de computer 3 op een rij kan hebben
                        {
                            if (speelModus != 1)                                         //als het GEEN medium speelmodus is, easy wordt hierboven al afgevangen
                            {                                                            //wat hier uitgevoerd wordt, is dus hard speel modus
                                if (checkPlayerGotAmountHooks(opponentType) > 0)
                                {                                                        //speler heeft minimaal 2 stukken, waarvan 1 in de hoek staan!
                                    if (stukkenTegenstanderPositie.Count == 2)           //als de tegenstander precies 2 stukken heeft staan
                                    {
                                        if (checkPlayerGotAmountHooks(opponentType) > 1) //als het aantal hoekstukken groter is dan 1 (dan de 2 stukken die de speler heeft)
                                        {
                                            //als er 2 stukken in de hoek staan, dan staat 1 stuk van de computer in het midden
                                            //het andere stuk moet in een NIET hoek positie
                                            bestPlaceToPutIn = getRandomNOThoekPlace();
                                        }
                                        else
                                        {
                                            //geen 2 stukken in de hoek
                                            //dan staan ze waarschijnlijk shuin tegenover, dit wordt zo voorkomen op een statische manier
                                            bestPlaceToPutIn = findSchuinTegenOverElkaar(opponentType);
                                        }
                                    }
                                    else
                                    {
                                        bestPlaceToPutIn = getRandomMiddleNOThoekPlace(); //pakt een NIET hoekplek als het mogenlijk is
                                    }
                                }
                            }
                            //kijkt voor een random lege hoekplek
                            int randHoekPlek = getRandomMiddleAndHoekPlace();
                            if (randHoekPlek != -1 && bestPlaceToPutIn == -1) //als er een hoekplek beschikbaar is en er nog geen stuk is gevonde waar een plek is
                            {
                                bestPlaceToPutIn = randHoekPlek;
                                //System.Windows.Forms.MessageBox.Show("rand hoek" + bestPlaceToPutIn);
                            }
                            else if (bestPlaceToPutIn == -1) //geen hoekplek beschikbaar, kiest een random lege plek
                            {
                                bestPlaceToPutIn = getRandomEmptyPlace();
                                //System.Windows.Forms.MessageBox.Show("rand" + bestPlaceToPutIn);
                            }

                            //System.Windows.Forms.MessageBox.Show("rand 2" + placeToPutIn + " best:" + bestPlaceToPutIn);
                        }
                        //System.Windows.Forms.MessageBox.Show("rand 3" + placeToPutIn + " best:" + bestPlaceToPutIn);
                    }

                    //System.Windows.Forms.MessageBox.Show("- " + " best:" + bestPlaceToPutIn);
                    speelStenen[bestPlaceToPutIn] = new SpeelSteen(computerType);
                    //System.Windows.Forms.MessageBox.Show("" + bestPlaceToPutIn);
                }
                else //tegenstander heeft nog geen 2 stukken staan. eeerste zet dus
                {
                    int bestPlaceToPutIn = -1;

                    //kiest het midden en anders een random lege hoekplek en nog anders een random lege plek
                    int randHoekPlek = getRandomMiddleAndHoekPlace(); //zet hem in het midden neer als het kan en anders in de hoek
                    if (randHoekPlek != -1)                           //als er een lege hoekplek is en bestPlaceToPutIn -1 is
                    {
                        bestPlaceToPutIn = randHoekPlek;
                    }
                    else if (bestPlaceToPutIn == -1)
                    {
                        bestPlaceToPutIn = getRandomEmptyPlace();
                    }
                    //System.Windows.Forms.MessageBox.Show("" + bestPlaceToPutIn);
                    speelStenen[bestPlaceToPutIn] = new SpeelSteen(computerType);
                }
            }
            else //easy speelmodus, kiest een random lege plek
            {
                int bestPlaceToPutIn = getRandomEmptyPlace();
                speelStenen[bestPlaceToPutIn] = new SpeelSteen(computerType);
            }
        }