Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Реализация подпрограммы

Страниц (2): [1] 2 »
 

1. Val_027 - 03 Мая, 2020 - 00:20:11 - перейти к сообщению
goto NASTR;start:
loop(30000){ // тут у нас основное тело где ждем что нажмем то и сделаем

if(getkeystate (NUMPAD2)==1){goto SHOT} // ШОТ 2
if(getkeystate (NUMPAD5)==1){goto ATAK} // ATAK 5
if(getkeystate (8)==1){goto PEREX} // ВХОД <--
if(getkeystate (145)==1){goto EXIT} // НА ВЫХОД SCROLL

END:visualwindow(0,0,0,135,4,547,735,245,#WAIT[0][0]);sleep(60)}

ATAK: .тут атака ... ;goto END;

NASTR: // ТУТ обьявляю переменные /малую часть показал/
//ВОТ СПЕЦИАЛЬНО ТУТ ИХ ПРЯЧУ в СВЯЗИ С ЭТИМ ВОПРОС
через команду goto. мне кажется как то не очень красиво.
может как то реализовать это с помощью функции Прошу подсказки а то как то не
догоняю.......
/делаю все это для удобства читаемости кода /визуалкой не пользуюсь/ а таких небольших
кодов у меня вагон уже..

win W[10]; external(INT, "MoveWindow", "MoveWindow", "User32");
int XP1,YP1,PATI[5][15]; loadimage(#PATI[0][0], "Z:\!!!\PATI.bmp");
int XP2,YP2,ZAD[9][9]; loadimage(#ZAD[0][0], "Z:\!!!\ZAD.bmp");
int XP,YP, PANEL[9][9]; loadimage(#PANEL[0][0], "Z:\!!!\PANEL.bmp");
int X9,Y9,B_NIP[14][9]; loadimage(#B_NIP[0][0], "Z:\!!!\B_NIP.bmp");
int X8,Y8,Y_NIP[15][8]; loadimage(#Y_NIP[0][0], "Z:\!!!\Y_NIP.bmp");
int X0,Y0,BESH[10][10]; loadimage(#BESH[0][0], "Z:\!!!\BESH.bmp");
int X1,Y1,XLAD[10][10]; loadimage(#XLAD[0][0], "Z:\!!!\XLAD.bmp");
int X10,Y10,KV_NIP[10][9];loadimage(#KV_NIP[0][0],"Z:\!!!\KV_NIP.bmp");
int T_ДРАК[143][39]; loadimage(#T_ДРАК[0][0],"Z:\!!!\T_ДРАК.bmp");
int X11,Y11,WORK[135][4]; loadimage(#WORK[0][0], "Z:\!!!\WORK.bmp");
int WAIT[135][4]; loadimage(#WAIT[0][0], "Z:\!!!\WAIT.bmp");
int OK[46][40]; loadimage(#OK[0][0], "Z:\!!!\OK.bmp");
win wind=getwindow(1,1810,5);activate(wind); //1 то КОНТРОЛЛ ПО КООР X=2,Y=2
goto start;
EXIT:

заранее спасибо



что то типа этого
perem;


function perem
(
int X2,Y2,STAN[10][10]; loadimage(#STAN[0][0],"Z:\!!!\STAN.bmp");
int X3,Y3,STOP[10][10]; loadimage(#STOP[0][0],"Z:\!!!\STOP.bmp");
int X4,Y4,PARA[10][10]; loadimage(#PARA[0][0],"Z:\!!!\PARA.bmp");
int T_STAN[115][50]; loadimage(#T_STAN[0][0],"Z:\!!!\T_STAN.bmp");
int T_ATAK[400][50]; loadimage(#T_ATAK[0][0],"Z:\!!!\T_ATAK.bmp");
int OK[46][40]; loadimage(#OK[0][0],"Z:\!!!\OK.bmp");
)
return; // но так не работает
2. Nikanr - 03 Мая, 2020 - 02:41:14 - перейти к сообщению
 Val_027 пишет:
тут у нас основное тело где ждем что нажмем то и сделаем


Можно создать таймер отслеживающий параметры, и getkeystate перенести туда. Что-то по типу такого:

CODE:
CREATE_TIMER(0, 100){

if(getkeystate(90)){

while(getkeystate(90))pause(10);

//некоторые действия.
}
}


Goto лучше использовать в крайнем случае, и делать себе пометки. Иначе можно запутаться в коде.

Переменные объявленные в функции изолируются от основного кода и используются только в функции (становятся локальными)

return используется для преждевременного выхода из функции или таймера. Используется, когда выполнили определенные действия по некоторому условию в функции/таймере, и нужно вернуть управление в основной код

Если я правильно понял, то можно сделать что-то вроде этого:

CODE:
//Объявляем глобальные переменные, загружаем изображения
//Не обязательно создавать свои xy для каждой findimage

int num=0;

enabletimer(num); //или просто 0 можно передать

loop()pause(10); //бесконечный цикл




CREATE_TIMER(0, 10){ //таймер номер 0 отслеживающий дейстивия раз в 10мс

if(getkeystate(49)){ // клавиша '1'

while(getkeystate(49))pause(10);

m_box(1);

return;

//допустим ниже было бы еще несколько условий, которые уже не надо проверять, т.к
//выполнилось условие выше
}

if(getkeystate(48)){ // клавиша '0'

while(getkeystate(49))pause(10); //пока не отпустим клавишу

m_box(0);

}
}

function m_box(int num){

//Обьявленные в функции переменные будут использоваться только в функции

if(num>0)messagebox("True");

else messagebox("False");
}

(Добавление)
Еще рекомендую изучить справку по функциям в кибор Тык
3. Zireael - 03 Мая, 2020 - 03:36:30 - перейти к сообщению
 Цитата:
а таких небольших кодов у меня вагон уже..

include
4. Val_027 - 03 Мая, 2020 - 10:28:16 - перейти к сообщению
 Zireael пишет:
include

А вот это интересно
#include "C:\Program Files (x86)\Kibor\liba.txt"

Спасибо
/goto/ тут везде можно запутаться если ток в этом проблема то я оставлю пока так.
буду считать для себя это подпрограммой ...
с таймерами пока не разобрался думаю .... ::rolleyes24.gif::
(Добавление)
 Val_027 пишет:
А вот это интересно
#include "C:\Program Files (x86)\Kibor\liba.txt"

а вот по русски не принимает /вроде как/
int T_ДРАК[143][39]; loadimage(#T_ДРАК[0][0],"Z:\!!!\T_ДРАК.bmp");

надо типа
int drak[143][39]; loadimage(#drak[0][0],"Z:\!!!\drak.bmp");

так да ?
5. Zireael - 03 Мая, 2020 - 10:51:53 - перейти к сообщению
 Цитата:
#include "C:\Program Files (x86)\Kibor\liba.txt"
а вот по русски не принимает /вроде как/

Файл должен быть в ansi.
6. Val_027 - 03 Мая, 2020 - 11:49:36 - перейти к сообщению
 Zireael пишет:
Файл должен быть в ansi

так и подумал, ток что с кодировкой проблемы, долго бы искал в какой спасибо!!!
7. Val_027 - 05 Мая, 2020 - 02:29:37 - перейти к сообщению
int x, y;
textbkcolor (255,4259584);
win wind=getwindow(1,1810,5);activate(wind); //1 то КОНТРОЛЛ ПО КООР X=1810 Y=5
a: getmouse(x, y);
textout(4,x+20,y,"X "+format (x)+" Y "+format (y)+" цвет "+format (getcolor(x, y)), 1);
sleep(1000);
if(getkeystate (145)){goto EXIT} // НА ВЫХОД SCROLL
goto a;
EXIT:

Вот все красиво ! но можно ли выводимый текст увеличить /очень мелко/
мерцает в окне печалька
8. Zireael - 05 Мая, 2020 - 05:15:30 - перейти к сообщению
 Цитата:
но можно ли выводимый текст увеличить /очень мелко

https://kibor-bot.com/forum/topi...m=6&topic=82
 Цитата:
мерцает в окне печалька

Последний параметр в textout поставить 0 и не будет мерцать.
9. Val_027 - 05 Мая, 2020 - 08:41:06 - перейти к сообщению
 Zireael пишет:
можно ли



Textout(0,700,590,"X "+format (x)+" Y "+format (y)+" цвет "+format (getcolor(x, y)), 16000000,65280,"Arial",-24,0,0,0,0,0,0,0);

ТАК в принципе работает пока не откроешь окно игры
10. Zireael - 05 Мая, 2020 - 09:05:36 - перейти к сообщению
 Цитата:
ТАК в принципе работает пока не откроешь окно игры

А что потом?
Окно с игрой не должно иметь стиль поверх всех окон.

Powered by ExBB FM 1.0 Final