2008-08-21 26 views
15

最近C#を学び、Yhtzeeクローンを書きました。私の次のステップ(ゲームロジックが適切に機能し、正しく機能するようになりました)は、すべてのゲームで統計を保持する方法を統合することです。C#アプリケーションのデータを保存する

私の質問はこれですが、この情報をどのように保存すればよいですか?私の最初の考えはデータベースを使用することであり、私はそれが私が得る答えだと感じています...もしそうなら、C#アプリケーションからデータベースを作成しアクセスするための良いリソースを教えてください。 XMLファイルに保存


は、実際には私に多くの意味がありますが、私は、私は引き裂か取得したいことが示唆された場合、私は思いました;)。私はWebアプリケーションを構築するのに慣れていますが、そのためにはテキストファイルは一般的には嫌われます。

XMLファイルを使って、簡単に操作できるクラスを教えてください。

答えて

16

ここに1つのアイデアがあります:Xmlシリアル化を使用してください。 GameStatsのデータ構造を設計し、必要に応じてXml属性を使用してスキーマに影響を与えます(オプション)。私はこの方法を小さなデータセットに使うのが好きです。なぜなら、すばやく簡単なのは、データ構造を設計し操作するだけだからです。


using (FileStream fs = new FileStream(....)) 
{ 
    // Read in stats 
    XmlSerializer xs = new XmlSerializer(typeof(GameStats)); 
    GameStats stats = (GameStats)xs.Deserialize(fs); 

    // Manipulate stats here ... 

    // Write out game stats 
    XmlSerializer xs = new XmlSerializer(typeof(GameStats)); 
    xs.Serialize(fs, stats); 

    fs.Close(); 
} 
7

データベースが過度に使用されている可能性があります。スコアをファイルに保存することを考えたことがありますか?

データベースを使用する場合は、ファイルと同じように配布できるSQLiteと考えるとよいでしょう。オープンソースの.NETプロバイダ - System.Data.SQLite - が必要です。

.NETでのデータベースへのアクセスと読み込みは非常に簡単です。サンプルコードについてはthis questionをご覧ください。

13

データベースはおそらく、このようなことのために不当なものになるでしょう - あなたの情報をXML文書(またはデータがたくさんある場合はXML文書のシリーズ)に保存することから始めます。その素晴らしいXCopyデプロイメントを手に入れ、LINQを使用することができます。後で実用的なリレーショナルクエリロジックが必要な場合は、データベースへのスムーズな移行になります。

3

データベースが必要なものであるかどうかはわかりません。そのようなシンプルなゲームのための統計情報を保存するには、それは残忍かもしれません。データベースは良いです。すべての状況で自動的に使用するべきではありません(私はこれがオンラインゲームではなくクライアントアプリケーションであると仮定しています)。

個人的には、ユーザーのコンピュータ上にのみ存在するゲームでは、ファイルに統計情報を格納するだけです(XMLまたはバイナリ - 人間が読めるようにするかどうかによって異なります)。

4

SQL ExpressからのMSは、SQL Serverデータベースの優れた軽量版です。あなたはDBルートに行く場合は、それを試すことができます。

また、あなたは、単にアプリケーション内のデータセットを作成し、XMLにそれらをシリアル化、またはあなたがSystem::Xml名前空間を使用したりすることができますいずれか、.NET 3.5 SP1

1

に同梱されて、新たに鋳造されEntity Frameworkのようなものを使用することができます可能性がありSystem::Data名前空間。最初のものは生のXMLを提供し、後者はXMLへの便利なラッパーを提供します。

1

データベースを使用することをお勧めします。LINQまたはORMツールを使用してデータベースとやりとりすることをお勧めします。 LINQを学ぶために、Scott Guthrieの投稿を見てみましょう。私はそれらのうちの9つが一緒にあると思う。私は以下のパート1をリンクしました。 ORMツールでnhibernateと言いたい場合は、nHibernateの夏のスクリーンキャストをチェックアウトすることをお勧めします。彼らはnhibernateのための本当に良い学習リソースです。

私はXMLの使用に同意しません。多くのデータに関する統計情報を報告することで、リレーショナルデータベースを使用して勝つことはできません。 XMLは軽量ですが、軽量リレーショナルデータベースの選択肢もたくさんあります。 (すなわちSQL Server CompactSQLite、等...)

+0

なぜあなたがダウンリストに投票したのか分かりません。この場合、私は自分でデータベースに行ってはいけませんが(あなたが説明した軽量のものであっても)、あなたのポイントは有効で、元のポスターはDBをより使いやすいオプションにするために統計を十分に追加しています試してこれをuncondemn +1) –

2
私は同じように、XMLまたはバイナリファイルにシリアライズし、どちらかの簡単なPOCOSにデータを保存することをお勧めしたい

ブライアンは上記のことをしました。

あなたがデータベースに熱心なら、Sql Server Compact EditionまたはVistaDBをお勧めします。どちらもアプリケーション内でinprocとしてホストされています。

1

この状況では、StatsクラスとXmlSerializerをうまくモデル化した[Serializable]属性は、IMOに行く方法です。

関連する問題