Обработка нажатия нескольких клавиш...
Всем, Привет!!!
Собственно все уже и сказано.. :)
Просто нужно реализовать игру, на двоих... И нужно обрабатывать нажатия 2-х
клавиш одновременно... Пишется все на Делфи, но это не столь важно.
Помнится, где-то видел реализацию через DirectInput ... Но я не могу ее
найти :(, да и проще хочется придумать...
Что посоветуете?
Хаю ду ю ду 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 юзать