Delphiでゲーム制作:キー入力を処理してみる
せっかく買ったDelphi7。使わなきゃ勿体ない。
つー事で、ゲーム処理の基本、キー入力を頑張ってみた。
幸い、DelphiにはVBのように便利な作りで、イベント処理を勝手に拾ってくれるみたい。
まずはFormに適当な感じでLabelを貼り付ける。その後、オブジェクトインスペクタのOnKeyDownとOnKeyUpの隣側をダブルクリック。procedureを自動作成する。
![]()
出来たprocedureに次のように記述。
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型を宣言して処理する事にした。
Up_Button: boolean;
Down_Button: boolean;
Right_Button: boolean;
Left_Button: boolean;
A_Button: boolean;
B_Button: boolean;
後は、これにキーを押した時と上げた時のフラグを付けて、Timerで状態を監視してあげれば完成。
Shift: TShiftState);
begin
38: Up_Button := True;
39: Right_Button := True;
40: Down_Button := True;
88: B_Button := True;
90: A_Button := True;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
38: Up_Button := False;
39: Right_Button := False;
40: Down_Button := False;
88: B_Button := False;
90: A_Button := False;
出来たファイルがこちら:KeyTest2..zip
うん、意外と簡単にキー入力の処理って出来るんだなーっと。
まー、後々の事を考えたら、DirectX Importとかで処理した方がいいんでしょうけどね。
手軽にドラクエ作成が目標なので、あんまり堅苦しい事はしないのです。
トラックバック(0)
トラックバックURL: http://type-y.com/mt/mt-tb.cgi/691
コメントする