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

背景を描画しよう

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

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

class BACK{
private:
	//座標
	double x,y;

	//グラフィックハンドル
	int gh;

private:
	void Draw();
public:
	void All();
	BACK();
};


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

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

BACK::BACK()
{
	gh = LoadGraph("back1.png");

	x=y=MARGIN;
}

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

void BACK::Draw()
{
	DrawGraph(x,y,gh,FALSE);
}
void BACK::All()
{
	Draw();
}

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

control.h

#include "player.h"
#include "back.h"

class CONTROL{

	//プレイヤークラス
	PLAYER *player;

	//背景クラス
	BACK *back;

public:
	CONTROL();
	void All();
};

control.cpp

#include "pch.h"
#include "control.h"

CONTROL::CONTROL()
{
	player = new PLAYER;

	back = new BACK;

}

void CONTROL::All()
{
	back->All();
		
	player->All();
}


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

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

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