XNA将数据从文本文件显示到数组

时间:2011-11-14 01:05:00

标签: arrays xna streamreader text-files

现在,我要为我的比赛制作记分牌。 程序将显示文本文件中的数据。

在程序中,我有玩家姓名和分数的字符串数组。

这是我的streamreader代码看起来像:

 public void ReadHighScores()
    {
        try
        {
            using (StreamReader sr = new StreamReader("highscore.txt"))
            {

                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    string[] parts = line.Split(',');
                    for (int i = 0; i < 5; i++)
                    {
                        highScores.PlayerName[i] = parts[0];
                        highScores.Score[i] = parts[1];
                    }
                }
            }


        }
        catch (FileNotFoundException ex)
        {
            //IntializeHighScores();
            //WriteHighScores();
        }
        catch (Exception ex)
        {
            // Handle unexpected exception
        }
        finally
        {
            // Close the file
        }
    }

这就是我绘制记分牌的方法:

        for (int i = 0; i < 5; i++)
        {
            spriteBatch.DrawString(spriteFont, i + 1 + ". " + highScores.PlayerName[i].ToString()
           + "......" + highScores.Score[i].ToString(), new Vector2(350, 150 + 50 * (i)), Color.Red);
         }

当我运行游戏时。成功从文本文件中读取数据。但它只显示文本文件中的最后一个数据。

我的文字文件包含:

 Alpha, 3500
 Beta, 3600
 Gamma, 2200
 Delta, 3400
 Epsilon, 3600

,程序只显示循环中的最后一个数据,如:

Epsilon 3600
Epsilon 3600
Epsilon 3600
Epsilon 3600
Epsilon 3600

我该怎样做才能显示文本文件中的所有数据,而不仅仅是最后一个???

1 个答案:

答案 0 :(得分:1)

你几乎是对的,但对于你从文件中读取的每一行,你都要为高分数组的每个成员分配相同的数据(在for循环中)。您需要确定您所在的行(只有一个计数器在文件读取循环的每个循环中递增)并且只更新相应的PlayerNameScore