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

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

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

#1

投稿記事 by kild » 14年前

龍神録にハイスコアを実装するため以下のプログラムを作成したんですが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){
以下略

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 14年前

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

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

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

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

#3

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

kild さんが書きました:また保存されるハイスコアを10進数で保存するにはどうすればいいでしょうか?
テキストと言う意味なら書き出しはfprintfで読み込みはfscanfを使うとテキストで入出力可能です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

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

#4

投稿記事 by ISLe » 14年前

fwrite/freadを使うならバイナリモードにしないと。

閉鎖

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