ショットを打たせることはできるようになったのですが、時期から発射された直後に消えてしまいます。
#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 ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; //DXライブラリ初期化 エラーが起きたら終了
/////定義
int na_shot[3],i,counter=0; //counter=発射してからのカウントをする変数。
int nanoha0[1];
int back0[1];
char Key[256];
ch_t ch;
struct shot tama[20]; //tamaを10個作る。
ch.x=132;
ch.y=240;
SetDrawScreen( DX_SCREEN_BACK ) ;//描画先を裏画面に設定
LoadDivGraph( "na_shot.png" , 3 , 1 , 3 , 36 , 36 , na_shot ) ;//画像を分割してimage配列に保存
LoadDivGraph( "nanoha00.png" , 1 , 1 , 1 , 64 , 64 , nanoha0 );//キャラクター
LoadDivGraph( "back00.bmp" , 1 , 1 , 1 , 640 , 480 , back0 );//背景01
while(1){
ClearDrawScreen(); //裏画面のデータを全て削除
GetHitKeyStateAll( Key ) ; // すべてのキーの状態を得る
if( ProcessMessage() == -1 ) break ; //異常がおきたら終了
/////背景
DrawGraph( 0 , 0 , back0[0] ,TRUE);
/////移動
if(Key[KEY_INPUT_RIGHT]==1)//右
ch.x+=2;
if(Key[KEY_INPUT_LEFT]==1)//左
ch.x-=2;
if(Key[KEY_INPUT_UP]==1)//上
ch.y-=2;
if(Key[KEY_INPUT_DOWN]==1)//下
ch.y+=2;
//移動の限界
if(ch.x<-15)
ch.x=-15;
if(ch.y<-15)
ch.y=-15;
if(ch.x>620)
ch.x=620;
if(ch.y>450)
ch.y=450;
ch.img=nanoha0[0];
DrawGraph(ch.x,ch.y,ch.img,TRUE);
/////ショット
for(i=0;i<20;i++){ //初期化処理
tama.x=ch.x;
tama.y=ch.y; //座標代入
tama.flag=0; //飛んでいない事を示すフラグ=0
}
if(counter<5) //前にエンターを押してから5カウント未満なら
counter++; //カウントアップ
else if( Key[ KEY_INPUT_Z ] == 1 ){//5カウント以上たっていたら
counter=0; //カウンターを戻す
for(i=0;i<20;i++){
if(tama.flag==0){ //発射していない玉を探し、
tama.flag=1; //発射フラグを立てる
break;
}
}
}
for(i=0;i<20;i++){
if(tama.flag==1){ //発射している玉なら
tama.x+=5; //座標を8増やす
DrawGraph( tama.x+18 , tama.y+18 , na_shot[0] , TRUE );//玉を描画
if(tama.x > 650){ //もし画面外まで来たら
tama[i].x=ch.x; //初期値に戻し、
tama[i].x=ch.y;
tama[i].flag=0; //発射フラグを戻す
}
}
}
/////////////////////////////////////////////////終了
if( Key[ KEY_INPUT_ESCAPE ] == 1 ) break;//Escボタンが押されたらブレイク
ScreenFlip() ;//裏画面データを表画面へ反映
}
DxLib_End() ;// DXライブラリ使用の終了処理
return 0 ;// ソフトの終了
}自分に力不足のため、原因がわかりませんでした。
わかる方いましたら、どうか教えてください。