こんにちは、少々詰まっているので助力お願いします。
ゲームプログラムを組み、ウィンドウモードで起動すると想定通りに起動するのですが、
ChangeWindowMode(TRUE);をはずす、もしくは FALSE に変更すると、画面が真っ暗になります。
その状態でメインループ内にある ClsDrawScreen(); をコメント化すると真っ暗状態が解消されます。
ただし、画像の軌跡が削除されません。
うまくフルスクリーンで起動する方法はありませんか?
そしてなぜこのような現象になるのでしょうか。
ウィンドウモードについて
Re:ウィンドウモードについて
長くなりますが、以下のようになります。
ChangeWindowMode(TRUE);があるとうまくいくのですが、
この一文をコメント文にする(フルスクリーンモードにする)と
case GAME_MAIN:
に入った段階で真っ暗になってしまいます。
#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:
に入った段階で真っ暗になってしまいます。