ショットを打たせることはできるようになったのですが、時期から発射された直後に消えてしまいます。
#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 ;// ソフトの終了 }
自分に力不足のため、原因がわかりませんでした。
わかる方いましたら、どうか教えてください。