| || ● 2. イメージリストコンポーネントを使ってみよう
 
 どこかで見たことがあるようなキャラ「パク男」が画面上を動くサンプルプログラムを作ってみましょう。
 今回は「イメージリストコンポーネントを使ってキャラを表示する」サンプルプログラムですので、パク男が右から左へ動くだけのショートプログラムにします。

●●● 用意するもの
 2003年現在では旧版になってしまった「C++Builder5 Learning」で作成します。 どのバージョンでも動くと思われますので大丈夫です。

 パク男の画像を用意します。 グラフィックツールなら何でも結構です。 Windows付属のモノでもいいですが、フリーソフトで結構良いツールがありますので、そちらを探す方が良いかもしれません。
 とりあえず今回はサンプルですので簡単な絵をこちらで2枚用意しました。(右クリック「名前をつけて画像を保存」で取込んで下さい)
 
「パク男」画像1    「パク男」画像2

●●● コンポーネントの貼り付け
 
 
 C++Builderを起動します。 必要なコンポーネントは、イメージ2枚、タイマー1個、イメージリスト1個です。 最初に、この4つをフォームに設置しましょう。
 
 
 
 
 イメージリストコンポーネントだけ、プロパティを先に設定しておきましょう。 今回は「width」と「height」の項目を「48」に設定しておきます。 その他のコンポーネントは設置するだけで結構です。 プロパティなどはプログラムから操作します。
 
 
 
 
 イメージリストコンポーネントに「パク男」の画像を読み込んでおきます。
(手順1)フォーム上のイメージリストコンポーネントをダブルクリックします。 すると「イメージリスト Form1->ImageList1」というウインドウが現れます。
(手順2)現れたウインドウの「追加」ボタンをクリック。 パク男の画像を選択してイメージリストコンポーネントに読み込んでおきます。 パク男の画像は2枚ですのでこの作業を2回行います。
(手順3)他にも色々なボタンがありますが、今回は無視してください。 現れたウインドウの「OK」ボタンを押し作業終了。 画像の読み込みは完了です。
 
 

●●● 変数の宣言
 いよいよ、プログラムに入ります。 今回は(今回も?)シンプルに行きましょう。 前回同様C++の文法の解説は省略させていただきます。
 ヘッダファイル(Unit1.h)に変数の宣言を記述します。
 
 
 
 
【 ヘッダに打ち込むリスト 】


 int x, y, p;
 使う変数は3つだけです。 xはパク男のX軸、yはパク男のY軸、pはパク男の口の状態です。

●●● プログラムの記述
 Form1のイベント「OnCreate」をダブルクリックしますと、エディタが開きます。  ここでフォームの大きさ、イメージコンポーネントの大きさ、タイマーコンポーネントの速度などを設定しておきます。 初期設定という個所ですね。
 
 
 
 
【 FormCreateに打ち込むプログラム 】


 Form1->ClientWidth = 340 ;  // フォームのサイズ
 Form1->ClientHeight = 240;  //

 Image1->Width = 300;  // イメージ1のサイズ
 Image1->Height= 200;  //
 Image2->Width = 300;  // イメージ2のサイズ
 Image2->Height= 200;  //

 Image1->Visible = false;// イメージ1は裏画面なので非表示

 Image2->Top  = 20;   // イメージ2の位置指定
 Image2->Left = 20;
 Image2->Visible = true; // イメージ2は表示画面

 Timer1->Interval = 55; // タイマーの速度

 x = 260;        // パク男のスタート位置
 y = 75;

 
 メインルーチン部分。 Timer1コンポーネントのOnTimerイベントをダブルクリックし、入力します。 今回は初期設定の方が長いという・・・・。 自機操作などゲーム性を排他すれば、こんなショートプログラムになってしまいます。
 イメージリストコンポーネントを使うこと自体は、そんなに難しくないという事が伝わりましたか?
 
 
 
 
【 Timer1Timerに打ち込むプログラム 】

 // 裏画面を黒く塗りつぶしておく
 Image1->Canvas->Brush->Color = clBlack;
 Image1->Canvas->FillRect(Rect( 0, 0, 300, 200 ));

 if ( (x-=7) < -48 ) x = 340;  // パク男、左へ移動
 y;             // 上下にはまったく動かず
 if ( ++p > 1 ) p = 0;   // パク男のパクパク運動

 // イメージリスト表示
 ImageList1->Draw( Image1->Canvas, x, y, p, 1 );


 // 裏画面を表画面にコピー
 Image2->Canvas->CopyRect( Image2->Canvas->ClipRect,
              Image1->Canvas,
              Image2->Canvas->ClipRect);

●●● プログラム完成
 完成!! 「パク男」はユーザーの操作を一切受け付けない硬派なキャラに仕上りました。 Y軸も一応組んでありますので、パク男を上下左右に自在に動かしてみたい人は、前回のサンプルプログラムのキー操作関連の個所を参考にして改造に挑戦してみましょう。