Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос насчет клавиш [Delphi, Windows]


Страницы:   1 2

Грей ©   (2004-05-09 18:47:00) 

Здравствуйте, у меня два вопроса.
Как сделать так, чтобы делфи обрабатывала нажатие нескольких клавиш (в том числе и символьных) одновременно?
И как сделать так, чтобы при прижатии клавиши таймеры не останавливались?


KilkennyCat   (2004-05-10 20:51:00) [21]


> [5] Thor ©   (10.05.04 20:41)


ну.. не все ж игры в ДиректИкс делать-то...
Хотя, честно говоря, не понимаю, почему монстры останавливаются. Я от скуки леплю с обычным таймером - все ок.


Thor   (2004-05-10 20:41:00) [22]


> KilkennyCat ©   (10.05.04 20:10) [4]

а оно нужно?


KilkennyCat   (2004-05-10 20:10:00) [23]

ну, можно ж и без таймера сделать... в цикле бесконечном, с application.processmessage... или отдельным потоком.


Thor   (2004-05-10 18:28:00) [24]

а таймер наверняка обыкновенный, стандартный?
если да, то не мудрено.
на нем игры лучше не делать вообще, а почитать про мултимедийные таймеры.
статьи были здесь на DelphiGFX и на delphikingdom.


Грей   (2004-05-10 17:13:00) [25]

Вот у меня через определенный промежуток времени монстры передвигаются по карте и летают снаряды. (это с помощью таймера).
Так вот. Если у меня прижать клавишу, допустим стрелка вверх, то монстры не двигаются и снаряды не летают.
Если хотите, я могу вам ссылку на мою игру дать - все увидите.


KilkennyCat   (2004-05-09 21:28:00) [26]

Используйте функцию GetKeyboardState(keystate : Tkeyboardstate);

Tkeyboardstate - это массив э-э... 0..256 of Byte, если не ошибаюсь. Грубо говоря - это матрица клавиатуры.
Можно обрабатывать так:
GetKeyboardState(kеystate);
if (kеystate[vk_Space] And 128) <> 0 then нажат пробел
if (kеystate[65] And 128) <> 0 then нажата А

что касается остановки таймера при нажатии... как Вы это сделали?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо