文字がすぐに消えてしまいます

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

文字がすぐに消えてしまいます

#1

投稿記事 by yui » 14年前

初めてこちらに投稿するyuiと申します。
C++で弾幕シューティングゲームを作りたいと思っています。
DXライブラリやC++は全くの初心者です。一応C言語は一通り習得しました。
今ゲームの骨組みを作成中で、まずタイトル画面を表示させようとしたのですが「PUSH Z KEY」という文字が一瞬表示されすぐに消えてしまいます。
これは何がいけなかったのでしょうか?
よろしくお願いします。

gameframe.h

コード:

#include	"DxLib.h"

class GameFrame{
	virtual void drawGameTitle();
public:
	virtual ~GameFrame(){}
	void doMainLoop(int);
};
gameframe.cpp

コード:

#include	"gameframe.h"

void GameFrame::doMainLoop(int scmode){
	ChangeWindowMode(scmode);
	if(DxLib_Init() == -1) return;
	SetDrawScreen(DX_SCREEN_BACK);
	
	
	while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
		ClsDrawScreen();
		drawGameTitle();
		ScreenFlip();
	}
	DxLib_End();
}

void GameFrame::drawGameTitle(){
	int smallfont = CreateFontToHandle(0,32,9,DX_FONTTYPE_NORMAL);
	int col = GetColor(255,0,255);
	int w = GetDrawStringWidthToHandle("PUSH Z KEY",12,smallfont);
	DrawStringToHandle(320-w/2,300,"PUSH Z KEY",col,smallfont);	
}
main.cpp

コード:

#include	"gameframe.h"

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hp, LPSTR lpC, int nC){
	GameFrame *gf = new GameFrame();
	gf -> doMainLoop(TRUE);
	delete gf;
}

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 文字がすぐに消えてしまいます

#2

投稿記事 by h2so5 » 14年前

CreateFontToHandle を毎フレーム呼び出しているからです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 文字がすぐに消えてしまいます

#3

投稿記事 by softya(ソフト屋) » 14年前

せっかくクラスを使うなら、コンストラクタ・デストラクタを使って欲しいなと思ったりします。
あと意味があってvirtual って書いてますか?いや、基底クラスを作るならvirtualなデストラクタは良いんですけどね。
privateなvirtual void drawGameTitle();関数はどういう意図なんでしょうか?

ついでに参考。
「FAQ形式でデストラクタにvirtualを付ける理由をまとめてみた - かせいさんとこ」
http://d.hatena.ne.jp/kasei_san/20080516/p1


C++でシューティングに関しては
「龍神録プログラミングの館」
http://dixq.net/rp/
下の方にC++版があるので参考にしてみたらどうでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

yui

Re: 文字がすぐに消えてしまいます

#4

投稿記事 by yui » 14年前

h2so5さん
初歩的なミスでした…ありがとうございます!

softya(ソフト屋)さん
デストラクタやvirtualの理解がまだ曖昧でした・・・。
リンク先のページを参考にさせて頂きます。
ありがとうございました!

閉鎖

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