コンパイラはVISUALC++2008です。
本題に入ります。
今14章をやっているのですが、敵が出現して弾を打つ時に、どの敵も1発ずつしか弾を打ちません。
ためしに15章のみょん弾幕もやってみたのですが、1発(厳密には1発ではなく円形に発射する弾幕1セット)
しか撃ちませんでした。
コードミスかと思い13章と14章の部分をコピー&ペーストしたのですがやはり1発ずつになってしまいます
自分なりに考えてみたのですが
void shot_calc(int n){
int i,max=0;
if(enemy[shot[n].num].flag=1)
shot[n].flag=2;
for(i=0;i<SHOT_BULLET_MAX;i++){
if(shot[n].bullet[i].flag>0){
shot[n].bullet[i].x+=cos(shot[n].bullet[i].angle)*shot[n].bullet[i].spd;
shot[n].bullet[i].y+=sin(shot[n].bullet[i].angle)*shot[n].bullet[i].spd;
shot[n].bullet[i].cnt++;
if(shot[n].bullet[i].x<-50 || shot[n].bullet[i].x>FIELD_MAX_X+50 ||
shot[n].bullet[i].y<-50 || shot[n].bullet[i].y>FIELD_MAX_Y+50){
if(shot[n].bullet[i].till<shot[n].bullet[i].cnt)
shot[n].bullet[i].flag=0;
}
}
}
for(i=0;i<SHOT_BULLET_MAX;i++)
if(shot[n].bullet[i].flag>0)
return;
if(enemy[shot[n].num].flag!=1){
shot[n].flag=0;
enemy[shot[n].num].flag=0;
}
}
void shot_main(){
int i;
for(i=0;i<SHOT_MAX;i++){
if(shot[i].flag!=0 && 0<=shot[i].knd && shot[i].knd<SHOT_KND_MAX){
shot_bullet[shot[i].knd](i);
shot_calc(i);
shot[i].cnt++;
}
}
}
それともう1つ出して申し訳ないのですが
c:\users\user\desktop\project\1章\mydat\source\graph.cpp(37) : warning C4244: '引数' : 'double' から 'float' への変換です。データが失われる可能性があります。
この警告はdoubleで宣言しているのに1.0f等でfloat型になっているから警告を出しているだけであって
1.0や0.0のようなdoubleでも対応できるデータだからデータが失われることもないので問題なし。ってことで合ってますか?
初歩的な質問ばかりで申しわけないのですがもしよろしければご助言お願い致します。