19章の敵消滅エフェクトで詰まっています
ビルドをしたらエラーが沢山出てきて困っております
out.cpp
(14): error C2065: 'cshot' : 定義されていない識別子です。
(14): error C2228: '.cnt' の左側はクラス、構造体、共用体でなければなりません
↑のようなエラー文が何行も出てきたのですが何をどうすれば良いのでしょうか?
out.cpp やini.cpp等が出ていたらそのソースファイルが間違っていて、(14): errorの()の数字はそのエラーの原因がある行数だと思うのですが
プログラム知識は〈やさしいC++〉一通り読んだ程度でしかもエラー数が多すぎて何をすれば良いのか分からない状況です
エフェクトについて
Re: エフェクトについて
とりあえず、out.cpp の中身が見たいです。げん さんが書きました: out.cpp
(14): error C2065: 'cshot' : 定義されていない識別子です。
(14): error C2228: '.cnt' の左側はクラス、構造体、共用体でなければなりません
↑のようなエラー文が何行も出てきたのですが何をどうすれば良いのでしょうか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: エフェクトについて
19章で詰まっていると言われても、そちらがコピー&ペーストした結果エラーが出たのか、
参考にして自力でコードを書いた結果エラーが出たのか、誰も分からないので答えようが無いと思います。
問題ありそうなコードとエラー文を載せてもらってもいいでしょうか。
参考にして自力でコードを書いた結果エラーが出たのか、誰も分からないので答えようが無いと思います。
問題ありそうなコードとエラー文を載せてもらってもいいでしょうか。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: エフェクトについて
cshotが定義されていないか、使用している位置から見えないのでしょう。
配布しているプロジェクトの19章とどこが違うのでしょうか?
配布しているプロジェクトの19章とどこが違うのでしょうか?
Re: エフェクトについて
問題だと思われるコードファイルの一つであるout.cppの中身です
プログラムは19章のコピペです
#include "../include/GV.h"
#define ENEMY_RANGE_MAX 4
#define CSHOT_RANGE_MAX 2
//敵の当たり判定範囲
int enemy_range[ENEMY_RANGE_MAX]={16,30,16,50};
//自機ショットの当たり判定範囲
int cshot_range[CSHOT_RANGE_MAX]={6,};
//当たったかどうかを判定する
int out_judge_cshot(int i,int s){
int j;
if(cshot[i].cnt>0){//ショットの軌道が1度でも計算されていたら
double x=cshot[i].x-enemy[s].x;//敵と自機ショットとの距離
double y=cshot[i].y-enemy[s].y;
//オーバーフロー対策
if(cshot[i].knd>=CSHOT_RANGE_MAX || enemy[s].knd>=ENEMY_RANGE_MAX)
printfDx("out_judge_cshot内オーバーフロー");
//敵の当たり判定と自機ショットの当たり判定の合計範囲
double r=cshot_range[cshot[i].knd]+enemy_range[enemy[s].knd];
//中間を計算する必要があれば
if(cshot[i].spd>r){
//1フレーム前にいた位置を格納する
double pre_x=cshot[i].x+cos(cshot[i].angle+PI)*cshot[i].spd;
double pre_y=cshot[i].y+sin(cshot[i].angle+PI)*cshot[i].spd;
double px,py;
for(j=0;j<cshot[i].spd/r;j++){//進んだ分÷当たり判定分ループ
px=pre_x-enemy[s].x;
py=pre_y-enemy[s].y;
if(px*px+py*py<r*r)
return 1;
pre_x+=cos(cshot[i].angle)*r;
pre_y+=sin(cshot[i].angle)*r;
}
}
if(x*x+y*y<r*r)//当たり判定内なら
return 1;//当たり
}
return 0;
}
//敵が死ぬかどうかの決定
extern void enter_del_effect(int);
void enemy_death_judge(int s){
int i;
se_flag[8]=1;//敵に当たった音
if(enemy[s].hp<0){//敵のHPが0未満になったら
enemy[s].flag=0;//敵を消滅させる
se_flag[1]=1;//敵のピチュり音
enter_del_effect(s);
for(i=0;i<SHOT_MAX;i++){//敵総数分
if(shot[i].flag!=0){//登録されている弾幕データがあれば
if(s==shot[i].num){//その敵が登録した弾幕があれば
shot[i].flag=2;//それ以上弾幕を続けないフラグを立てる
break;
}
}
}
}
}
//当たり判定メイン
void out_main(){
int i,s;
for(i=0;i<CSHOT_MAX;i++){//自機ショット総数
if(cshot[i].flag>0){
for(s=0;s<ENEMY_MAX;s++){//敵総数
if(enemy[s].flag>0){
if(out_judge_cshot(i,s)){//自機ショットと敵が当たっていれば
cshot[i].flag=0;//その自機ショットを消す
enemy[s].hp-=cshot[i].power;//弾の持つパワー分HPを減らす
enemy_death_judge(s);//敵が死ぬかどうかを決める
}
}
}
}
}
}
Re: エフェクトについて
おそらく自機弾の構造体cshotが見つからないのだと思います。
「自機にショットを撃たせてみよう」ページ内にある
この処理のどちらかがされていないのではないですか。
最初から19章まで全部コピーなら多分この辺りかと思います。
「自機にショットを撃たせてみよう」ページ内にある
//キャラクターショットに関する構造体
typedef struct{
int flag,power,cnt,knd;//フラグ、パワー、カウンタ、種類
double x,y,angle,spd;//座標、角度、スピード
}cshot_t;
//---- GV.h に以下を追加 ----
GLOBAL cshot_t cshot[CSHOT_MAX];//自機ショット登録用変数
最初から19章まで全部コピーなら多分この辺りかと思います。
Re: エフェクトについて
zxcさんの言うとおりにしたらエラーは消えたのですが
c1xx : fatal error C1083: ソース ファイルを開けません。'effect.cpp': No such file or directory
が出たのですがenemyにあるhit_effectの場所が悪いのでしょうか?試しに一回effectのフォルダに移動したのですが変わらなかったので
同じエラーが出ている人たちの質問を見て試しているのですがエラーが消えてくれません
c1xx : fatal error C1083: ソース ファイルを開けません。'effect.cpp': No such file or directory
が出たのですがenemyにあるhit_effectの場所が悪いのでしょうか?試しに一回effectのフォルダに移動したのですが変わらなかったので
同じエラーが出ている人たちの質問を見て試しているのですがエラーが消えてくれません
Re: エフェクトについて
関数云々でなく、effect.cppというファイルがないよ、と言ってるだけですよ?げん さんが書きました:zxcさんの言うとおりにしたらエラーは消えたのですが
c1xx : fatal error C1083: ソース ファイルを開けません。'effect.cpp': No such file or directory
が出たのですがenemyにあるhit_effectの場所が悪いのでしょうか?試しに一回effectのフォルダに移動したのですが変わらなかったので
同じエラーが出ている人たちの質問を見て試しているのですがエラーが消えてくれません
ファイルはどこに存在していますか?
written by へにっくす
Re: エフェクトについて
effect.cppは龍神録のフォルダにあります。厳密に行ったら1章と2章の間に挟まれていますね
このeffect.cppフォルダを別の場所に移動させれば良いのでしょうか?
このeffect.cppフォルダを別の場所に移動させれば良いのでしょうか?
Re: エフェクトについて
19章で悩んでたんじゃないの?げん さんが書きました:effect.cppは龍神録のフォルダにあります。厳密に行ったら1章と2章の間に挟まれていますね
このeffect.cppフォルダを別の場所に移動させれば良いのでしょうか?
なんですか1章と2章の間って
out.cppと同じフォルダにあるかを聞いていたんですが、そんな答えじゃ分かりませんよ。
written by へにっくす
Re: エフェクトについて
この説明からそちらがどのような状況なのか、分かることはほとんどありません。げん さんが書きました: effect.cppは龍神録のフォルダにあります。
厳密に行ったら1章と2章の間に挟まれていますね
このeffect.cppフォルダを別の場所に移動させれば良いのでしょうか?
龍神録のフォルダと言っても、そちらの自作かダウンロードしたものか分かりませんし、
1章と2章と言われてもフォルダかファイルかで解決策は多少異なるでしょう。
具体的にどのような階層構造をとっているのかを説明してくださいね。
自分があまり見ないエラーですので良く分かりませんが、「effect.cpp」が
そもそも存在していないのか、もしくは適切な場所に存在していないのだと思います。