平面(2D)における当たり判定〜超手抜き版 part2〜


目次に戻る


今日からしばらく超手抜き版2D当たり判定プログラム(hitcheck1.zip)(要Builder5のDLL)のソースプログラムの解説を行います。
このプログラムは大きく3つのクラス(かたまりだと思って)から成り立っています。
プログラムを構成する class の概要
  1. 見た目を制御するクラス(TForm1クラス。UnitMain.cpp,UnitMain.h)
  2. キャラクタを管理するクラス(TFieldクラス。Field.cpp,Field.h)
  3. キャラクタを表すクラス(TCharactorクラス。Charactor.cpp,Charactor.h)
今日は見た目を制御するクラス TForm1 について説明します。
TForm1クラスはプログラムの核となる部分です。とは言ってもそんな大した事はしていません。
見た目を制御するクラス TForm1クラス が行う動作
  • プログラムが起動した時の初期化(TForm1::FormCreate)
  • プログラムが終了する時の後処理(TForm1::FormDestroy)
  • マウスをクリックしたらキャラクタを1体追加(TForm1::FormMouseUp)
  • 定期的にキャラクタを移動させる(TForm1::Timer1Timer)
もっとも重要なのは定期的にキャラクタを移動させる(TForm1::Timer1Timer)です。事実上のメインルーチンと呼んでも過言ではありません。
TForm1::Timer1Timer
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    FField->allMove();   // フィールドが管理しているキャラクタの座標を更新

    Canvas->Brush->Color = clBtnFace;   // フォームを一度塗りつぶしてきれいにする
    Canvas->FillRect( ClientRect );

    Canvas->Brush->Color = clBlack;     /* キャラクタの描画(現在キャラクタは塗りつぶす事しかしていないからここでブラシの色を設定している。)*/
    FField->drawTo( Canvas );
}

処理の流れはコメントのとおりです。
 
次回は当たり判定の部分を紹介します。

目次に戻る