>> シューティングゲーム作成入門トップに戻る

背景を描画しよう

今回は背景を描画してみましょう。

背景描画用のBACKクラスというのを作成します。
ヘッダファイルは以下の通りです。

01class BACK{
02private:
03    //座標
04    double x,y;
05 
06    //グラフィックハンドル
07    int gh;
08 
09private:
10    void Draw();
11public:
12    void All();
13    BACK();
14};

座標とグラフィックハンドル用の変数しかありません。
画像は、

を使います。
コンストラクタで画像の読み込みと、初期座標の指定を行っています。

1BACK::BACK()
2{
3    gh = LoadGraph("back1.png");
4 
5    x=y=MARGIN;
6}

次にDraw関数とAll関数です。

1void BACK::Draw()
2{
3    DrawGraph(x,y,gh,FALSE);
4}
5void BACK::All()
6{
7    Draw();
8}

特に難しくないですね。
単純に描画して、それをAll関数で呼び出しているだけです。
このAll関数をCONTROLクラスで呼び出しています。
現在のcontrol.hとcontrol.cppのコードは以下のようになっています。

control.h

01#include "player.h"
02#include "back.h"
03 
04class CONTROL{
05 
06    //プレイヤークラス
07    PLAYER *player;
08 
09    //背景クラス
10    BACK *back;
11 
12public:
13    CONTROL();
14    void All();
15};

control.cpp

01#include "pch.h"
02#include "control.h"
03 
04CONTROL::CONTROL()
05{
06    player = new PLAYER;
07 
08    back = new BACK;
09 
10}
11 
12void CONTROL::All()
13{
14    back->All();
15         
16    player->All();
17}

特に難しくはないですね。
コンストラクタでプレイヤークラスと背景クラスのインスタンスを作成し、
それぞれのAll関数を呼び出しているだけです。
気をつけるところといえば描画順です。
キャラの描画の後に背景の描画を行ってしまうと、キャラが隠れてしまうので、
先に背景の描画をしてから、キャラの描画を行っています。
これらのコードを実行すると、以下の動画のようになります。

一見問題ないように見えますが、キャラが左端と右端に行ったときに、
画面から体がはみ出されて描画されてしまっていますね。
これだと何か違和感があります。
これについては、次回の講座で説明します。

>> 【描画領域の指定】に進む
>> シューティングゲーム作成入門トップに戻る