もぐら叩きを作ってみよう その2

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


up next
Last update: 2002/3/19