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; }