DirectXでタイトル画面からゲーム画面への切り替え

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

DirectXでタイトル画面からゲーム画面への切り替え

#1

投稿記事 by Maloc » 14年前

タイトル画面(画像1枚)の状態でキー入力があった場合、ゲーム画面になるようにプログラムしているのですが上手くいかず止まっています。
画像の優先度?の切り替えができるのかなどが分からなかったので単純にキー押下後、タイトルテクスチャの座標に全て0を代入して消えたように見せています。

テクスチャ、ポリゴンは後に記述したのが最前面にくるということなので 自キャラ、敵キャラ、弾、背景という順です。
試しにflgを1にし、自キャラ処理内にTaitol();の構文を入れたところ切り替わったので関数の作り方やswitchの使い方が問題なのでしょうか。

コード:

flg = 0;  //グローバル宣言
void DirectXMain(void){

	if(Timer16ms)
	{
		Timer16ms=0;
		switch(flg){
			case 0:
				Taitol();              //タイトル
				break;
			case 1:
				UpdateInput();	//キーの初期化
				MyProcess();	//自キャラ処理
				EnProcess();	//敵キャラ処理
				Hit();		//当たり処理
		}
		Render();	//描画

	}
}
void Taitol(void){
	int i;
	if(GetKeyboardPress(DIK_A)){
		for(i=0;i<4;i++){
			back[i].x = back[i] = 0;
		}
                         flg = 1;
	}
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DirectXでタイトル画面からゲーム画面への切り替え

#2

投稿記事 by softya(ソフト屋) » 14年前

Render(); //描画
をタイトル用とゲーム本編用に分けてはダメなのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Maloc

Re: DirectXでタイトル画面からゲーム画面への切り替え

#3

投稿記事 by Maloc » 14年前

さっそくありがとうございます
安直な考えだと思われますが、Render関数の構文とそのほかg_pd3dDeviceにかかわる構文を書き加え、その2種の関数をswitch文のそれぞれに追加しました。
しかしビルド(エラー0)でデバッグしてもウインドウが表示されません。

コード:


LPDIRECT3DDEVICE9 g_pd3dDevice =NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice_2 =NULL;
・
・
・
void Render(void)
{
	int i;
	g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0f,0);
	if(SUCCEEDED(g_pd3dDevice->BeginScene())){
		//自キャラ
		g_pd3dDevice->SetTexture(0,g_pD3DTexturePolygon);
		g_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,&my_char,sizeof(VERTEX_2D));
		//弾
		g_pd3dDevice->SetTexture(0,ShotTexture);
		g_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,&shot,sizeof(VERTEX_2D));
		g_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,&en_shot,sizeof(VERTEX_2D));
		//敵キャラ
		g_pd3dDevice->SetTexture(0,Invader_10_Texture);
		for (i=0 ; i<CHARACTER_MAX ; i++) {
			g_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,&en_10pt[i],sizeof(VERTEX_2D));
		}
		g_pd3dDevice->EndScene();
	}
	g_pd3dDevice->Present(NULL,NULL,NULL,NULL);
}

void TaitolRender(void){
		g_pd3dDevice_2->Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0f,0);
	if(SUCCEEDED(g_pd3dDevice_2->BeginScene())){
			//背景
		g_pd3dDevice_2->SetTexture(0,BackGround);
		g_pd3dDevice_2->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,&back,sizeof(VERTEX_2D));
				g_pd3dDevice_2->EndScene();
			}
	g_pd3dDevice_2->Present(NULL,NULL,NULL,NULL);
}

Maloc

Re: DirectXでタイトル画面からゲーム画面への切り替え

#4

投稿記事 by Maloc » 14年前

解決しました。
どうやら情けないミスで
UpdateInput(); //キーの初期化
をcase 1:の場合のみで行っていました。なのでいくらキーを押してもflgがたたないのは当然ですね。
ただ、Renderを分けるというのはとても役に立つものでした。ありがとうございます。

閉鎖

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