2012-04-29 34 views
0

私は作成したゲームを持っています。高得点を読み込んで保存する関数を実装したいと思います。最初にテキストファイルがない場合(私の場合はhighscore.txt)、一度作成したファイルに0を出力します。負荷がかかっている場合は、以前のゲームのプレイからハイスコアをロードします。私はこれについてどうやって行くのですか?ここでファイルから読み込んで保存するC++ハイスコア機能

は私のコードです:

void filewrite(){ 

    int n; 

    FILE *FPtr; 
    FPtr = fopen("highscore.txt","w+");//open file 
    if (FPtr == NULL){ 
    fprintf (FPtr, "%d" , highscore); 
    rewind(FPtr); 
    } 
    fscanf(FPtr,"%d",&n);//scan file for integer 


    if (n < score){ 
     if(highscore < score){ 
      if(end==true){ 
       fprintf (FPtr, "%d" , score);//print the score to file if it is higher than the score already there 
       rewind(FPtr);//rewind the file, so pointer starts at begining 
       fscanf(FPtr,"%d",&highscore);//scan file for int 
      } 
     } 
    } 

    fclose(FPtr);//close pointer to file 

} 

のfopenはすでにファイルにあったものを上書きするようだと、あなたが取るべき空白

+2

これは私にとってCによく似ています。また、何が問題なのですか? – Thomas

+0

if(FPtr == NULL)からif(FPtr!= NULL)に条件を変更する可能性があります。さて、実際の問題と疑問は何ですか? – mloskot

答えて

0

それを残し手順は次のとおりです。

  • 試してみて、オープン読み込み用のファイル
  • 書き込みに失敗した場合は0を書き込み、読み取りのために開く。
  • ファイルの値を読み取り、必要に応じてテストします。
+1

または: *ファイルを読み取ろうとしてください。それが存在しない場合は、0を含むふりをしてください。 *読み込んだ値を新しいスコアと比較してください。 *新しいスコアが高い場合は、ファイルに書き込みます。 (誰かが0点を獲得した場合、そのファイルは作成されませんが、結果は同じです) – Thomas

+0

乾杯、これは長すぎるので、単純なことは考えられません。感謝します :) –

関連する問題