現在360度同時に玉を放つプログラムを作っており、玉の角度は20度で一度に18発の弾を発射させようと考えてます。
また、玉は一度に10回までしか表示させられないようにしています。(伝え方が下手で申し訳ありません)
例えば1回目にボタンを押した玉が全て画面外に消えなければ11回目のボタン入力による玉発射は行われないという仕組みです。
現在制作中のソースですが、ゲームプログラミングの館様のHPを参考に角度算出をさせていただきました。
/*-------------------
玉の角度を求める式
-------------------/*
void Shot3(){
for(i = 0; i < 9; i++){
if(ShotFlag3[i] == 0){
ShotFlag3[i] == 1;
Shotx3[i] = x ;
Shoty3[i] = y - 15;
}
if(ShotFlag[i] == 1){
Shotx3[i] = Shotx3[i] + SpeedX3;
Shoty3[i] = Shoty3[i] + SpeedY3;
if(Shotx3[i] < -20 || Shotx3[i] > 610 || Shoty3[i] < -10 || Shoty3[i] > 500){
/*----------------------------
弾が画面から消えたら
------------------------------*/
ShotFlag3[i] = 0;
}
Draw::DrawBallet(Shotx3[i],Shoty3[i]);
}
}
}
また、角度を求める式はこちらになります
int Move(double theta, double movex, double movey)
{
int move[2];
int movex[0] = cos(theta) * move;
int movey[1] = sin(theta) * move;
return move[];
}
複数の値を返す場合はreturn文に配列を扱うというのを知ったのですが、扱いが分からず困っている状況です。
また、一度に18発の弾を発射できるようにしており、その18発すべての弾の管理が上手く出来ぬ状況です。
なにぶん一度に18発のセットが10セットまでしか表示されぬようプログラムを作りたいと思い、1セットすべてが画面から消えた判定を行うプログラムも書けない状況です。
こういったふうに作ればいいなどアドバイスを頂けたら幸いです。
また大変雑な文章な為、理解に苦しんでしまうかもしれませんが、よろしくお願いいたします。