Exemple #1
0
        private void LocalTest()
        {
            Board b = new Board();

            //b.Matrix = ReqExecutor.GetBoardState();
            b.PrintBoard();

            MinimaxTree tree = new MinimaxTree(b, "RED");
            String      move = String.Join(", ", tree.Answer);

            //Console.WriteLine(b.PlayerScore(0));
            //List<KeyValuePair<int[], int>> steps = b.GetPossibleSteps(0);
            while (Running)
            {
                Thread.Sleep(1000);
            }
        }
Exemple #2
0
        private void timer_Tick(object state)
        {
            KeyValuePair <int, byte[, ]> tryRequest = ReqExecutor.GetBoardState();

            if (tryRequest.Key == 1 && !SearchingAnswer)
            {
                SearchingAnswer = true;

                Board freshData = new Board();
                freshData.Matrix = tryRequest.Value;


                MinimaxTree tree = null;
                Console.WriteLine(ReqExecutor.AvailableTime);

                Task.Delay((int)((ReqExecutor.AvailableTime * 1000) - 210)).ContinueWith(t => {     //makes move when time is up, -150 just to be sure
                    tree.Computing = false;
                    for (int i = 1; i < tree.Answer.Length; i++)
                    {
                        String move = String.Concat("[", tree.Answer[i - 1], ", ", tree.Answer[i], "]");
                        ReqExecutor.MakeMove(move);
                        Thread.Sleep(50);
                    }
                    Console.WriteLine('\n');
                    SearchingAnswer = false;
                });

                tree = new MinimaxTree(freshData, ReqExecutor.MyColor);
                while (SearchingAnswer)    // if there is enough time add depth to tree
                {
                    if (!tree.MustBeat)
                    {
                        tree.TreeDepth += 1;
                        tree.ConstructTree();
                    }
                }
                tree = null;
                GC.Collect();      //Garbage collector forcing
            }
            else if (tryRequest.Key == 2)
            {
                Running = false;
            }
        }