Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Обработка нажатия нескольких клавиш...

Всем, Привет!!!

Собственно все уже и сказано.. :)
Просто нужно реализовать игру, на двоих... И нужно обрабатывать нажатия 2-х
клавиш одновременно... Пишется все на Делфи, но это не столь важно.
Помнится, где-то видел реализацию через DirectInput ... Но я не могу ее
найти :(, да и проще хочется придумать...

Что посоветуете?

Ответить   Tue, 1 Mar 2005 18:22:59 +0200 (#325360)

 

Ответы:

Хаю ду ю ду Grishka?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

Да хоть десяти - если железо позволит

var
Form1: TForm1;
keys: array[0..255] of Boolean;

implementation

{$R *.DFM}

procedure TForm1.ProcessKeys;
begin
with Panel1 do
begin
if keys[VK_UP] or keys[Ord('W')] or keys[ord('w')] then Top := Top
- 1;
if keys[VK_DOWN] or keys[Ord('S')] or keys[ord('s')] then Top := Top
+ 1;
if keys[VK_LEFT] or keys[Ord('A')] or keys[ord('a')] then Left := Left
- 1;
if keys[VK_RIGHT] or keys[Ord('D')] or keys[ord('d')] then Left := Left
+ 1;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProcessKeys;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
keys[Key] := True;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
keys[Key] := False;
end;

PS: Вместо Timer ес-сно лучше OnIdle или Thread юзать

Ответить   Wed, 2 Mar 2005 18:08:24 +0500 (#325829)