Example #1
0
 public void ScriptTestMethod()
 {
     var config = new TestConfig();
     Commands commands = new Commands(config);
     config.ReadConfig(new string[] {
         "x-offset=10",
         "y-offset=50",
         "image=firstpic:data\\hint.png"
     });
     Script.InitScript(commands);
     GImage img = new GImage("data\\testsource.png");
     Script s = new Script("test");
     // Грузим исходную картинку, на которой осуществляется поиск
     s.Parse("match firstpic");
     {
         ScriptState st = new ScriptState(s, img);
         Run(s, st);
         Assert.IsTrue(st.Rectangle.Equals(new Rectangle(1238, 853, 196, 37)), "Не найден прямоугольник");
     }
     s = new Script("test");
     s.Parse("setmode first");
     s.Parse("mode first");
     {
         ScriptState st = new ScriptState(s, img);
         Run(s, st);
         Assert.IsTrue(st.Running, "Тест не продолжился");
     }
     s.Parse("mode nfirst");
     {
         ScriptState st = new ScriptState(s, img);
         Run(s, st);
         Assert.IsFalse(st.Running, "Тест продолжился ошибочно");
     }
 }
Example #2
0
 public void TM()
 {
     var config = new TestConfig();
     Commands commands = new Commands(config);
     config.ReadConfig(new string[] {
         "x-offset=10",
         "y-offset=50",
     });
     Script.InitScript(commands);
     var img = new GImage(@"data\leofield.jpg");
     Script s = new Script("test");
     // Грузим исходную картинку, на которой осуществляется поиск
     s.Parse("detectfield");
     s.Parse("fielddetected");
     s.Parse("fieldcells");
     {
         ScriptState st = new ScriptState(s, img);
         Run(s, st);
         StringBuilder sb = new StringBuilder(1024);
         for (var y = 0; y < ScriptState.FieldSize.Height; ++y)
         {
             for (var x = 0; x < ScriptState.FieldSize.Width; ++x)
             {
                 var c = st[x, y];
                 var t = c.NotOpened ? '_' : c.Flag ? 'P' : c.Empty ? ' ' : (char)((byte)'0' + c.Number);
                 sb.Append(t);
                 sb.Append(' ');
             }
             sb.Append("\n");
         }
         File.WriteAllText("out.txt", sb.ToString());
     }
 }
Example #3
0
 public void DetectField()
 {
     var config = new TestConfig();
     Commands commands = new Commands(config);
     config.ReadConfig(new string[] {
         "x-offset=10",
         "y-offset=50",
     });
     Script.InitScript(commands);
     GImage img = new GImage("data\\fullfield.png");
     Script s = new Script("test");
     // Грузим исходную картинку, на которой осуществляется поиск
     s.Parse("detectfield");
     s.Parse("fielddetected");
     var nimg = new GImage("data\\nofield.png");
     {
         ScriptState st = new ScriptState(s, nimg);
         Run(s, st);
         Assert.IsFalse(st.Running, "Лишнее поле нашлось");
     }
     {
         ScriptState st = new ScriptState(s, img);
         Run(s, st);
         Assert.IsTrue(st.Running, "Поле не нашлось");
     }
 }
Example #4
0
 public void FlashDetectTest()
 {
     var config = new TestConfig();
     Commands commands = new Commands(config);
     config.ReadConfig(new string[] {
         "max-width=1000",
         "max-height=800"
     });
     var img = new Bitmap("data\\nofield.png");
     GImage.FindFlash(config, true, true, img);
     var r = new GImage(img);
     r.Draw(new Rectangle(config.xOffset, config.yOffset, config.maxWidth, config.maxHeight), new Gray(128), 2);
     //r.Save("0.bmp");
     Assert.AreEqual(832, config.xOffset, "Detect X");
     Assert.AreEqual(130, config.yOffset, "Detect Y");
 }
Example #5
0
 /// <summary>
 /// Инициализация скриптового движка
 /// </summary>
 /// <param name="commands">Ссылка на список команд</param>
 public static void InitScript(Commands commands)
 {
     commandList = commands;
 }
Example #6
0
 /// <summary>
 /// Загрузить скрипты из файла
 /// </summary>
 /// <param name="cfg">Ссылка на объект конфигурации</param>
 /// <param name="commands">Ссылка на список команд</param>
 /// <returns>Список скриптов</returns>
 public static Script[] LoadScript(Config cfg, Commands commands)
 {
     InitScript(commands);
     var scripts = new List<Script>();
     var a = System.IO.File.ReadAllText(@"mine.script").Split('\n');
     Script current = null;
     foreach (var s in a)
     {
         if (!string.IsNullOrWhiteSpace(s))
         {
             var st = s.Trim();
             if (!(st.StartsWith("#") || st.StartsWith("//")))
             {
                 // Начало блока скрипта с переменной
                 if (st.StartsWith("@"))
                 {
                     var p = st.IndexOf(':');
                     if (p < 0)
                         Program.log.Error("Script name definition error {0}", s);
                     else
                     {
                         var sn = st.Substring(1, p - 1).Trim();
                         if (!scripts.Exists(m => m.Name == sn))
                         {
                             current = new Script(sn);
                             current.Parse(st.Substring(p + 1));
                             scripts.Add(current);
                         }
                         else
                         {
                             Program.log.Error("Duplicate script {0}", s);
                         }
                     }
                 }
                 else if (current == null)
                 {
                     // До первого скрипта - блок глобальных параметров
                     cfg.ReadConfig(st);
                 }
                 else
                     // После заголовка скрипта всё относится к нему
                     current.Parse(s);
             }
         }
     }
     return scripts.ToArray();
 }
Example #7
0
 public MainForm()
 {
     InitializeComponent();
     kmine.WindowTarget.RegisterWindow(this);
     commands = new Commands(config);
 }