2016-06-17 6 views
0

ロードして保存できるゲームを作成しています。私はユーザーがどれくらいの長さの演奏をしたかについての詳細を含めたい彼らがゲームに費やした時間を判断するために、次のようなものがあります。合計時間を保存して読み込むにはどうすればよいですか?私はロードして保存するためにその値をProperties.Settingsに入れたいと思っていますが、私はそれをどのように実行すべきかについて迷っています。時間値の読み込み、更新、および保存?

private void Form1_Load(object sender, EventArgs e) 
{ 
    //Load previous time 
    stopWatch.Start(); 
} 

private void Form1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter && pbPlayer.Bounds.IntersectsWith(pnlSave.Bounds)) 
     { 
     string timePlayed; 
     stopWatch.Stop(); 
     TimeSpam timeSpan = stopWatch.Elapsed; //+ Their previous time 
     timePlayed = string.Format("{0:D2}:{1:D2}:{2:D2}", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds); 
     MessageBox.Show("You've played for" + timePlayed + ". Game saved!" 
     } 
     //Save their total time 
} 
+1

[C#フォームのアプリ設定を保存して復元する]の可能な複製(http://stackoverflow.com/questions/10359029/saving-and-restoring-app-settings-in-c-sharp-forms) –

+0

私は知っています私は 'Properties.Settings'を使用していますが、私はそれにどのようにアプローチすべきかについての助けが必要です。 –

+2

あなたはどのような問題を抱えていますか?終了時にデータを保存し、起動時にデータをロードします。文字列の値ではなく、Elapsedを保存​​する必要があります。この値をロードして次回の実行時に追加することができます。 –

答えて

0

私はそれを理解しました。これは私の答えを解決しました。

private void Form1_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter && pbPlayer.Bounds.IntersectsWith(pnlSave.Bounds)) 
      { 
      string timePlayed; 
      stopWatch.Stop(); 
      TimeSpam totalTime = stopWatch.Elapsed + Properties.Settings.savedPlayTime; 
      timePlayed = string.Format("{0:D2}:{1:D2}:{2:D2}", Properties.Settings.Default.savedPlayTime.Hours, Properties.Settings.Default.savedPlayTime.Minutes, Properties.Settings.Default.savedPlayTime.Seconds); 
      if (MessageBox.Show("Are you sure you wish to overwrite your last save of " + timePlayed + "?")== DialogResult.OK) 
       { 
       Properties.Settings.Default.savedPlayTime = totalTime; 
       Properties.Settings.Default.Save(); 
       stopWatch.Reset(); 
       MessageBox.Show("Game saved!"); 
       } 
      stopWatch.Start(); 
      } 
    } 
0

いい仕事です。私は間違っている可能性がありますが、私は彼らが保存した合計時間を表示することを意図していると思いました。 timePlayedは代わりにtotalTimeの文字列形式でなければなりませんか?

timePlayed = string.Format( "{0:D2}:{1:D2}:{2:D2}"、totalTime.Hours、totalTime.Minutes、totalTime.Seconds);

+0

本当に申し訳ありませんが、それは私の実際のプロジェクトでは少し異なります。私は最後の保存時にtimePlayedを表示したかったのです。私が想定しているMessageBoxのテキストを変更することができます。 –

関連する問題