ページ 11

Game()関数で

Posted: 2009年10月02日(金) 16:57
by ディア
前回、スレの途中で質問してしまったので、
新しく立てさせていただきました。

前の質問にて、conio 氏に頂いた回答ですが、
私の質問が間違っていました。

改めて質問させていただきます。

添付のソース内で
Game()関数にゲームを開始する処理をさせたいのですが
どういった風に書けばいいのでしょうか?

現在の、メニュー無しでゲームが始まるmain.cpp内は以下の通りです。
#define GLOBAL_INSTANCE 
#include "./include/GV.h"

//ループで必ず行う3大処理
int ProcessLoop(){
	if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
	if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
	GetHitKeyStateAll_2();//現在のキー入力処理を行う
	GetHitPadStateAll();  //現在のパッド入力処理を行う
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
	ChangeWindowMode(TRUE);//ウィンドウモード
	if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化

	while(ProcessLoop()==0){//メインループ
		music_ini();
		switch(func_state){
			case 0://初回のみ入る処理
				load();		//データロード
				first_ini();//初回の初期化
				func_state=99;
				break;
			case 99://STGを始める前に行う初期化
				ini();
				load_story();
				func_state=100;
				break;
			case 100://通常処理
								 enter_func_tm("最初");
				calc_ch();       enter_func_tm("キャラ計算");
				ch_move();       enter_func_tm("キャラ移動");
				cshot_main();    enter_func_tm("自機ショットメイン");
				enemy_main();	 enter_func_tm("敵処理メイン");
				boss_shot_main();enter_func_tm("ボスショットメイン");
				shot_main();	 enter_func_tm("ショットメイン");
				out_main();  	 enter_func_tm("当たり判定");
				effect_main();   enter_func_tm("エフェクトメイン");
				calc_main();	 enter_func_tm("計算メイン");
				graph_main();    enter_func_tm("描画メイン");
				bgm_main();		 enter_func_tm("BGMメイン");
				if(boss.flag==0)
					stage_count++;
				break;
			default:
				printfDx("不明なfunc_state\n");
				break;
		}
		music_play();			 enter_func_tm("音楽再生");
		fps_wait();				 enter_func_tm("待機した時間",1);
		if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
		ScreenFlip();//裏画面反映
		count++;

	}
	DxLib_End();//DXライブラリ終了処理
	return 0;
}

Re:Game()関数で

Posted: 2009年10月04日(日) 20:36
by ちゃお
music_ini();からcount++までをGame関数の中で記述して、while(ProcessLoop()==0)の枠の中で常に呼び続ければいいんじゃない?

caseごとにオープニングとか作って、あるボタンを押したら、caseが移動していくように処理するプログラムを作れば、いいかなと。
case1:オープニング
case2:キーコンフィグとかサウンドボリュームとかゲームスタートとかメニューを選んで押す画面
case3:画像とかロードする処理
case4:ゲームを遊ぶ処理

case2のところで、あるメニューの位置(ゲームスタートとか)で、あるボタンを押したときにcase3に移って、ロード完了したら、case4に移るような処理必要ですね。

答えになってない?

Re:Game()関数で

Posted: 2009年10月05日(月) 16:22
by ディア
そう考えればよかったんですね・・・

回答有難うございます。
やってみます。