クリアー表示の仕方
Posted: 2009年3月05日(木) 11:31
度々すみません、どうしてもわからないことがあります。
全部敵を捕まえたらゲームがストップして、ゲームクリアーの表示のやり方を教えていただけないでしょうか?
全部敵を捕まえたらゲームがストップして、ゲームクリアーの表示のやり方を教えていただけないでしょうか?
#include "DxLib.h" #define MAX_ENEMY 6 (略) int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { int ch_image[16],enemy_image[16], i,j; int catch_enemy; ch_t ch;//自キャラ enemy_t enemy[12];//敵キャラ catch_enemy = 0; //捕まえた敵の数の初期化 if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理 /*代入(初期化)*/ ch.x =320; ch.y =160; ch.walking_flag=0; ch.muki=3; for(i=0;i<6;++i) { while(1) { enemy.x=GetRand(20-1); enemy.y=GetRand(15-1); if(hantei[enemy.y][enemy.x]==0) { enemy.x*=32; enemy.y*=32; break; } } enemy.walking_flag=0; enemy.muki=GetRand(3); enemy.exist=0; enemy.bright_operation=255; } SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定 LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , ch_image ) ;//画像を分割してimage配列に保存(自キャラ) LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , enemy_image );//敵キャラ while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]) { //↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了 /*白い壁を描画*/ for(i=0;i<15;i++) for(j=0;j<20;j++) if(hantei[i][j]==1) DrawBox(j*32,i*32,(j+1)*32,(i+1)*32,GetColor(255,255,255),TRUE); chara_walk(&ch,enemy,6); ch.img=ch_image[(ch.x%32+ch.y%32)/8 + ch.muki*4]; //画像をセット DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画 for(i=0;i<6;++i) { if(enemy[i].exist==0)//敵が存在していたら { enemy_walk(&enemy[i]); enemy[i].img=enemy_image[(enemy[i].x%32+enemy[i].y%32)/8 + enemy[i].muki*4]; DrawGraph( enemy[i].x , enemy[i].y , enemy[i].img , TRUE ); } else//当たったらフェードアウト { if(enemy[i].bright_operation!=0) { SetDrawBlendMode(DX_BLENDMODE_ALPHA,enemy[i].bright_operation--); DrawGraph( enemy[i].x , enemy[i].y , enemy[i].img , TRUE ); SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ; if(enemy[i].bright_operation == 254) //もし敵を捕まえたら catch_enemy++; } } } if(catch_enemy >= MAX_ENEMY) //すべての敵を捕まえたら printfDx("GAME SET"); ScreenFlip(); } DxLib_End(); return 0; }
(略) while( ) { switch (func_state){ case 0: /*--------------------------------------------------------------- ゲームの処理 先ほどのサンプルのほとんどがここに来ます。 >>if(catch_enemy >= MAX_ENEMY) //すべての敵を捕まえたら >> printfDx("GAME SET"); この条件を、case 0にジャンプするようにします。 ---------------------------------------------------------------*/ break; case 1: /*全敵捕獲後の処理*/ break; default: /*func_stateが0, 1以外になってしまった時の例外処理*/ } }こんな感じでいいでしょう。
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]) { }のしたにつけるものではないですよ。