ページ 11

ウィンドウがすぐに消える

Posted: 2014年3月13日(木) 23:03
by 蟻酸
ゲームのタイトル画面を作ろうとしたのですが
真っ黒のウィンドウが一瞬見えるだけですぐ消えてしまいます。

コード:

#include"DxLib.h"


int Process(char key[256]){
	if(ScreenFlip()!=0)return 0;
	if(ProcessMessage()!=0)return 0;
	if(ClearDrawScreen()!=0)return 0;
	if(GetHitKeyStateAll(key)!=0)return 0;
	
}


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
	ChangeWindowMode(true);
	DxLib_Init();
	SetGraphMode(640,480,16);
	SetDrawScreen( DX_SCREEN_BACK );
	SetDrawMode( DX_DRAWMODE_BILINEAR);
	SetWindowText("title");
	
	char key[256];
	int titlehandle = LoadGraph("title1.png",0);
	int serect;
	enum{TITLE,GAME,LOAD,END}status=TITLE;
	while(Process(key)){
		
		switch(status){
			case TITLE:
			//title
				DrawGraph(0,0,titlehandle,0);
				if(key[KEY_INPUT_UP]==1){serect--;}
				if(key[KEY_INPUT_DOWN]==1){serect++;}
				serect=serect % 3;
				if(key[KEY_INPUT_Z]==1){ 
					switch(serect){
						case 0: status=GAME;break;
						case 1: status=LOAD;break;
						case 2: status=END;break;
					}
				}
				break;
			case GAME:
			//GAME	
				break;
			case LOAD:
			//LOAD	
				break;
			case END:
			//END
				if(status==3){break;}
				
		}	
		
	ScreenFlip();
	}
	DxLib_End();
	return 0;
}

Re: ウィンドウがすぐに消える

Posted: 2014年3月13日(木) 23:07
by みけCAT
報告だけされても困りますが、とりあえずProcess関数の中のif文の中の条件が全て偽だった場合、return文を通らずに終了します。
この場合、戻り値は未定義または0(どっちかは忘れた)です。
たまたま0が返り、while文の条件が成立しないのでwhile文の中の処理は実行されなかったのでしょう。

Re: ウィンドウがすぐに消える

Posted: 2014年3月13日(木) 23:11
by 初級者
門外漢のあたくしが言うのはアレですが、
serectという変数(本当はselectが正しい?)を
初期化しないでインクリメントやデクリメントを
しているのは、ひじょうにまずいと思います。