private void button3_Click(object sender, EventArgs e) { using (StreamReader sr = new StreamReader("rules.txt")) { RI = new RuleInterpreter(sr.ReadToEnd()); textBox1.Text = RI.ToString(); } }
public void Example1() { const string ruleString = "toggle 0,0 through 99,99"; var rule = RuleInterpreter.Eval(ruleString); var newGrid = rule.ExecuteRule(LightGrid.Create(100, 100)); var lightsLit = newGrid.GetLights(); Assert.Equal(10000, lightsLit); }
public void ToggleRules_ReturnsToggleRule() { const string ruleString = "toggle 0,0 through 999,999"; var rule = RuleInterpreter.Eval(ruleString); var toggleRule = Assert.IsType <ToggleRule>(rule); Assert.Equal(0, toggleRule.From.X); Assert.Equal(0, toggleRule.From.Y); Assert.Equal(999, toggleRule.To.Y); Assert.Equal(999, toggleRule.To.Y); }
private void buttonPrecheck_Click(object sender, EventArgs e) { try { List <Rule> rules = RulesReader.readRules(); RuleEvaluator evaluator = new RuleEvaluator(rules); RuleInterpreter interpreter = new RuleInterpreter(settings.SmallBlind, settings.BigBlind); DateTime startCheck = DateTime.Now; interpreter.precheck(rules); Log.Info("# prechecking rules took " + DateTime.Now.Subtract(startCheck).TotalMilliseconds + " ms"); } catch (Exception ex) { ErrorHandler.ReportException(ex, "precheck rules"); MessageBox.Show(ex.Message, "Error Precheck", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void Form1_Load(object sender, EventArgs e) { target = pictureBox1.CreateGraphics(); bg = BufferedGraphicsManager.Current.Allocate(target, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height)); bg.Graphics.SmoothingMode = SmoothingMode.HighQuality; bg.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; using (StreamReader sr = new StreamReader("rules.txt")) { RI = new RuleInterpreter(sr.ReadToEnd()); textBox1.Text = RI.ToString(); for (int i = 0; i < RI.RuleSet.Length; ++i) { checkedListBox1.Items.Add("[" + RI.RuleIDs[i] + "]" + RI.RuleDescriptions[i], true); } } }
public void ShouldWork() { // Arrange var rules = new List <string> { "light red bags contain 1 bright white bag, 2 muted yellow bags.", "muted yellow bags contain 2 shiny gold bags, 9 faded blue bags." }; var interpreter = new RuleInterpreter(); // Act var bags = interpreter.InterpretRules(rules); // Assert var redBag = bags.Single(i => i.Name == "light red"); var yellowBag = redBag.Children.Single(i => i.Name == "muted yellow"); yellowBag.Children.Should().Contain(i => i.Name == "shiny gold"); yellowBag.Children.Should().Contain(i => i.Name == "faded blue"); }
private void button4_Click(object sender, EventArgs e) { using (StreamReader sr = new StreamReader("rules.txt")) { RI = new RuleInterpreter(sr.ReadToEnd()); textBox1.Text = RI.ToString(); Context context = new Context(new TestDeclares(), new TestOperations(), new TestSetters(), new Interpreter.BaseContext.BaseConstants()); InferenceEngine engine = new InferenceEngine(RI, context, factPool); engine.FindAllFacts(); string res = ""; for (int i = 0; i <= 200; ++i) { if (factPool.isDiagnal[i]) { res += i.ToString() + " "; } } textBox1.Text += engine.LogText; MessageBox.Show(res); } }
public static void Main(string[] args) { Log.SetLevel(Log.Level.FINE); BotAppLogic.Beep(settings); Point offset; Iterator <Image> screen; DeviceControl deviceControl; if (INPUT_MODE == InputMode.WIN32) { Console.WriteLine("## win32 mode ##"); deviceControl = new Win32Control(); // wait Log.Info("waiting ..."); Thread.Sleep(10000); // full screen Console.WriteLine("## scanning for table ##"); Image fullScreen = new ScreenImageIterator(deviceControl).next(); offset = PatternLocator.locateTable(fullScreen); Console.WriteLine("table found at x=" + offset.X + " y=" + offset.Y); // desk screen = new ScreenImageIterator(deviceControl, new Rectangle(offset.X, offset.Y, new TableLayout9().Size.Width, new TableLayout9().Size.Height)); screen = new WaitDeltaImageIterator(screen); } else if (INPUT_MODE == InputMode.VM) { Console.WriteLine("## vm mode ##"); // boot deviceControl = new VirtualBoxControl(BotAppLogic.ReadConfig()["vm"]); // poker Console.WriteLine("waiting for pokerstars ..."); Console.ReadKey(); // mouse deviceControl.ResetMouse(); // full screen Console.WriteLine("## scanning for table ##"); Image fullScreen = new ScreenImageIterator(deviceControl).next(); offset = PatternLocator.locateTable(fullScreen); Console.WriteLine("table found at x=" + offset.X + " y=" + offset.Y); // desk screen = new ScreenImageIterator(deviceControl, new Rectangle(offset.X, offset.Y, new TableLayout9().Size.Width, new TableLayout9().Size.Height)); screen = new WaitDeltaImageIterator(screen); } else { Console.WriteLine("## mock mode ##"); screen = new MockWaitImageIterator(1000, ImageTools.toImage(new Bitmap("test/table_check_free.png"))); offset = new Point(renderer.Control.Location.X + 5, renderer.Control.Location.Y + 15); deviceControl = new Win32Control(); } // identifier TableLayout layout = new TableLayout9(offset); TableIdentifier tableIdentifier = new TableIdentifier(layout); tableIdentifier.Renderer = renderer; // evaluator List <Rule> rules = RulesReader.readRules(); RuleEvaluator evaluator = new RuleEvaluator(rules); RuleInterpreter interpreter = new RuleInterpreter(settings.SmallBlind, settings.BigBlind); // controller double betSlideTextLimit = settings.PlayMoney ? 100 : 0.2; Mouse mouse = new HumanMouse(deviceControl); Keyboard keyboard = new Keyboard(deviceControl); Controller controller = new Controller(keyboard, mouse, betSlideTextLimit, tableIdentifier, new ScreenImageIterator(deviceControl)); // replayer Replayer replayer = new Replayer(deviceControl); // auto-click RandomClicker clicker = new RandomClicker(new Point(deviceControl.DisplayWidth, 0), mouse); // initial table Console.WriteLine("## initial table scan ##"); string player = BotAppLogic.ReadConfig()["name"]; Console.WriteLine("looking for '" + player + "'"); int seat = -1; /*while (seat == -1) * { * Table previousTable = tableIdentifier.identifyTable(screen.next(), TableIdentifier.PlayerInfoEnum.BOTH); * seat = BotAppLogic.IdentifySeat(previousTable, player); * Thread.Sleep(1000); * } * Console.WriteLine("my seat = " + (seat+1)); */ seat = 4; // loop while (screen.hasNext()) { // start Console.WriteLine("## iteration -> start ##"); DateTime start = DateTime.Now; // table Console.WriteLine("# next table image"); Image tableImage = screen.next(); // render table renderer.clearImages(); renderer.renderImage(tableImage, 0, 0); // identify table //try //{ if (tableIdentifier.identifyMove(tableImage)) { Table table = tableIdentifier.identifyTable(tableImage, seat); List <TableControl> controls = tableIdentifier.identifyControls(tableImage); table.MaxBet = BotAppLogic.GetMaxBet(controls); TableContainer container = new TableContainer(0, null, null, layout, seat, false, null); new BotAppLogic(deviceControl).ProcessTable(settings, tableImage, renderer, table, container, evaluator, interpreter, controller, replayer, clicker, controls); } else { BotAppLogic.Sleep(settings, 1000); } /*} * catch(Exception ex) * { * Console.WriteLine("Unable to identify table"); * Console.WriteLine(ex.ToString()); * Thread.Sleep(5000); * continue; * }*/ // end double time = DateTime.Now.Subtract(start).TotalMilliseconds; Console.WriteLine("## iteration -> end -> " + time + " ms ##"); } }