もぐら叩きを作ろう その2

早速、プログラミングに入ります。まずは、表示するもぐらとマウスカーソル(ハンマー)の絵を用意してください。作成の仕方は、「 3 分で作ろうアプリケーション」の「もぐら叩きをつくってみよう」で作成しましたリソースファイル(Mogura.res)を、ここでも使用します。もちろん自作されても構いません。自作する場合には、上記の「もぐら叩きを作ってみよう」で作成しました内容と同じ(つまり、作成するビットマップやカーソルの名前を同じ)にして下さい。

まずは、Delphi を起動します。そして最初にプロジェクトの保存をします(プロジェクトを保存したディレクトリに上記の Mogura.res リソースファイル、又は自作されたリソースファイルを置いてください)。保存する際のプロジェクト名なのですが、上記の Mogura.res リソースファイルを使用する場合には、プロジェクト名に Mogura という名前を付ける事は出来ません(つまり、Mogura.dpr というプロジェクト名が使用できません)。これは、デフォルトで生成されるリソースファイルと名前が衝突するのを避ける為です。上記の Mogura.res ファイルを使用しない場合には、作成されたリソースファイルと名前が異なるプロジェクト名を付けてください。

プロジェクトを保存しましたら、今度は自作したリソースファイルをそのプロジェクトで使用できるようにします。自作したリソースファイルが Mogura.res であるなら、以下のようにソースファイルにプログラムします。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{$R Mogura.res} // 追加

end.

これで自作しましたリソースファイルが使用できるようになります。まず最初に、カーソルを変更しておきます。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

const
  crUp  : Integer = 1; // 追加
  crDown: Integer = 2; // 追加

type
  TForm1 = class(TForm)
    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);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

.................................................................

procedure TForm1.FormCreate(Sender: TObject);
begin
  // カーソルの設定
  Screen.Cursors[crUp]   := LoadCursor(hInstance, 'UP');
  Screen.Cursors[crDown] := LoadCursor(hInstance, 'DOWN');
  Screen.Cursor := TCursor(crUp);
end;

  procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Screen.Cursor := TCursor(crDown); // ハンマーを下ろす
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Screen.Cursor := TCursor(crUp); // ハンマーを上げる
end;

次に、フォームの大きさや、得点などを表示する際に使用するフォントの色、大きさもここで指定しておきたいと思います。これらは、「オブジェクトインスペクタ」で変更できますが、文章で表現しますと長くなりますので、ここではコードで示したいと思います。

また、この時点で System ページにあります Timer コンポーネントを貼り付けておいて下さい。この Timer コンポーネントは、ゲームの制限時間やもぐらを表示する時間を計る為に使用します。

procedure TForm1.FormCreate(Sender: TObject);
begin
  // カーソルの設定
  Screen.Cursors[crUp]   := LoadCursor(hInstance, 'UP');
  Screen.Cursors[crDown] := LoadCursor(hInstance, 'DOWN');
  Screen.Cursor := TCursor(crUp);
  
  // 各種設定
  ClientWidth := 489;  // フォームの幅
  ClientHeight := 324; // フォームの高さ
  Timer1.Enabled := false;
  Timer1.Interval := 100;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  // 各種設定
  Color := clGreen;
  Canvas.Brush.Color := clGreen;
  Canvas.Font.Color := clWhite;
  Canvas.Font.Size := 20;
end;

up next
Last update: 2002/12/28