现在,我要为我的比赛制作记分牌。 程序将显示文本文件中的数据。
在程序中,我有玩家姓名和分数的字符串数组。
这是我的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
我该怎样做才能显示文本文件中的所有数据,而不仅仅是最后一个???
答案 0 :(得分:1)
你几乎是对的,但对于你从文件中读取的每一行,你都要为高分数组的每个成员分配相同的数据(在for
循环中)。您需要确定您所在的行(只有一个计数器在文件读取循环的每个循环中递增)并且只更新相应的PlayerName
和Score
。