ここで勉強させていただいてるpsです。
ここのシューティングゲームの館をみながらプログラムを勉強しているのですが、どうしてもスコアがうまく動きません。
-----スコアの描写-----
int Cr ;
int score,dscore;
score=0;
dscore=score;
// 白色の値を取得
Cr = GetColor( 255 , 255 , 255 ) ;
// 文字列の描画
DrawFormatString( 520, 30, Cr, " %05d", dscore ) ;
-----終わり-----
CollisionDetection()の中の玉と敵があたったときの処理にスコア追加のプログラムを書き足しました。
----CollisionDetection()関数-----
void CollisionDetection(){
int score;
for(int i=0;i<PLAYER_MAX_SHOT1;i++){
for(int j=0;j<PLAYER_MAX_SHOT2;j++){
if(PlayerShot[j].flag==1){
for(int s=0;s<ENEMY_TOTAL_NUM;s++){
if(enemy.flag==1){
double x,y;
int range;
x=(int)(PlayerShot[j].x-enemy.x);
y=(int)(PlayerShot[j].y-enemy.y);
switch(i){
case 0:
case 5:
case 6:
range=12;
break;
default:
range=9;
break;
}
if((int)sqrt(x*x+y*y)<range+enemy.range){
score+=10;
enemy.flag=0;
PlayerShot[j].flag=0;
if(CheckSoundMem(sound_enemy_death)==1)
StopSoundMem(sound_enemy_death);
PlaySoundMem(sound_enemy_death,DX_PLAYTYPE_BACK);
}
}
}
}
}
}
}
これで無事スコアは表示はされるのですが、敵を倒したときに点数が追加されず、0のままになってしまいます。スコア追加のプログラムを書く場所がまちがっているとは思うのですが、どこに書けばいいのでしょうか?
よろしくお願いします。
スコア表示について
Re:スコア表示について
CollisionDetection()内で新たな、別のローカル変数scoreが使われているのでは?
最初のscore,dscore宣言が別の関数(Winmainとか)でされているなら、
なんらかの方法でCollisionDetectionに変数を持っていく必要があると思います。
最初のscore,dscore宣言が別の関数(Winmainとか)でされているなら、
なんらかの方法でCollisionDetectionに変数を持っていく必要があると思います。
Re:スコア表示について
書き忘れましたが、
score=0;を毎回行っているとか、dscore=score;を行っていないとかも考えられます。
ローカル変数については↓のページがわかりやすいです。
http://homepage3.nifty.com/mmgames/c_guide/12-01.html
score=0;を毎回行っているとか、dscore=score;を行っていないとかも考えられます。
ローカル変数については↓のページがわかりやすいです。
http://homepage3.nifty.com/mmgames/c_guide/12-01.html