ページ 11

ハイスコアを実装出来ません

Posted: 2012年6月13日(水) 07:55
by kild
龍神録にハイスコアを実装するため以下のプログラムを作成したんですがHiScore.txtが作成されません。
また保存されるハイスコアを10進数で保存するにはどうすればいいでしょうか?

hiscore.cpp

コード:

void HiScoreSave( void ){	// ハイスコアのセーブ
	FILE *fp ;
	fp = fopen( "HiScore.txt" , "w" ) ;
	if( fp == NULL ) return ;
	fwrite( &ch.HiScore , sizeof( ch.HiScore ) , 1 , fp ) ;
	fclose( fp ) ;
}

void HiScoreLoad( void ){	// ハイスコアのロード
	FILE *fp ;
	fp = fopen( "HiScore.txt" , "r" ) ;
	if( fp == NULL ){
		ch.HiScore = 100000 ;
	}
	else{
		fread( &ch.HiScore , sizeof( ch.HiScore ) , 1 , fp ) ;
		fclose( fp ) ;
	}
}

void HiScore_Update(){
	if( ch.HiScore < ch.score ){
		ch.HiScore = ch.score ;
		HiScoreSave() ; // ハイスコアのセーブ
	}
}
boss_shot.cpp

コード:

if(ボスが死んだら)
HiScore_Update();
main.cpp

コード:

	while(ProcessLoop()==0){//メインループ
		music_ini();
		HiScoreLoad();
		switch(func_state){
以下略

Re: ハイスコアを実装出来ません

Posted: 2012年6月13日(水) 08:01
by h2so5
1. まず、ブレークポイントを設定するなどしてちゃんと HiScoreSave 関数が呼ばれるか確認してください。
2. 本当にHiScore.txtが作成されていないかチェックしてください。
VC++の場合はカレントディレクトリがプロジェクトフォルダになります。

3. メインループで毎フレームデータを読み込むのは無駄です。

Re: ハイスコアを実装出来ません

Posted: 2012年6月13日(水) 12:54
by softya(ソフト屋)
kild さんが書きました:また保存されるハイスコアを10進数で保存するにはどうすればいいでしょうか?
テキストと言う意味なら書き出しはfprintfで読み込みはfscanfを使うとテキストで入出力可能です。

Re: ハイスコアを実装出来ません

Posted: 2012年6月13日(水) 15:40
by ISLe
fwrite/freadを使うならバイナリモードにしないと。