我正在做作业,最近几天一直被困,我确定自己已经创建了一个问题。本来应该制作三种不同的骰子游戏之一,所以我选择了一种叫做LCR的游戏。我已经完成了程序的大部分逻辑,但是在游戏开始时(用户定义的数字)我正在创建的对象数组存在问题。由于某种原因,当我为每个循环使用初始化数组中的所有对象时,我可以设置并获取对象的所有不同部分,但是一旦退出循环,所有对象信息都会丢失。不幸的是,由于另一个要求,我不得不在此程序中使用CLI。任何有关此问题的帮助将不胜感激。
这是给我问题的代码。
System::Array^ players = System::Array::CreateInstance(Player::typeid, numberOfPlayers);
for each(Player^ p in players){
p = gcnew Player;
tempNameAsString = tempNameAsNumber.ToString();
p->setName(tempNameAsString);
}
con.writeStringToConsole("rolling dice \n");
for each(Player^ p in players){
p->setDice(rollAllDice(3, 6, 1));
//con.writeStringToConsole("player : ");
//con.writeStringToConsole(p->getName());
con.writeStringToConsole("rolled : ");
con.writeVectorToConsole(translateDice(p->getDice()), " , ");
con.writeStringToConsole("\n");
}
for each(Player^ players in players){
con.writeVectorToConsole((players)->getDice(), " ,");
con.writeStringToConsole("\n");
}
如果我不在行中注释
//con.writeStringToConsole(p->getName());
我得到了错误
在IT 312 LCR Dice Game.exe中发生了类型为'System.NullReferenceException'的未处理异常
这是我在一行中注释掉的输出
How many players are there?: 10
creating players
rolling dice
rolled : * , * , * ,
rolled : C , * , * ,
rolled : * , C , R ,
rolled : * , * , C ,
rolled : C , * , * ,
rolled : * , * , * ,
rolled : L , L , * ,
rolled : * , R , * ,
rolled : * , * , L ,
rolled : C , * , * ,
由于某种原因,如果我尝试再次指责玩家对象,我只会得到 最后一个物体掷骰子。
3 ,6 ,4 ,
3 ,6 ,4 ,
3 ,6 ,4 ,
3 ,6 ,4 ,
3 ,6 ,4 ,
3 ,6 ,4 ,
3 ,6 ,4 ,
3 ,6 ,4 ,
3 ,6 ,4 ,
3 ,6 ,4 ,
请让我知道我是否在做蠢事。 感谢您的帮助。