シューティングゲームの館を見て、初めてVC++インストールしたような初心者です。
何とか、試行錯誤しながら理解して自機ショットを敵に当てて倒すことはできたのですが、逆がどうしてもできなくって困っています。
C2065で実際に(x*x)…と計算する際のx,y,rangeが定義されてないとなってしまいます…(エラー文はこれだけです)
あれ?
double x,y;
int range;
の下の定義が生きてない?
と思ったのでいろいろ試したのですが…多分もっと前とかでしくじってると思うのですがいかんせん見当がつかないです…
どこが悪いんでしょうか…?
void CollisionDetection2(){ for(int i=0;i<ENEMY_TOTAL_NUM;i++){//敵の最大数100体分ループ if(EnemyShot.flag==1){//敵のショットが発射中なら for(int j=0;j<ENEMY_TOTAL_SHOT_NUM;j++){//1組200個分のループ if(EnemyShot.EnemyShots[j].flag==1){//1個でも発射中の弾があれば if(Player.flag==1){//プレイヤーの表示中なら double x,y; int range; x=(int)(EnemyShots[j].x-Player.x);//x=(弾のx位置-プレイヤーのx位置) y=(int)(EnemyShots[j].y-Player.y);//x=(弾のy位置-プレイヤーのy位置) range=9;//(弾の当たり判定) break; } if((int)sqrt(x*x+y*y) < range+Player.range){ EnemyShot.flag=0; break; } } } } } } また、これに伴い Global、Externの両方の.hのプレイヤーの構造体にrangeとflagを足して initial.cppに Player.range=25; Player.flag=1; それから PlayerControl.cppに if(Player.flag==1){ DrawGraph((int)Player.x,(int)Player.y,img_player[0],TRUE);//プレイヤーを描画 } の一文追加しています
(このプログラムコードは管理人によって字下げされました)