我正在制作一个游戏,我想从.txt中读取怪物的属性。当我读取文件并将值放入变量时,这些变量获取垃圾数据而不是.txt数据。这很奇怪,因为它只发生在我的主项目中。我创建了一个具有相同类的测试项目,并且在字面上对代码进行了复制,并且它完美地运行。
这是我的文件阅读方法:
void Game::readMonsters() {
string monsterName, monsterFile = "";
int life, def, id = NULL;
ifstream monsters("assets/monsters.txt");
if (monsters) {
monsters >> nMonsterTypes; // this variable exists in Game.h
type = new MonsterType[nMonsterTypes](); // this object exists in Game.h
for (int i = 0; i < nMonsterTypes; i++) {
// all those variables are being set as memory garbage:
monsters >> id;
type[i].setID(id);
monsters >> life;
type[i].setHP(life);
monsters >> def;
type[i].setDefense(def);
monsters >> monsterFile;
type[i].setFile(monsterFile);
monsters >> monsterName;
type[i].setName(monsterName);
}
}
monsters.close();
}
我感谢任何帮助!
答案 0 :(得分:0)
在Visual Studio中使用断点我注意到错误不在读取中,而是在&#34;类型&#34;的get方法中。阵列。当我应该在0和nMonsterTypes - 1(在数组中选择一个随机位置)时,我在0和nMonsterTypes之间做了一个rand。在这里得到了很好的建议,谢谢大家!