допустим мне нужно выполнить следующее действие юзер нажимает на разные кнопки в любой последовательности но только если он нажмёт на все кнопки должна будет выполнится определённая команда как это должно выглядеть на простом примере так или как то по другому? If (Show Text, Show Text2, Show Text3) Then i=1 Next page Else End
Onideo, дубль два: Вы пробовали синтаксис условного оператора в справке посмотреть? Уроки ещё есть в верхнем меню. Поинтересуйтесь, будьте так любезны.
Начните с основ. Глядя на код, который Вы указали, делается вывод, что изучением команд заниматься было лень.
Начните с основ. Глядя на код, который Вы указали, делается вывод, что изучением команд заниматься было лень.
почитал я урок "Условный оператор и циклы" и он меня ещё более запутал Не могли бы вы Юрий написать наглядный пример по моей задаче я так лучше пойму что к чему
Добавлено (16 Май 2011, 15:46) --------------------------------------------- все кто может помочь помогите - заранее спасибо!
Практикуйтесь. Придётся разбираться! Если Вас этот этап запутал, а это самое простое, что будет дальше?
Quote (Onideo)
Не могли бы вы Юрий написать наглядный пример по моей задаче
Могу без проблем, да только польза какая? Вы перейдёте к следующему пункту своих работ, а делать также я буду за Вас?
Объясню логику. Программировать уже придётся Вам, иначе даже не занимайтесь этим, если не хотите и/или не получается.
Есть несколько кнопок. Я так понимаю, их количество неизменно и их не очень много? В каждую на событие клика пропишите свою переменную и присваивайте ей единицу. Следом (всё также у каждой кнопки!) пусть идёт условие: если эта переменная равна единице и каждая другая из всех кнопок, то выполняем нужное действие.
Это самый простой для понимания алгоритм. Реализуйте его.
Могу без проблем, да только польза какая? Вы перейдёте к следующему пункту своих работ, а делать также я буду за Вас?
я уже заметил что на примерах которые мне предоставляли и Yuriy и DEMBEL я всё хорошо усваиваю и прогрессирую это как в школе - я хорошо понимаю когда мне объясняет учитель ежели я сам что-то самостоятельно пытаюсь допедрить Помоги с этим примером Юрий, а в следующий раз просто не отвечай- помогут другие!
Добавлено (16 Май 2011, 16:36) ---------------------------------------------
Quote (DEMBEL)
Прикрепления: num.zip(1Kb)
Супер! Спасибо! Ну ведь этого не было в уроках! Я бы до такого сам не додумался!
Добавлено (16 Май 2011, 16:52) ---------------------------------------------
Quote (DEMBEL)
все, я ухожу...
Подожди, не уходи! А если это картинки или "горячие кнопки" - разницы нет? всё делается по этой же схеме?
скрипт Counter If (flag=8) Then Message("","Все нажаты") **сброс данных flag=0 bpress1=0 bpress2=0 bpress3=0 bpress4=0 bpress5=0 bpress6=0 bpress7=0 bpress8=0 End
что такое flag? - в mmb нет такого действия или flag подразумевает все активные действия??? это очень важно? то есть не нужно в скрипте Counter писать названия меток?
А если это картинки или "горячие кнопки" - разницы нет?
нет разницы, какая может быть разница? во всех обьектах есть кнопка скрипт и вкладки действий, пиши там что хочешь
Quote (Onideo)
что такое flag
flag это обычная числовая переменная, ну написал бы я х=х+1 так понятнее переменные могут быть разных типов - числовая (х=1), строковая(х$='1'), массивы(x[y]=1). Записываются по разному. конвертируются через VAL(x) и CHAR(х) в разл. типы.
Quote (Onideo)
то есть не нужно в скрипте Counter писать названия меток?
у тебя в каждом обьекте своя переменная bpress с номером, отвечающая за статус кнопки (была нажата или нет). смотрим не по именам обьектов а по bpress. хотя можно и по именам сделать, но сперва кнопки назвать по порядку. с bpress проще было.
Quote (Onideo)
или flag подразумевает все активные действия???
переменные общие для всего проекта. каждая кнопка добавляет к текущему значению flag единицу и запускает скрипт который проверяет, не равно ли уже flag=8, если равно значит все кнопки нажимались по разу.
это я всё знаю давным-давно тем не менее спасибо ещё раз за то, что чайника на любой стадии развития не бросаешь в трудную минуту! сейчас буду пробовать твой скрипт в деле должно получится, надо привязать "горячие точки" к выполнению одной команды после того как игрок нажмёт на них в разных последовательностях
последовательность тут не учитывается, flag возрастает независимо от порядка нажатия... если тебе нужно учесть именно строгие последовательности, то присваивать нужно не во флаг, а добавлять символы к строковой переменной, потом проверять ее как строку на соответствие заданной строке последовательности, например помимо flag прописать в каждой кнопке posled$=posled$+'1' posled$=posled$+'2' ... posled$=posled$+'8'
Гаспада! Флаг он и в африке флаг. А применительно к програмированию, эт состояние бита, и для подобной задачи вполне подходят битовые операции. в каждой кнопке
Code
кнопа1 rez=rez | 1 RunScript("Script") ------------------ кнопа2 rez=rez | 2 RunScript("Script") ------------------- кнопа3 rez=rez | 4 RunScript("Script") -------------------- кнопаN rez=rez | два в степени номера кнопы RunScript("Script")
Script проверка все ли нажаты
Code
If (rez=31) Then Message("Усе кнопы нажаты! ","rez") End
31 эт на 5 кноп, 2 в 5 степени обнулить поле бит просто - rez=0 Кнопа при нажатии устанавливает соответствующий бит числа в 1 количество кноп ограничены разрядностью числа. но ни кто не запрещает использовать сколь нуна чисел. Дешево и сердито.
во, это прям как надо показано ) хороший приемчик, как я не догадался я ж видел много где похожий принцип, ну чтож в теории слабоваты, все больше тупая практика, стену лбом прошибать... буду юзать везде, отличная шняга для контроля состояний нескольких параметров, причем и по ходу процесса...
Теперь у меня есть 2 образца с которых я буду учиться как правильно подчинять объекты1
Quote (DEMBEL)
если тебе нужно учесть именно строгие последовательности, то присваивать нужно не во флаг, а добавлять символы к строковой переменной, потом проверять ее как строку на соответствие заданной строке последовательности, например помимо flag прописать в каждой кнопке posled$=posled$+'1' posled$=posled$+'2' ... posled$=posled$+'8' в скрипте if posled$='12345876' then...
и всё таки я выбрал версию "Дембеля", но что-то я запутался в скрипте DEMBEL, выдаёт ошибку Syntax Error в этом месте if posled$='12345876' then мне нужно, чтобы была последовательность нажатия кнопок
Добавлено (22 Май 2011, 22:40) --------------------------------------------- скрипт один на эти все эти команды? тот же - Counter?
Добавлено (22 Май 2011, 22:42) ---------------------------------------------
когда думать то начнем? в каждой кнопке при нажатии наращиваем переменную order прибавляя в конец номер кнопки. В скрипте по итогам проверяем order на соответствие заданному порядку.
спасибо! сейчас кое-что на основе этого примера организую в новой игре DEMBEL,
в знак благодарности DEMBEL (он же Калугин Александр Александрович) будет значится в титрах нашей новой игры как консультант разработчика Я не ошибся с Ф.И.О.
DEMBEL, в моей задаче 4 кнопки чтобы сработал скрипт Counter мне нужно нажать сперва на кнопку 2 потом на кнопку 3 в обеих кнопках я прописал скрипты
кнопка 2
Code
If (bpress1=0) Then bpress1=1 flag=flag+1 order$=order$+'1' RunScript("Counter") Else End
кнопка 2
Code
If (bpress2=0) Then bpress2=1 flag=flag+1 order$=order$+'2' RunScript("Counter") Else End
и я создал скрипт Counter
Code
If (order$='12') Then Message("","Порядок правильный") Else End
Но если я нажимаю на кнопки в другой последовательности сперва на кнопку 3 потом на кнопку 2 и затем нажимаю на кнопки в правильной последовательности сперва на кнопку 2 потом на кнопку 3, то скрипт Counter не срабатывает Он срабатывает если нажать единожды сперва на кнопку 2 потом на кнопку 3 А мне нужно чтобы скрипт Counter срабатывал в независимости сколько раз я нажму на эти две кнопки - как только правильная последовательность соблюдена так должен срабатывать скрипт
ну ясное дело, потому что переменная order$ уже заполнена неправильным шлаком. Нужно ее очистить перед началом нужной комбинации, например в начальной кнопке прописать ее обнуление order$='' но это только при условии что она нажимается только один раз, если нажмется посреди комбинации повторно (1212), то order$ затрется снова.