クラスの階層について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
もんの

クラスの階層について

#1

投稿記事 by もんの » 1年前

言語はC++で、Dxライブラリを使用しています。学習歴は半年ほどです。自分はシューティングゲームをつくるため、現在こちらののページ https://bituse.info/game/shot/2 を参考にしながらCONTROLクラスがPLATERクラスやENEMYクラスなどをまとめて動かすコードをかこうと思っています。今回、画像をウィンドウに表示するコードを書いたつもりなのですが、ウィンドウに表示されませんでした。
main.cpp内では読み込んで描画できたため、画像に問題はないと思われます。階層構造に問題があると思うのですが、どこをまちがえているのか分かりません。ご助言をいただきたいです。

main.cpp

コード:

#include "DxLib.h"
#include "CONTROL.h"

char key[256];

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	ChangeWindowMode(TRUE);

	if (DxLib_Init() == -1)		// DXライブラリ初期化処理
	{
		return -1;			// エラーが起きたら直ちに終了
	}

	CONTROL* control = new CONTROL;
	
	
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && GetHitKeyStateAll(key) == 0) 
{

		control->ALL();

		if (key[KEY_INPUT_ESCAPE] == 1) {
         break;
		}

}

	DxLib_End();				// DXライブラリ使用の終了処理

	return 0;				// ソフトの終了 
}
CONTROL.h

コード:

#include "PLAYER.h"

class CONTROL {
private:
	PLAYER* player;
	
public:
	CONTROL();
	~CONTROL();
	void ALL();
};
CONTROL.cpp

コード:

#include "DxLib.h"
#include "CONTROL.h"


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

CONTROL::~CONTROL() {
	delete player;
}

void CONTROL::ALL() {
	player->ALL();
}
PLAYER.h

コード:

class PLAYER {
private:
	double x, y;
	int gh[12];
	
private:
	void DRAW();

public:
	PLAYER();
	void ALL();
};
PLAYER.cpp

コード:

#include "DxLib.h"
#include "PLAYER.h"


PLAYER::PLAYER() {
	
	LoadDivGraph("キャラ_017.png", 12, 3, 4, 32, 32, gh);

    int x = 10, y = 24;  //初期位置

}

void PLAYER::DRAW() {
	DrawGraph(x, y, gh[11], TRUE);
}


void PLAYER::ALL() {
	DRAW();
}

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: クラスの階層について

#2

投稿記事 by みけCAT » 1年前

PLAYERクラスのメンバ変数x, yを初期化しないままDRAW関数内で座標として使っているため、
不定の値を参照し、画面外に描画されている可能性があります。
コンストラクタで使わないローカル変数の宣言と初期化を行うだけでなく、
メンバ変数x, yを適切な値に初期化する処理を追加するといいかもしれません。
もしくは、ALL関数またはDRAW関数でメンバ変数x, yの値を設定する方法も考えられるでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

もんの

Re: クラスの階層について

#3

投稿記事 by もんの » 1年前

DRAW関数内でxとyの値を設定したところ、表示されました。
みけCATさんこの度は返信していただきありがとうございました。

返信

“C言語何でも質問掲示板” へ戻る