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

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

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 04.12.2011, 14:49   #1
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Однократное нажатие

Вот есть меню. Пункт выбирается стрелочками.
Но есть только функция проверки нажатости нужных клавиш.
Если нажато - выбрать следующий пункт. И указатель несется как хрен знает что, сразу на двадцать пунктов за одно нажатие.

Приходится вешать флажок:
flag = True
if flag and key_pressed: do(); flag = False
if no_keys_pressed: flag = True
Можно это как-то красивее сделать?
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 04.12.2011, 17:29   #2
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Однократное нажатие

Может ограничить кол-во переключений в секунду? Делать переключение раз в 300-400 миллисекунд и если есть еще вызовы в течении этого отрезка времени игнорировать их.

Команды идентичной KeyHit() я так понимаю нету.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
FireOwl (05.12.2011)
Старый 08.12.2011, 14:35   #3
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Однократное нажатие

Обработав нажатие, занулить key_pressed.
(инфу об удержании зажатых кнопок, если надо, хранить в другой переменной key_status)
(Offline)
 
Ответить с цитированием
Старый 08.12.2011, 15:37   #4
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Однократное нажатие

Да, можно бы и так, но "вигвам" устроен так:
Есть функция, что возвращает массив (список) boolean переменных -
для каждой кнопки своя. И все.
Можно его и сохранить и изменять, но смысла нет, т.к. в секунду ~30 кадров, и апдейтов. И список за секунду раз тридцать сменится. Вполне хватит, чтобы сдвинуть указатель не на один пункт, а почти до конца.
Вот и завел специальную переменную.
Печать с задержкой, как в приличных текстовых редакторах, особенно громоздко выглядит.

P.S. Потом уже "доехал", что есть возможность отлавливать события. И события есть подходящие (KEY_UP, KEY_DOWN)
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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