Delphiでゲーム制作:キー入力を処理してみる

せっかく買ったDelphi7。使わなきゃ勿体ない。
つー事で、ゲーム処理の基本、キー入力を頑張ってみた。

幸い、DelphiにはVBのように便利な作りで、イベント処理を勝手に拾ってくれるみたい。
まずはFormに適当な感じでLabelを貼り付ける。その後、オブジェクトインスペクタのOnKeyDownとOnKeyUpの隣側をダブルクリック。procedureを自動作成する。
KeyTest1-1.jpg KeyTest1-2.jpg
出来たprocedureに次のように記述。

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Label1.Caption := IntToStr(Key);
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Label1.Caption := '';
end;


出来たEXEが次のファイル:KeyTest1.zip

実行してみると分かるけど、キーボードを押した時、Windowsが与える数字を見れる。
つー事で、あとはこれに肉付けをしてあげればいいだけ。

ただ、気になる事にキーずっと押した場合、入力を検知した後、いったん間を置いた後に入力が続く現象が現れたり。そんな感じなので、private宣言に次のようなBoolean型を宣言して処理する事にした。

private
{ Private 宣言 }
Up_Button: boolean;
Down_Button: boolean;
Right_Button: boolean;
Left_Button: boolean;
A_Button: boolean;
B_Button: boolean;

後は、これにキーを押した時と上げた時のフラグを付けて、Timerで状態を監視してあげれば完成。
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
37: Left_Button := True;
38: Up_Button := True;
39: Right_Button := True;
40: Down_Button := True;
88: B_Button := True;
90: A_Button := True;
end;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin

case Key of
37: Left_Button := False;
38: Up_Button := False;
39: Right_Button := False;
40: Down_Button := False;
88: B_Button := False;
90: A_Button := False;
end;
end;

出来たファイルがこちら:KeyTest2..zip

うん、意外と簡単にキー入力の処理って出来るんだなーっと。
まー、後々の事を考えたら、DirectX Importとかで処理した方がいいんでしょうけどね。
手軽にドラクエ作成が目標なので、あんまり堅苦しい事はしないのです。

| コメント(0) | トラックバック(0) |
■Yahoo!オークション おすすめ商品■
Web Services by Yahoo! JAPAN

トラックバック(0)

トラックバックURL: http://type-y.com/mt/mt-tb.cgi/691

コメントする