forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=48)
-   -   нажатие кнопок подряд (http://forum.boolean.name/showthread.php?t=7870)

Piligrim 22.02.2009 20:37

Ответ: нажатие кнопок подряд
 
Стоп! Кто где завершен? Просто вставляем код в основной цикл обработки нажатий клавиш.
Если прошло условие, то делаем что надо, а иначе просто обрабатывает очередную нажатую клавишу.
Под три символа заточен из условия автора темы, никто не мешает проверить и два с помощью
if(s.endsWith("98"){
просто этой функции нет в МР, но ее можно легко написать

impersonalis 22.02.2009 20:48

Ответ: нажатие кнопок подряд
 
просто память хаваетцо и хаваетцо =\
а если пользователь килобайт текста натарабанит до контрольного слова?
В остальном алгоритмы не отлчиаютцо.

Piligrim 23.02.2009 10:31

Ответ: нажатие кнопок подряд
 
На каждом цикле
Цитата:

l := Length(s);
s := Copy(s, l-3, l); //отрезаем последние три клавиши.

Phantom 23.02.2009 10:45

Ответ: нажатие кнопок подряд
 
Такая мелкая тема заинтересовала местных гигантов программирования =) Круть =)

jimon 23.02.2009 11:01

Ответ: нажатие кнопок подряд
 
можно по-извращатся и оптимизировать до максимума
расмотрим integer : abcd, то-есть в нём 4 байта
клавишу телефона можно кодировать 1 байтом
младший байт d не будем использовать (нужна комбинация из 3)
потому d всегда равен 0

после нажатия клавиши мы смещяем этот integer в лево на байт
пишем в c нашу текущую клавишу
и потом проверяем весь integer с заранее подготовленым числом которое означает комбинацию
после прохождения какого нибудь времени (300 мс) после последнего нажатия - можно обнулить наш integer чтобы комбинация не сработала без учёта времени между клавишами

для комбинаций больше чем 4 клавиши надо что-то другое использовать

Phantom 23.02.2009 11:30

Ответ: нажатие кнопок подряд
 
Если использовать только числовые клавиши 0-9, то хватит 4 байт на клавишу =) Значит в int можно впихнуть уже 8 символов =) А если больше, можно несколько переменных заюзать. Может либу написать? Lib_cheats =)

impersonalis 23.02.2009 14:51

Ответ: нажатие кнопок подряд
 
протупил =(
тогда алгоритмы одинаковы

Dj_Alex 10.03.2009 22:50

Ответ: нажатие кнопок подряд
 
да просто можно сделать

s=0;
repeat
key:=getKeyPressed;
if (s=0) and (key=KE_KEY1) then s:=1;
if (s=1) and (key=KE_KEY2) then s:=2;
if (s=2) and (key=KE_KEY3) then s:=3;
until s=3;
......
Еще нада б добавить условие, что при нажатии др. кнопки s=0

odd 11.03.2009 01:50

Ответ: нажатие кнопок подряд
 
Я раньше тоже так делал, но потом тоже догадался всё в одну строку склеивать и потом уже сравнивать строки. Это более оптимальный вариант. Так что можно теперь смело вставлять в свои мидлеты т.н. "пасхальные яйца".

im_zorg 06.02.2010 11:33

Ответ: нажатие кнопок подряд
 
Цитата:

Сообщение от odd (Сообщение 100238)
Я раньше тоже так делал, но потом тоже догадался всё в одну строку склеивать и потом уже сравнивать строки. Это более оптимальный вариант. Так что можно теперь смело вставлять в свои мидлеты т.н. "пасхальные яйца".

Напиши плиз либу! А то у меня не получается(((


Часовой пояс GMT +4, время: 02:57.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot