ハイスコアの数値がおかしい

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

ハイスコアの数値がおかしい

#1

投稿記事 by read » 14年前

ハイスコアを実装したのですが数値が「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 ) ;
	}
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ハイスコアの数値がおかしい

#2

投稿記事 by softya(ソフト屋) » 14年前

デバッガで見たときのch.HiScoreと表示されている内容は一致しているのでしょうか?
あと表示部分のコードを見せてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

read

Re: ハイスコアの数値がおかしい

#3

投稿記事 by read » 14年前

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;
	}
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ハイスコアの数値がおかしい

#4

投稿記事 by softya(ソフト屋) » 14年前

表示が変なのは、スコア表示でhiscoreが/10されていないのが原因では?
あと、result()の度にLoadGraph()とLoadDivGraph()してますが毎回ロードするのでメモリリークして無駄にメモリを浪費しています。
ほっておくとDXライブラリは異常終了すると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

read

Re: ハイスコアの数値がおかしい

#5

投稿記事 by read » 14年前

ご指摘の箇所を修正しましたら正常に表示されました。ありがとうございます。

閉鎖

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