Val_027 |
Отправлено: 03 Мая, 2020 - 08:20:11
|
Участник
Покинул форум
Сообщений всего: 114
Дата рег-ции: Февр. 2020
Репутация: 0
|
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; // но так не работает(Отредактировано автором: 03 Мая, 2020 - 08:21:05) |
|
|
Nikanr |
Отправлено: 03 Мая, 2020 - 10:41:14
|
Специалист
Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019
Репутация: 5
|
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");
}
(Добавление)
Еще рекомендую изучить справку по функциям в кибор Тык |
|
|
Val_027 |
Отправлено: 03 Мая, 2020 - 18:28:16
|
Участник
Покинул форум
Сообщений всего: 114
Дата рег-ции: Февр. 2020
Репутация: 0
|
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");
так да ? |
|
|
Val_027 |
Отправлено: 05 Мая, 2020 - 10:29:37
|
Участник
Покинул форум
Сообщений всего: 114
Дата рег-ции: Февр. 2020
Репутация: 0
|
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:
Вот все красиво ! но можно ли выводимый текст увеличить /очень мелко/
мерцает в окне печалька(Отредактировано автором: 05 Мая, 2020 - 10:30:48) |
|
|
Zireael |
Отправлено: 05 Мая, 2020 - 13:15:30
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: но можно ли выводимый текст увеличить /очень мелко
https://kibor-bot.com/forum/topi...m=6&topic=82
Цитата: мерцает в окне печалька
Последний параметр в textout поставить 0 и не будет мерцать. |
|
|
Val_027 |
Отправлено: 05 Мая, 2020 - 16:41:06
|
Участник
Покинул форум
Сообщений всего: 114
Дата рег-ции: Февр. 2020
Репутация: 0
|
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);
ТАК в принципе работает пока не откроешь окно игры |
|
|
|