нажатие кнопок подряд
Как проверить нажатие несколько кнопок подряд напримеР?
К примеру у меня есть определенная последовательнос ть -987, как сделать так, чтобы если вводишь ее - то происходило действие. Пытался что-то типа ифов: if key = KE_KEY8 then PHP код:
|
Ответ: нажатие кнопок подряд
Гы. Делал такое. Выглядело как аццкий быдлокод :-D До сих пор чувствую, что можно проще как-то. Я только в java делал и использовал switch, в паскале его нет, придётся делать при помощи "else if".
|
Ответ: нажатие кнопок подряд
Если не трудно дай код операции, просто у меня што-то не полушается
|
Ответ: нажатие кнопок подряд
Блин. Кода не осталось. Делай так. Создавай числовую переменную, например, i:=1; Открывай цикл while 1==1 , в конце которого Delay(50); Внутри цикла куча if i==1 ... else if i==2 ... else if i==3 ... И так столько раз, сколько цифр в проверяемом коде, каждый раз пиши i на один больше, чем раньше. Потом в первом условии проверяй нажата ли первая клавиша кода, если нажата, то i:=i+1; , если не нажата, то i:=1; , во втором условии проверяй нажата ли вторая клавиша кода, если нажата, то снова i:=i+1; , если не нажата, то i:=1; . Потом после последнего if пишешь ещё один и там уже код, который нужно выполнить, например, просто break; (или как там в паскале?). В итоге у тебя при запуске программы будет выполняться цикл и ждать, когда ты введёшь код, как только ты его введёшь, из цикла выкинет и будет выполняться любой код, который находится за циклом. Вроде правильно всё написал.
|
Ответ: нажатие кнопок подряд
Если нажатия должны произойти в основном цикле, как секретный код, то можно просто писать нажатые клавиши в строку и сравнивать с нужной последовательностью. Например так
PHP код:
|
Ответ: нажатие кнопок подряд
Во я дурак :-D
|
Ответ: нажатие кнопок подряд
Ну вы блин даёте
|
Ответ: нажатие кнопок подряд
impersonalis, ты знаешь ещё более короткий и рациональный способ? О_о Поделись =)
|
Ответ: нажатие кнопок подряд
Нет, я делаю буфер длиной в кодовое слово.
Перед заполнении очредного байта содержимое буфера претрепевате сдвиг в сторну уменьшения индекса: например, кодое слово WOW создаём буфер на 3 элемента, доупстим поток сообщений от ус-ва ввода такой: WO1GHWOWW буфер будет выглядеть так (изначально буфер забит нулями или иными неанализируемымыи байтами-маркёрами, доупстим "*"): *** **W *WO WO1 O1G 1GH GHW HWO WOW тут произойдёт срабатывание OWW |
Ответ: нажатие кнопок подряд
Хм... Очень интересно... А что это за буфер такой? В принципе можно это и со строкой сделать.
|
Ответ: нажатие кнопок подряд
буфер это алгоритмическая абстракция, харакетризующая лишь функциональность объекта, а не его реализацию. В принципе я описал алгоритм pilgrim-а, но для случая непрерывного потока с минимальным расходом памяти.
|
Ответ: нажатие кнопок подряд
Цитата:
|
Ответ: нажатие кнопок подряд
у тебя строка - контейнер байтов. С методами добавления элементов - перевыделния памяти (сложно, долго, нерационально). В то время как размер её не может превышать кодовго слова.
Поправь, если ошибаюсь. |
Ответ: нажатие кнопок подряд
обработка строки будет в главном цикле.
перевыделение памяти (несколько байт) за один игровой цикл - не слишком накладно, имхо. |
Ответ: нажатие кнопок подряд
Хорошо, а как применять этот алгоритм для обработки потока?
В данном услучае алгоритм со строкой заточен на введние 3х символов, после которых цикл ввода завершён с одним из условий. А что если ввод осуществляется постоянно? например как читы в ГТА3 |
Часовой пояс GMT +4, время: 19:53. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot