スコア表示について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ps

スコア表示について

#1

投稿記事 by ps » 17年前

ここで勉強させていただいてる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:スコア表示について

#2

投稿記事 by ランド » 17年前

CollisionDetection()内で新たな、別のローカル変数scoreが使われているのでは?
最初のscore,dscore宣言が別の関数(Winmainとか)でされているなら、
なんらかの方法でCollisionDetectionに変数を持っていく必要があると思います。

ランド

Re:スコア表示について

#3

投稿記事 by ランド » 17年前

書き忘れましたが、
score=0;を毎回行っているとか、dscore=score;を行っていないとかも考えられます。

ローカル変数については↓のページがわかりやすいです。
http://homepage3.nifty.com/mmgames/c_guide/12-01.html

ps

Re:スコア表示について

#4

投稿記事 by ps » 17年前

指摘していただいた部分を直したら無事表示することができました。

ありがとうございました^^

閉鎖

“C言語何でも質問掲示板” へ戻る