ページ 11

メニュー画面を作れない

Posted: 2013年12月30日(月) 11:42
by プラム
龍神録プログラミングの館で作ったものを改造しましたがメニュー画面の作り方がわかりませんみなさん教えてください

Re: メニュー画面を作れない

Posted: 2013年12月30日(月) 12:33
by みけCAT
新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]
というサイトに「メニュー画面の作り方」という項目があります。
これを見てもわからないですか?

Re: メニュー画面を作れない

Posted: 2013年12月30日(月) 12:58
by プラム
はいわかりません

Re: メニュー画面を作れない

Posted: 2013年12月30日(月) 12:59
by プラム
たくさんソースコードがあるのでどれをどうしたらいいのか

Re: メニュー画面を作れない

Posted: 2013年12月30日(月) 14:50
by softya(ソフト屋)
そうですね。ちゃんと作れるように成りたいのなら、1つ1つ細かいところから一行一行の意味を理解していくのが正しいです。
龍神録ぐらいのものでも、ちゃんと理解するには少なくても半年以上かかります。

理解せず、ちゃっちゃっと作っちゃったい。ってのなら過去ログを検索してみるって方法があります。

Re: メニュー画面を作れない

Posted: 2013年12月30日(月) 17:14
by sql
龍神録をDLして見たのですが、main.cppのなかを以下のようにするとできました。即席ですので汚いですが・・(色々と弊害はあるので新たにcppファイルを作ってgraph関数なりcalc関数なりを用意してやったほうがいいです。

コード:

【略】

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){//メインループ

		static int sel = 0;//追加
		static int x = 100 ,y = 100;//追加

		music_ini();
		switch(func_state){
			case 0://初回のみ入る処理
				load();		//データロード
				first_ini();//初回の初期化
				func_state=98;//ここを98に
				break;
			
			case 98://STGを始める前に行う初期化
				ini();
				load_story();
				func_state=99;//メニューへ
				break;
			case 99://メニュー
				DrawString(10 , 10 , "メニューです" , GetColor(255,255,255) , 0);
				DrawString(x , y , "ゲームに進む" , GetColor(255,255,255) , 0);
				DrawString(x , y+30 , "このまま" , GetColor(255,255,255) , 0);
				DrawBox(x-30,y+(sel*30),x-10,y+20+(sel*30) , GetColor(255,0,0) ,true);

				if(CheckStateKey(KEY_INPUT_UP)==1)
				{
					if(sel > 0)
						sel--;
					else
						sel = 0;
				}
				if(CheckStateKey(KEY_INPUT_DOWN)==1)
				{
					if(sel < 1)
						sel++;
					else
						sel = 1;
				}
				if(CheckStateKey(KEY_INPUT_SPACE)==1)
				{
					if(sel == 0)
						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;
}


それかmain.cppにメニューだけ関数を用意して(以上の変更点を書いて)しまうか・・・

Re: メニュー画面を作れない

Posted: 2013年12月30日(月) 18:27
by プラム
ありがとうございました確かにそうするとできまし他にもいろいろなことは自分で勉強します本当にありがとうございました!!!