因此,当用户键入"Load"时,我正在尝试从文本文件中加载一些数据.我有点工作,但似乎有一个错误.
假设你买了一把斧头,这是70个硬币.你从100个硬币开始,所以剩下30个硬币.您决定保存并退出游戏.你回来加载你保存的游戏,你有49个硬币和48个健康点.
当您使用所有默认值直接保存时,它也会执行完全相同的操作.我不知道从哪里获得49和48的价值.
const string f = "savedgame.txt";
using (StreamReader r = new StreamReader(f))
{
string line;
while ((line = r.ReadLine()) != null)
{
player.gold = line[0];
player.health = line[1];
Console.WriteLine("Your game has been loaded.");
menu.start(menu, shop, player, fishing, woodcut, mine, monster, quests, save, load);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我刚刚保存的文本文件.
100
20
1
0
0
5
Run Code Online (Sandbox Code Playgroud)
我试过谷歌的例子,但他们做了同样的事情.所以我做了一些研究,自己做了一个......做了同样的事情.
我不知道我能告诉你们多少,但如果需要,我可以展示更多.
难道我做错了什么?
您目前的方法存在两个问题 -
首先,您的逻辑目前正在处理第一行的字符 -
第一次通过你的循环,行是"100",line[0]也是1.这是一个char的'1',而不是值1,因此player.gold = line[0]转化为设置player.gold于该字符的数值equivelent"1",它是49.
其次,你开始循环并逐行阅读,然后做你的工作,而不是一次读取所有的行.
您可以通过一次读取所有行并逐行工作来解决这些问题.然后你还需要将整行转换为数字,而不是读取一个字符:
const string f = "savedgame.txt";
var lines = File.ReadAllLines(f);
player.gold = Convert.ToInt32(lines[0]);
player.health = Convert.ToInt32(lines[1]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3604 次 |
| 最近记录: |