メイン画面からのサブ画面の表示につきまして

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

メイン画面からのサブ画面の表示につきまして

#1

投稿記事 by ムンバ » 16年前

こんばんは。いつもお世話になります。^^
先日は画像製作ソフトを、ご紹介頂きましてどうもありがとうございました。
快適です。(謝

今、列車が線路の上を動くプログラムを作っているのですが
列車が動く動作や、線路(ポイント)を動かすソースは、添付させて頂いたソースで動いてます。
うまく説明&質問できてなかったら、すみません。<_ _>

メインソースは
#include "header.h" //←必要でしたら、ソース全て記述させて頂きます。

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	ChangeWindowMode(FALSE);	//ウィンドウモードに変更する関数(TRUE:640×480 FALSE:フルスクリーン)
	if (DxLib_Init() == -1)	//初期化処理する関数
		return -1;

	Img();

	T_sinkou_Ini();

	SetDrawScreen(DX_SCREEN_BACK);	//描画先を裏画面に設定

	while (GetHitKeyStateAll(Key) == 0 && ClearDrawScreen() == 0 && Key[KEY_INPUT_ESCAPE] == 0 && ProcessMessage() == 0){
		
		BG();

		LineHAITI();

		/*if (Key[KEY_INPUT_C] == 1)
			Cont_room();*/

		T_sinkou();

		ScreenFlip();	//裏画面データを表画面へ反映
	}

	DxLib_End();	//終了処理をする関数
	return 0;
}
ここなのですが

if (Key[KEY_INPUT_C] == 1)
 Cont_room();

メイン画面で、「c」キーを押すと、関数「Cont_room」を呼び出して
Cont_room関数内で、ポイントの向きを指定できる様にしたいのです。

「T_sinkou」関数の、下記の部分

/*---ポイント分岐設定---*/
int poi_dum = 1; //ポイント7・8 --- 1:直 2:曲
int poi_sdum1 = 1; //車庫ポイント14 --- 1:直 2:曲

を、つまり・・・^^;

 メイン画面で「c」キーを押すと、Cont_room関数を呼び出し
 ポイントの向きを「1」か「2」で変更できるような表示画面を表示して
 この表示された画面から「1」か「2」を入力して、入力された値をT_sinkou関数に渡して
 poi_dum変数と、poi_sdum1変数に代入して、ポイントの方向を変更できる様な形にしたいです。

getchar や gets関数を使って色々とやってみたのですが試して実行すると
実行されたプロンプト画面が真っ黒になってしまい、慌ててタスクマネージャーを表示して終了しようとしても
プログラムが終了できない状態になってしまったので、慌てて質問させて頂きました。(汗

メイン画面から、サブメニューの様な画面を表示して
表示されたサブメニューでポイントの方向を設定して分岐を変更したいと思ってるのですが
ヒントだけでも、頂けないでしょうか?
また、ご存知の参考サイトなど御座いましたら、ご紹介お願い致します。
勉強不足で大変申し訳ないのですが、宜しくお願い致します。<_ _>

ムンバ

Re:メイン画面からのサブ画面の表示につきまして

#2

投稿記事 by ムンバ » 16年前

配列のファイルを追加させて頂きます。

環境は
VC++2008
Windows VISTA
です。^^;
宜しくお願い致します。<_ _>

ムンバ

Re:メイン画面からのサブ画面の表示につきまして

#3

投稿記事 by ムンバ » 16年前

こんばんはっ!

質問しておいて大変申し訳ないのですが
getchar関数とswitch関数を使って処理する方法でできるかもしれないので
少し考え直して挑戦してみたいと思います。

また何かあれば宜しくお願い致します。
お騒がせしました。
ありがとうございました。(謝

つうこうにん

Re:メイン画面からのサブ画面の表示につきまして

#4

投稿記事 by つうこうにん » 16年前

int WINAPI
WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
	/* 処理の分岐に使う変数(最初は0) */
	int mode=0;
	/*---ポイント分岐設定---*/ 
	int poi_dum=1;		//ポイント7・8 --- 1:直 2:曲 
	int poi_sdum=1;		//車庫ポイント14 --- 1:直 2:曲 

	/* 初期化する(省略)*/
	
	while(ProcessMessage() == 0){
		GetHitKeyStateAll(Key);
		ClearDrawScreen();

		if(mode==0){
			BG();
			LineHAITI();
			T_sinkou( poi_dum, poi_sdum ); /*毎回向きを渡して処理する*/
			
			/*入力を処理*/
			if(Key[KEY_INPUT_C]==1) mode=1;
			if(Key[KEY_INPUT_ESCAPE]==1) break;
		}
		else if(mode==1){
			switch( Cont_room() ){
				case 0: mode=0; break;
				case 1: poi_dum=poi_sdum=1; mode=0; break;
				case 2: poi_dum=poi_sdum=2; mode=0; break;
				default:break; /*なにもしない*/
			}
		}
		ScreenFlip();
	}
	return DxLib_End();
}
int Cont_room()
{
	/*メニューの表示(省略)*/
	
	/*入力された番号を返す*/
	if(Key[KEY_INPUT_1]==1) return 1;
	if(Key[KEY_INPUT_2]==1) return 2;
	if(Key[KEY_INPUT_ESCAPE]==1) return 0;
	return -1;
}
このままではもちろんコンパイルできませんが参考までに。
ポイントはT_sinkou()関数に毎回向きを渡すのと
メイン画面とメニュー画面に処理を分けているところです。

つうこうにん

Re:メイン画面からのサブ画面の表示につきまして

#5

投稿記事 by つうこうにん » 16年前

タイミング悪かったみたいですね;

ムンバ

Re:メイン画面からのサブ画面の表示につきまして

#6

投稿記事 by ムンバ » 16年前

通行人さん、お心使いどうもありがとうございます。
参考にさせて頂きます。<_ _>

ps: 添付ファイルは、晒しといて下さい。失礼します。w

閉鎖

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