ウィンドウモードについて

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

ウィンドウモードについて

#1

投稿記事 by min » 15年前

こんにちは、少々詰まっているので助力お願いします。

ゲームプログラムを組み、ウィンドウモードで起動すると想定通りに起動するのですが、

ChangeWindowMode(TRUE);をはずす、もしくは  FALSE に変更すると、画面が真っ暗になります。

その状態でメインループ内にある ClsDrawScreen(); をコメント化すると真っ暗状態が解消されます。
ただし、画像の軌跡が削除されません。

うまくフルスクリーンで起動する方法はありませんか?
そしてなぜこのような現象になるのでしょうか。

Naohiro19

Re:ウィンドウモードについて

#2

投稿記事 by Naohiro19 » 15年前

元のソースを示していただけませんでしょうか?

min

Re:ウィンドウモードについて

#3

投稿記事 by min » 15年前

長くなりますが、以下のようになります。
#include "spgame.h"

//構造体の使用宣言
struct CharData jikidata;
struct CharData jitama[JITAMA_MAX];
struct CharData tekidata[50];
//グローバル変数
int trigger=0;
int gstate=GAME_TITLE;
int gametitlejpg;
int back;
double idouryou[20];

//メイン関数スタート地点
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
	ChangeWindowMode(TRUE);//ウィンドウモードで起動
	if(DxLib_Init() == -1) return -1;//初期化と裏画面化
	SetDrawScreen( DX_SCREEN_BACK ) ;

	gametitlejpg=LoadGraph("img/title.jpg");//タイトル背景
	back=LoadGraph("img/back.png");//メイン背景

	JicharaLoad();
	TekiLoad();
	BossLoad();
	
	SetFrameRate();

//メインループ
	while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){
		ClearDrawScreen();

		switch(gstate){
                case GAME_TITLE:
					DrawGameTitle();
					DairyMessage();
					break;
				case GAME_MAIN:
					DrawGameMain();
					break;
				case GAME_OVER:
					DrawGameOver();
					break;
				case GAME_CLEAR:
					DrawGameClear();
					break;
		}

		ScreenFlip();
	}

	DxLib_End() ;				// DXライブラリ使用の終了処理

	return 0 ;					// ソフトの終了
}





void DrawGameTitle(){
	DrawGraph(0,0,gametitlejpg,FALSE);
	ScreenFlip();
	DairyMessage();
	gstate=GAME_MAIN;
	JicharaInit();
	TekiInit();
	BossInit();
}

void DrawGameMain(){
		DrawGraph(0,0,back,FALSE);
		JicharaMove();
		JitamaMove();
		TekiMove();
		BossMove();
		if(AtariHantei()==1) jikidata.life--; //被弾したらhp-1
		if(jikidata.life==0)gstate=GAME_OVER; //hpが0になったら終わり
}

void DrawGameOver(){
	gstate=GAME_TITLE;
}

void DrawGameClear(){
}

void SetFrameRate(){			//fps用関数。今後nループ→idouryou[n]で対応
	float frametime = 0;
	unsigned int s = GetNowCount();
	for(int i=0;i<30;i++){
		ScreenFlip();
		unsigned int e=GetNowCount();
		frametime=frametime + e - s;
		s=e;
	}
	frametime=frametime/30;
	for(int i=1;i<20;i++){
		idouryou=i/16.67*frametime;
	}
}




ChangeWindowMode(TRUE);があるとうまくいくのですが、
この一文をコメント文にする(フルスクリーンモードにする)と

case GAME_MAIN: 

に入った段階で真っ暗になってしまいます。

閉鎖

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