IPB
ЛогинПароль:

> Помогите советом, реагирование в ире на клаву
Михаил
сообщение 9.11.2004 22:10
Сообщение #1


Гость






Пишу игру в граф. режиме. Нужно чтобы происходили определенные действия при нажатии на опред. кнопку, но чтобы не было этого ожидания. Комбинация
repeat
{постоянно выполняемый код}
untill (keypressed) and (readkey=#27)
глючит. Походу идет переполнение буфера.
Без keypressed он сначала ждет нажатия клавиши а потом делает действия.
Вставки на ассемблере тоже не спосают

P.S нужно чтобы программа была без О.О.П.


Кто сталкивался помогите!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
xds
сообщение 10.11.2004 1:05
Сообщение #2


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Попробуй обрабатывать буфер одним проходом:
Код
program Code;

uses
 Crt;

var
 Done: Boolean;

begin
 Done := False;
 repeat

   { сделать что-нибудь полезное... }

   while KeyPressed do
     case ReadKey of
     ' ':
       { обработать нажатие клавиши "пробел" };
     #27:
       Done := True;
     #0:
       { обработка расширенных кодов BIOS }
       case ReadKey of
       #72:
         { обработать нажатие клавиши "вверх" };
       #75:
         { обработать нажатие клавиши "влево" };
       #77:
         { обработать нажатие клавиши "вправо" };
       #80:
         { обработать нажатие клавиши "вниз" };
       end;
     end
 until Done;
end.


P.S. Если необходимо отслеживать удержание нескольких клавиш одновременно (e. g., все время нажата "вверх" и эпизодически нажимается и отпускается "control"), то придется написать свой обработчик int 9.


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 14.07.2025 21:44
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"