19章のキャラをキー入力によって移動させる。と、26章のシューティング基本。を組み合わせてみると、
Run-Time Check Failure #3 - The variable 'ch' is being used without being initialized.
[中断][続行][無視]
といったエラーのようなものが出て実行できません。
ショットの開始する座標にキャラクターの座標を入れたのですがどこが悪いのでしょうか?
#include "DxLib.h"
typedef struct{//キャラクターの構造体
int x,y,img;
}ch_t;
struct shot{//ショットの構造体
int x,y;
int flag;
};
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
//////定義
int image001[1];
int back1[1];
int na_shot[3],i,counter=0;//counter=発射してからのカウントをする変数。
struct shot tama[10];//tamaを10個作る。
char Key[256];
ch_t ch;
//////定義ここまで
for(i=0;i<10;i++){//ショットの初期化処理。
tama.x=ch.x;tama.y=ch.y;//座標代入
tama.flag=0;//飛んでいないことを示す。フラグ=0
}
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理
ch.x=120;
ch.y=240;
SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定
LoadDivGraph( "sample00.png" , 1 , 1 , 1 , 64 , 64 , image001 );//画像を分割してimage001配列に保存
LoadDivGraph( "back00.bmp" , 1 , 1 , 1 , 640 , 480 , back1 );
LoadDivGraph("na_shot.png",3,1,3,36,36,na_shot);
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了
////////移動
if(Key[KEY_INPUT_RIGHT]==1)
ch.x++;
if(Key[KEY_INPUT_LEFT]==1)
ch.x--;
if(Key[KEY_INPUT_UP]==1)
ch.y--;
if(Key[KEY_INPUT_DOWN]==1)
ch.y++;
////////移動ここまで
ch.img=image001[0];
DrawGraph(0,0,back1[0],FALSE);
DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//[12]の画像を描画
///////ショット
if(counter<5)
counter++;
else if(Key[KEY_INPUT_Z]==1){
counter=0;
for(i=0;i<10;i++){
if(tama.flag==0){
tama.flag=1;
break;
}
}
}
for(i=0;i<10;i++){
if(tama[1].flag==1){
tama.x+=8;
if(tama.x>500){
tama.x=ch.x;
tama.flag=0;
}
}
}
ScreenFlip();//裏画面を表画面に反映
}
DxLib_End();
return 0;
}