示例#1
0
        public void Button_Click(object sender, EventArgs e)
        {
            Button knapp      = (Button)sender;
            int    knappIndex = Array.IndexOf(knappar, knapp); //får index

            int[] kordinater = spel.fåKordinater(knappIndex);  //{x, y}

            if (spel.ärTom(kordinater[0], kordinater[1]))
            {
                spel.görDrag(kordinater[0], kordinater[1]);
                knapp.Text = spel.bräda[kordinater[1], kordinater[0]].ToString();
                kollaEfterVinst();

                antalTillgängligaDrag -= 1; //Ett mindre tillgängligt drag

                if (spelarMotBot)
                {
                    görBotDrag();
                }
            }
        }
示例#2
0
        public int[] fåDragMinimax(int maxDjup)
        {
            egetSpel.kopieraAnnatSpel(spel);

            bool maximize = (egetSpel.tur == 'X'); //X är maximera O är minimera

            int bästaScore = -10000;

            int[] bästaDrag = new int[] { 0, 0 };
            if (!maximize) //om minimera ska bästa score vara högt
            {
                bästaScore = 10000;
            }
            //Loopa genom alla rutor
            for (int y = 0; y < egetSpel.storlek; y++)
            {
                for (int x = 0; x < egetSpel.storlek; x++)
                {
                    if (egetSpel.ärTom(x, y))
                    {
                        egetSpel.görDrag(x, y);
                        int score = minimax(1, -10000, 10000, !maximize, maxDjup); //Få score för draget
                        egetSpel.taBortDrag(x, y);                                 //Ta bort draget så att nästa drag kan testas

                        //Om score är bättre än bästaScore
                        if ((score > bästaScore && maximize) || (score < bästaScore && !maximize))
                        {
                            bästaScore = score;
                            bästaDrag  = new int[] { x, y };
                        }
                    }
                }
            }
            //Console.WriteLine("Djup " + maxDjup + " score " + bästaScore);
            return(bästaDrag);
        }