Re: Кібор - інтегроване середовище розробки ботів.
В розробці новий Візуальний редактор коду.
В принципі він практично готовий.
Від старого відрізняється практично всім.
По-перше - дана програма є просто движком. Від неї не залежить мову, код на якому буде генеруватися.
Весь функціонал, правила створення коду і навіть діалогові вікна для настройки Блоків створюються в окремих файлах, які лежать в папці з програмою. Програма при запуску зчитує ці файли і на панелі з'являються відповідні кнопки.
Приклад такого файлу який реалізує блок пошуку зображення в Кібор:
[ESCAPE_CHAR]
^
[END]
[APPEARANCE]
COLOR = 0, 0, 100;
SIZE_X = 10;
SIZE_Y =6;
[END]
[INTERFACE]DIALOG, "Поиск изображения", 631, 158;
STATIC, "Путь к файлу", 8, 8, 100, 20;
EDIT, 116, 8, 404, 20, string Path;
BUTTON_FILE, "Путь к файлу", 528, 8, 92, 20, Path;
STATIC, "Сколько искать", 8, 32, 100, 20;
EDIT, 116, 32, 52, 20, int Kol;
STATIC, "Зона поиска старт", 8, 56, 100, 20;
EDIT, 116, 56, 52, 20, int eX1;
EDIT, 172, 56, 52, 20, int eY1;
STATIC, "Зон поиска финиш", 236, 56, 100, 20;
EDIT, 344, 56, 52, 20, int eX2;
EDIT, 400, 56, 52, 20, int eY2;
STATIC, "Количество", 8, 80, 100, 20;
EDIT, 116, 80, 52, 20, int K;
STATIC, "X", 180, 80, 24, 20;
EDIT, 208, 80, 72, 20, int X;
STATIC, "Y", 288, 80, 24, 20;
EDIT, 320, 80, 72, 20, int Y;
STATIC, "Заполнять массив с индекса", 400, 80, 156, 20;
EDIT, 560, 80, 60, 20, int I;
BUTTON_OK, "Принять", 412, 108, 100, 20;
BUTTON_CANCEL, "Закрыть", 520, 108, 100, 20;
[END]
[ASSOC_NUMBER]
Path
[END]
[ASSOC_VAR]
Path="C:\Image_0.bmp";
I=0;
Kol = 1;
eX1=0;
eY1=0;
eX2=1024;
eY2=768;
X = X_Kib;
Y = Y_kib;
K = K_kib;
X_V = #~X~[~I~];
Y_V = #~Y~[~I~];
K_V = #~K~;
Image = #Image~*~;
[END]
[GLOBAL_VAR]
int ~K~, ~X~[1000], ~Y~[1000];
int Image~*~[~GET(imagewidth(~Path~))~][~GET(imageheight(~Path~))~];
[END]
[GLOBAL_REPEAT_CODE]
loadimage(#Image~*~[0][0], ~Path~);
[END]
[FUNCTION_BODY]
function (int #image, int kol, int #mK, int #mX, int #mY, int ex1, int ey1, int ex2, int ey2)
{
mK=findimage(kol, #image[0][0], -1, #mX[0], #mY[0], ex1, ey1, ex2, ey2, -1);
return mK;
}
[END]
[CALL]
(Image[0][0], Kol, K_V, X_V, Y_V, eX1, eY1, eX2, eY2)
[END]
[FUNCTION_LOGIC]
>0
[END]
Приклад блоку циклу for
[INTERFACE]
DIALOG, "for", 619, 109;
STATIC, "Имя переменной", 8, 4, 92, 20;
EDIT, 108, 4, 100, 20, int Var;
STATIC, "Начальное значение", 8, 28, 108, 20;
EDIT, 120, 28, 72, 20, int Init;
STATIC, "Условие", 200, 28, 44, 20;
EDIT, 248, 28, 232, 20, int Cond;
STATIC, "Счетчик", 488, 28, 44, 20;
EDIT, 536, 28, 72, 20, int Counter;
BUTTON_OK, "Принять", 400, 56, 100, 20;
BUTTON_CANCEL, "Закрыть", 508, 56, 100, 20;
[END]
[APPEARANCE]
COLOR = 0, 0, 0;
SIZE_X = 48;
SIZE_Y =28;
[END]
[ASSOC_VAR]
Var = N;
Init = 0;
Cond = N<5;
Counter = N++;
cInit = ~Var~=~Init~;
[END]
[GLOBAL_VAR]
int ~Var~;
[END]
[CALL]
(cInit; Cond; Counter)
[END]
[GROUP_BLOCK]
START = {
END = }
ENTER_EXIT =1
CONNECTION=1
[END]
Такі шаблони можна створювати окремо, не модифікуючи програму.
Такий код виходить з такої схеми. (Всі блоки розставлені хаотично і створені не по порядку)
Гото не так багато. У блоках {} код сортується цілком пристойно.