Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > FAQ

FAQ Часто задаваемые вопросы

Ответ
 
Опции темы
Старый 20.02.2009, 13:45   #1
temned
Знающий
 
Аватар для temned
 
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений
(для 33 пользователей)
Счастье нажатие кнопок подряд

Как проверить нажатие несколько кнопок подряд напримеР?
К примеру у меня есть определенная последовательнос ть -987, как сделать так, чтобы если вводишь ее - то происходило действие.
Пытался что-то типа ифов:
if key = KE_KEY8 then
begin
**задержка
 
if key KE_KEY7 then
**задержка
begin 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dmitriy-dim (14.09.2010)
Старый 20.02.2009, 13:58   #2
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: нажатие кнопок подряд

Гы. Делал такое. Выглядело как аццкий быдлокод До сих пор чувствую, что можно проще как-то. Я только в java делал и использовал switch, в паскале его нет, придётся делать при помощи "else if".
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dmitriy-dim (14.09.2010)
Старый 20.02.2009, 19:12   #3
temned
Знающий
 
Аватар для temned
 
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений
(для 33 пользователей)
Ответ: нажатие кнопок подряд

Если не трудно дай код операции, просто у меня што-то не полушается
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dmitriy-dim (14.09.2010)
Старый 21.02.2009, 03:40   #4
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: нажатие кнопок подряд

Блин. Кода не осталось. Делай так. Создавай числовую переменную, например, 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; (или как там в паскале?). В итоге у тебя при запуске программы будет выполняться цикл и ждать, когда ты введёшь код, как только ты его введёшь, из цикла выкинет и будет выполняться любой код, который находится за циклом. Вроде правильно всё написал.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dmitriy-dim (14.09.2010)
Старый 21.02.2009, 11:52   #5
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: нажатие кнопок подряд

Если нажатия должны произойти в основном цикле, как секретный код, то можно просто писать нажатые клавиши в строку и сравнивать с нужной последовательностью. Например так
:= IntegerToString(key);
:= Length(s);
:= Copy(sl-3l); //отрезаем последние три клавиши.
if s='987' then //нажимали, то что нужно 
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Piligrim за это полезное сообщение:
dmitriy-dim (14.09.2010), impersonalis (22.02.2009), Phantom (21.02.2009)
Старый 21.02.2009, 12:19   #6
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: нажатие кнопок подряд

Во я дурак
(Offline)
 
Ответить с цитированием
Старый 21.02.2009, 21:49   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: нажатие кнопок подряд

Ну вы блин даёте
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 21.02.2009, 22:30   #8
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: нажатие кнопок подряд

impersonalis, ты знаешь ещё более короткий и рациональный способ? О_о Поделись =)
(Offline)
 
Ответить с цитированием
Старый 22.02.2009, 00:22   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: нажатие кнопок подряд

Нет, я делаю буфер длиной в кодовое слово.
Перед заполнении очредного байта содержимое буфера претрепевате сдвиг в сторну уменьшения индекса:
например, кодое слово WOW
создаём буфер на 3 элемента,
доупстим поток сообщений от ус-ва ввода такой: WO1GHWOWW
буфер будет выглядеть так (изначально буфер забит нулями или иными неанализируемымыи байтами-маркёрами, доупстим "*"):
***
**W
*WO
WO1
O1G
1GH
GHW
HWO
WOW тут произойдёт срабатывание
OWW
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
dmitriy-dim (14.09.2010), Tadeus (22.02.2009)
Старый 22.02.2009, 00:50   #10
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: нажатие кнопок подряд

Хм... Очень интересно... А что это за буфер такой? В принципе можно это и со строкой сделать.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dmitriy-dim (14.09.2010)
Старый 22.02.2009, 01:29   #11
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: нажатие кнопок подряд

буфер это алгоритмическая абстракция, харакетризующая лишь функциональность объекта, а не его реализацию. В принципе я описал алгоритм pilgrim-а, но для случая непрерывного потока с минимальным расходом памяти.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Phantom (22.02.2009)
Старый 22.02.2009, 12:29   #12
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: нажатие кнопок подряд

В принципе я описал алгоритм pilgrim-а, но для случая непрерывного потока с минимальным расходом памяти.
Спорный вопрос, если иметь в виду МР. Он не поддерживает байтовые переменные. Значит элемент массива будет integer = 4 байта. А по другому буфер реализовать сложно.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dmitriy-dim (14.09.2010)
Старый 22.02.2009, 16:38   #13
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: нажатие кнопок подряд

у тебя строка - контейнер байтов. С методами добавления элементов - перевыделния памяти (сложно, долго, нерационально). В то время как размер её не может превышать кодовго слова.
Поправь, если ошибаюсь.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dmitriy-dim (14.09.2010)
Старый 22.02.2009, 17:07   #14
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: нажатие кнопок подряд

обработка строки будет в главном цикле.
перевыделение памяти (несколько байт) за один игровой цикл - не слишком накладно, имхо.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dmitriy-dim (14.09.2010)
Старый 22.02.2009, 19:59   #15
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: нажатие кнопок подряд

Хорошо, а как применять этот алгоритм для обработки потока?
В данном услучае алгоритм со строкой заточен на введние 3х символов, после которых цикл ввода завершён с одним из условий.
А что если ввод осуществляется постоянно? например как читы в ГТА3
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lib_keys : Одновременное нажатие кнопок. Cliffe Snake Библиотеки 25 04.07.2014 22:40
Как проверить нажатие сразу нескольких кнопок? Kostia FAQ 5 07.08.2009 03:47
Создание меню и кнопок в Blitz на C++ Aceton C++ 9 06.04.2009 16:29
нажатие на правый и левый софткей ЯМАКc MidletPascal 8 28.03.2009 17:07
Обработка нажатий кнопок Skythrone Прочие вопросы 4 11.11.2008 13:10


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com