それでは、モグラを表示させて見ましょう。その前に、モグラの絵を書きます。前回使用した、リソースファイルを開いてください。カーソルを作成した時と同じように、「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でもぐらの非表示をしていることになります。これだけでも、少し雰囲気が出てきました。次回は、マウスのクリックにもぐらが反応するようにしたいと思います。