Exemple #1
0
 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);
        }
Exemple #4
0
 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);
     }
 }
Exemple #5
0
        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");
        }
Exemple #7
0
 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);
     }
 }
Exemple #8
0
        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 ##");
            }
        }