Example #1
0
        public override void Step()
        {
            if (gui != null && myMoves.Any())
            {
                gui.Set(me, myMoves.Last().X, myMoves.Last().Y);
                if (CurrentMode != LEARN)
                {
                    Thread.Sleep(100);
                }
            }
            if (!IsEnd() && isRunning)
            {
                if (CurrentMode == LEARN)
                {
                    Point p = openSpaces.OrderBy(x => random.Next()).First();
                    openSpaces.Remove(p);
                    yourMoves.Add(p);

                    WriteOutput("Random move: " + p + " => " + ToString());

                    if (gui != null)
                    {
                        gui.Set(you, p.X, p.Y);
                    }
                }
                else
                {
                    WriteOutput("Waiting for your move...");
                    ManualResetEvent wait = new ManualResetEvent(false);
                    gui.Prompt(wait);
                    wait.WaitOne();


                    Point p = gui.selected;
                    if (p.X >= 0)
                    {
                        WriteOutput("Your move received: " + p);

                        openSpaces.Remove(p);
                        yourMoves.Add(p);

                        gui.Set(you, p.X, p.Y);
                        Thread.Sleep(100);
                    }
                    else
                    {
                        gui = null;
                        Abort();
                    }
                }
            }
        }
Example #2
0
        public override void Step()
        {
            if (gui != null && myMoves.Any())
            {
                gui.Set(me, myMoves.Last().X, myMoves.Last().Y);
                if (CurrentMode != LEARN) Thread.Sleep(100);
            }
            if (!IsEnd() && isRunning)
            {
                if (CurrentMode == LEARN)
                {
                    Point p = openSpaces.OrderBy(x => random.Next()).First();
                    openSpaces.Remove(p);
                    yourMoves.Add(p);

                    WriteOutput("Random move: " + p+" => "+ToString());

                    if (gui != null) gui.Set(you, p.X, p.Y);
                }
                else
                {
                    WriteOutput("Waiting for your move...");
                    ManualResetEvent wait = new ManualResetEvent(false);
                    gui.Prompt(wait);
                    wait.WaitOne();


                    Point p = gui.selected;
                    if (p.X >= 0)
                    {
                        WriteOutput("Your move received: " + p);

                        openSpaces.Remove(p);
                        yourMoves.Add(p);

                        gui.Set(you, p.X, p.Y);
                        Thread.Sleep(100);
                    }
                    else
                    {
                        gui = null;
                        Abort();
                    }
                }
            }
        }