ページ 1 / 1
ハイスコアの数値がおかしい
Posted: 2012年6月17日(日) 11:03
by read
ハイスコアを実装したのですが数値が「444444」と表示されてゲーム内で出したスコアが反映されません。
ハイスコアのデータが無い場合、ゲーム開始時にハイスコアの初期値が設定されるはずがされません。
ゲームクリアをしてハイスコアを表示する時にハイスコアのデータが作成され「444444」と表示されます。
また、ハイスコアのデータを開くと、その時のスコアが正常に書き込まれています。
コード:
void ScoreSave( void ){
FILE *fp ;
fp = fopen( "HiScore.txt" , "w" ) ;
if( fp == NULL ) return ;
fprintf(fp, "%d",ch.HiScore);
fclose( fp ) ;
}
コード:
void ScoreLoad( void ){
FILE *fp ;
fp = fopen( "HiScore.txt" , "r" ) ;
if( fp == NULL ){
ch.HiScore = 100000 ;
}
else{
fscanf(fp, "%d", &ch.HiScore);
fclose( fp ) ;
}
}
Re: ハイスコアの数値がおかしい
Posted: 2012年6月17日(日) 11:50
by softya(ソフト屋)
デバッガで見たときのch.HiScoreと表示されている内容は一致しているのでしょうか?
あと表示部分のコードを見せてください。
Re: ハイスコアの数値がおかしい
Posted: 2012年6月17日(日) 17:50
by read
ch.HiScoreと表示されている内容は一致していました。
表示部分のコードは下記となってます。
コード:
void result(){
int i;
int score=ch.score;
int hiscore=ch.HiScore;
int result1;
result1 = LoadGraph( "../dat/img/result/result.png" ); //背景
LoadDivGraph( "../dat/img/num/1.png" , 10 , 10 , 1 , 48 , 54 , img_num[1] ) ; //スコア用画像
DrawGraph( 0 , 0 , result1 , FALSE ) ;
for(i=0;i<6;i++){ //スコア表示
DrawRotaGraph(550-40*i,270,1.0f,0.0f,img_num[1][hiscore%10],TRUE); //ハイスコア表示
DrawRotaGraph(550-40*i,380,1.0f,0.0f,img_num[1][score%10],TRUE); //今回のスコア表示
score/=10;
}
}
Re: ハイスコアの数値がおかしい
Posted: 2012年6月17日(日) 17:58
by softya(ソフト屋)
表示が変なのは、スコア表示でhiscoreが/10されていないのが原因では?
あと、result()の度にLoadGraph()とLoadDivGraph()してますが毎回ロードするのでメモリリークして無駄にメモリを浪費しています。
ほっておくとDXライブラリは異常終了すると思います。
Re: ハイスコアの数値がおかしい
Posted: 2012年6月17日(日) 23:14
by read
ご指摘の箇所を修正しましたら正常に表示されました。ありがとうございます。