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(); } } } }
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(); } } } }