0

私は単純なゲームを持っていて、ハイスコアを名前で保存してから別のフォームに表示したいのですが、ポイントの降順で表示します。私はtxtファイルでそれをしたいのですが、保存はOKです.Adam、200、John、100などのように保存するだけです.それらを表示することも問題ではありませんが、それらをソートする方法は? では、スコアと名前をどのように関連付けることができますか?

4

5 に答える 5

3

それらをより明確に構造化された方法で保存する必要があります。したがって、たとえば、1 行に 1 つのエントリがあるテキスト ファイルを引き続き使用できます。

Adam,200
John,200

次に、ファイルからそれらを読み取り、各行をHighScoreEntryオブジェクトに解析して (HighScoreEntryもちろん、クラスを作成する必要があります)、リストに追加します。または、LINQ を使用して変換を行います。

var highScoreEntries = File.ReadLines("highscores.txt")
                           .Select(line => HighScoreEntry.FromLine(line))
                           .ToList();

次に、次を使用できます。

var orderedScores = highScoreEntries.OrderByDescending(entry => entry.Score);

または、XML のようなものを使用してスコアを保存することもできます。これにより、より多くの構造が提供され、一部の解析が少し簡単になります。

これらすべてが難しすぎると思われる場合は、問題の原因となっている正確な手順を特定してください。

于 2012-11-07T13:54:33.313 に答える
0
var scores = File.ReadLines("scores.txt")
    .Select(line => {
            string[] parts = line.Split(',');
            return new { Name = parts[0], Score = int.Parse(parts[1]) };
        })
    .OrderByDescending(highScore => highScore.Score);
于 2012-11-07T14:10:54.343 に答える
0

を使用してみることができます

 List<Dictionary> myList  

これは基本的にキーと値のペアを保持します。かなり簡単に並べ替えることができるはずです。

于 2012-11-07T14:17:07.690 に答える
0

次のようなオブジェクトを作成できます。

public class Player  
{  
    string name;  
    long score; // i assume no decimal points  
    // getters/setters
} 

そして、次のように並べ替えます。

List<Player> players = new List<Player>();  
players.Sort(delegate(Player player1, Player player2) { return player1.score.CompareTo(player2.score); });
于 2012-11-07T13:56:07.320 に答える
0

プロジェクトで静的クラスを使用する必要があります。コンセプトは、クラスを作成し、内部で配列を宣言することです。サンプルをお見せしたいと思います:

class score

{
    public static int max = 0;
    public static int john = 0;


}

クラスに提供することで、プロジェクトのどこからでも値を変更できます。ユーザー名を含む配列を作成できます。

新しいフォームを作成し、ラベルとボタンを描画します。

于 2012-11-07T13:57:00.370 に答える