ページ 11

RPG風コマンドウィンドウの表示について

Posted: 2009年12月05日(土) 19:21
by ti
ドラクエ風のRPGを作っていてXボタンを押すと はなす や どうぐが表示されるプログラムをつくりたいのですが制御がうまくいかず困っています

仕様として
・Xボタンを押すとウィンドウが表示される
・Zボタンを押すと表示されていたウィンドウがきえて通常のフィールドや町のMAPに制御が戻るようにつくりたいです

ソースです↓
int Make_CmdWindow(int cr__x,int cr__y,int i,int j,char bname[50])//座標、座標、座標、座標、bmp名
{
	
		LoadGraphScreen( 50 , 50 ,"BMP/cmd-win1.bmp" , TRUE ) ;//はなす~つよさのウィンドウ表示
		ScreenFlip();
	
		if( Key[ KEY_INPUT_Z ]  == 1 ){
		
			image = LoadGraph( "BMP/1138--.bmp" ) ;
			DrawRectGraph( 0, 0, i, j, 640, 640, image, TRUE, FALSE ) ;
			int cr1 = LoadGraph( "BMP/cr.bmp" );
			DrawRectGraph( 320, 320, 0, 0, 32, 48, cr1, TRUE, FALSE ) ;
			ScreenFlip();
			return 0;
		}
	 
	
}
これをZキーを押すまでこの関数を抜けないようにするにはどうすればいいですか?

Re:RPG風コマンドウィンドウの表示について

Posted: 2009年12月05日(土) 19:47
by kazuoni
一度入力があったら、フラグを立てて、
フラグがたっている間は対象の処理をするっということでおおむねいいかと思います。

#こっから余談ですので、参考程度に
・LoadGraphScreenは毎ループすると、かなり負担が大きいようなので、
LoadGraphしたほうがよい気がします。

・掲載されたコードでは、入力があったらLoadGraphをし、そのまま関数を抜けてしまいますが、
変数cr1の画像を解放せずにほったらかしになっているので、いつかまずいことになりそうです。
初期化関数なり用意して、一度読み込む方針をとるべきかと思います。

・ScreenFlipは管理が面倒になることや、処理の重さなどを考慮すると、
メイン関数の最後のほうに一度書くだけにした方がよいかと思います。

Re:RPG風コマンドウィンドウの表示について

Posted: 2009年12月06日(日) 18:24
by ti
kazuoniさん回答ありがとうございました
おかげさまでなんとかできました