龍神録にロード画面を実装する方法
Posted: 2010年4月20日(火) 14:50
昔、どなたかが
▼以下のロードのサンプルを作った▼
#include "Lib/DxLib.h"
//毎回しないといけない処理
int LoopProcess(){
if(ScreenFlip())//裏画面反映
return -1;
if(ProcessMessage())//メッセージ処理
return -1;
if(ClearDrawScreen())//画面クリア
return -1;
if(CheckHitKey(KEY_INPUT_ESCAPE))//ESCキーが押されていると終了
return -1;
return 0;
}
//読み込み個数(GraphLoadが呼ばれる回数)
#define NUM 120
//何回呼ばれたかカウントする変数
int LoadNum;
//ロード状態を描画
void GraphLoad(){
DrawFormatString(300,400,GetColor(0,255,255),"%d%",LoadNum*100/NUM);
DrawBox( 20, 440, 20+600* NUM/NUM, 460, GetColor(0,255,255), FALSE );//枠描画
DrawBox( 20, 440, 20+600*LoadNum/NUM, 460, GetColor(0,255,255), TRUE );//中身描画
LoadNum++;
}
//データのロードと描画関数の呼び出し
int MyLoadGraph(char *st){
GraphLoad();
return LoadGraph( st );
}
//データのロード
void Load( int GraphHandle[NUM] ){
int i;
for(i=0;i<NUM;i++){
LoopProcess();
GraphHandle = MyLoadGraph("Image.png");
}
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
int n=0;
int GraphHandle[NUM];//画像ハンドル
if( ChangeWindowMode(TRUE) || DxLib_Init() || SetDrawScreen( DX_SCREEN_BACK ) ) return -1;
Load( GraphHandle );//データのロード
while( !LoopProcess() ){
//通常ここに処理を追加
}
DxLib_End();
return 0;
}
これを利用して龍神録にロード画面を表示させる方法を実装してみたいのですが、
画像ハンドルが例えば
img_board[10] = LoadGraph("../dat/img/board/10.png");
img_board[11] = LoadGraph("../dat/img/board/11.png");
img_board[12] = LoadGraph("../dat/img/board/12.png");
img_etc[1] = LoadGraph( "../dat/img/enemy/hp.png" );
img_etc[2] = LoadGraph( "../dat/img/enemy/bossback.png" );
img_etc[5] = LoadGraph( "../dat/img/enemy/bossback3.png" );
LoadDivGraph( "../dat/img/bullet/b0.png" , 5 , 5 , 1 , 76 , 76 , img_bullet[0] ) ;
LoadDivGraph( "../dat/img/bullet/b1.png" , 6 , 6 , 1 , 22 , 22 , img_bullet[1] ) ;
LoadDivGraph( "../dat/img/bullet/b2.png" , 10 , 10 , 1 , 5 , 120 , img_bullet[2] ) ;
sound_se[0]=LoadSoundMem("../dat/se/enemy_shot.wav");
sound_se[1]=LoadSoundMem("../dat/se/enemy_death.wav");
sound_se[2]=LoadSoundMem("../dat/se/cshot.wav");
color[0] = GetColor(255,255,255);//白
color[1] = GetColor( 0, 0, 0);//黒
color[2] = GetColor(255, 0, 0);//赤
みたいにバラバラで、どうもロードの仕方が分かりません。
どうしたら上手くいくか分かる方がいましたら教えてください。
よろしくお願いします。
▼以下のロードのサンプルを作った▼
#include "Lib/DxLib.h"
//毎回しないといけない処理
int LoopProcess(){
if(ScreenFlip())//裏画面反映
return -1;
if(ProcessMessage())//メッセージ処理
return -1;
if(ClearDrawScreen())//画面クリア
return -1;
if(CheckHitKey(KEY_INPUT_ESCAPE))//ESCキーが押されていると終了
return -1;
return 0;
}
//読み込み個数(GraphLoadが呼ばれる回数)
#define NUM 120
//何回呼ばれたかカウントする変数
int LoadNum;
//ロード状態を描画
void GraphLoad(){
DrawFormatString(300,400,GetColor(0,255,255),"%d%",LoadNum*100/NUM);
DrawBox( 20, 440, 20+600* NUM/NUM, 460, GetColor(0,255,255), FALSE );//枠描画
DrawBox( 20, 440, 20+600*LoadNum/NUM, 460, GetColor(0,255,255), TRUE );//中身描画
LoadNum++;
}
//データのロードと描画関数の呼び出し
int MyLoadGraph(char *st){
GraphLoad();
return LoadGraph( st );
}
//データのロード
void Load( int GraphHandle[NUM] ){
int i;
for(i=0;i<NUM;i++){
LoopProcess();
GraphHandle = MyLoadGraph("Image.png");
}
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
int n=0;
int GraphHandle[NUM];//画像ハンドル
if( ChangeWindowMode(TRUE) || DxLib_Init() || SetDrawScreen( DX_SCREEN_BACK ) ) return -1;
Load( GraphHandle );//データのロード
while( !LoopProcess() ){
//通常ここに処理を追加
}
DxLib_End();
return 0;
}
これを利用して龍神録にロード画面を表示させる方法を実装してみたいのですが、
画像ハンドルが例えば
img_board[10] = LoadGraph("../dat/img/board/10.png");
img_board[11] = LoadGraph("../dat/img/board/11.png");
img_board[12] = LoadGraph("../dat/img/board/12.png");
img_etc[1] = LoadGraph( "../dat/img/enemy/hp.png" );
img_etc[2] = LoadGraph( "../dat/img/enemy/bossback.png" );
img_etc[5] = LoadGraph( "../dat/img/enemy/bossback3.png" );
LoadDivGraph( "../dat/img/bullet/b0.png" , 5 , 5 , 1 , 76 , 76 , img_bullet[0] ) ;
LoadDivGraph( "../dat/img/bullet/b1.png" , 6 , 6 , 1 , 22 , 22 , img_bullet[1] ) ;
LoadDivGraph( "../dat/img/bullet/b2.png" , 10 , 10 , 1 , 5 , 120 , img_bullet[2] ) ;
sound_se[0]=LoadSoundMem("../dat/se/enemy_shot.wav");
sound_se[1]=LoadSoundMem("../dat/se/enemy_death.wav");
sound_se[2]=LoadSoundMem("../dat/se/cshot.wav");
color[0] = GetColor(255,255,255);//白
color[1] = GetColor( 0, 0, 0);//黒
color[2] = GetColor(255, 0, 0);//赤
みたいにバラバラで、どうもロードの仕方が分かりません。
どうしたら上手くいくか分かる方がいましたら教えてください。
よろしくお願いします。