それでは、モグラを表示させて見ましょう。その前に、モグラの絵を書きます。前回使用した、リソースファイルを開いてください。カーソルを作成した時と同じように、「Contens」の上にカーソルを持っていき、右クリックで「新規作成」→「ビットマップ」を選んでください。今回のビットマップのサイズは72*72にして下さい。サイズを72*72にしましたら、「OK」ボタンを押して、モグラの絵を描いてください。今回もモグラの絵を2種類用意してください。こんな感じになりました。
少ししょぼすぎですね(^^;;
出来ましたら、それぞれの絵に名前を付けます。今回は、「MOG1」「MOG2」としました。 それでは、前回のプログラムに以下のコードを足してください。
const crUp: Integer = 1; crDown: Integer = 2; type TForm1 = class(TForm) Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Timer1Timer(Sender: TObject); private { Private 宣言 } Mog1: TBitmap; Mog2: TBitmap; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} {$R Mogura.res} procedure TForm1.FormCreate(Sender: TObject); begin Screen.Cursors[crUp] := LoadCursor(HInstance, 'UP'); Screen.Cursors[crDown] := LoadCursor(HInstance, 'DOWN'); Screen.Cursor := TCursor(crUp); Mog1 := TBitmap.Create; Mog1.LoadFromResourceName(HInstance, 'MOG1'); Mog2 := TBitmap.Create; Mog2.LoadFromResourceName(HInstance, 'MOG2'); end; procedure TForm1.FormDestroy(Sender: TObject); begin Mog1.Free; Mog2.Free; end;
前回同様、モグラの絵を使えるように登録しただけです。これだけでは、まだモグラの絵は、表示されません。今回は実験ということで単に、もぐらを表示、非表示するだけのコードを書きたいと思います。SystemページのTimerコンポーネントをフォームに貼り付けて下さい。次に、その貼り付けたTimerコンポーネントをダブルクリックして以下のコードを書きます。
procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Interval := 700; case Random(4) of 0: Canvas.Draw(30, 50, Mog1); 1: Canvas.Draw(120, 50, Mog2); 2: Canvas.FillRect(Rect(30, 50, 30+72, 50+72)); 3: Canvas.FillRect(Rect(120, 50, 120+72, 50+72)); end; end;
Intervalは時間の間隔です。この場合700msとなります。(1000ms=1s(秒)です) それぞれ、ランダムにもぐらを表示していることになります。Canvas.Drawでもぐらの表示、Canvas.FillRectでもぐらの非表示をしていることになります。これだけでも、少し雰囲気が出てきました。次回は、マウスのクリックにもぐらが反応するようにしたいと思います。