ページ 1 / 1
ウィンドウモードについて
Posted: 2009年11月03日(火) 23:34
by min
こんにちは、少々詰まっているので助力お願いします。
ゲームプログラムを組み、ウィンドウモードで起動すると想定通りに起動するのですが、
ChangeWindowMode(TRUE);をはずす、もしくは FALSE に変更すると、画面が真っ暗になります。
その状態でメインループ内にある ClsDrawScreen(); をコメント化すると真っ暗状態が解消されます。
ただし、画像の軌跡が削除されません。
うまくフルスクリーンで起動する方法はありませんか?
そしてなぜこのような現象になるのでしょうか。
Re:ウィンドウモードについて
Posted: 2009年11月04日(水) 08:17
by Naohiro19
元のソースを示していただけませんでしょうか?
Re:ウィンドウモードについて
Posted: 2009年11月05日(木) 22:28
by min
長くなりますが、以下のようになります。
#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:
に入った段階で真っ暗になってしまいます。