我掷骰子的代码是函数:
void Dice(int &dice1, int &dice2)
{
dice1 = rand() % 6 + 1;
dice2 = rand() % 6 + 1;
}
但是当它在主
时int main()
{
srand(time(NULL));
int dice1;
int dice2;
Dice(dice1, dice2);
cout << "Player 1's Roll: " << dice1 << " and " << dice2 << endl;
cout << "Player 2's Roll: " << dice1 << " and " << dice2 << endl;
}
当我运行该程序时,输出是玩家2的掷骰总是与玩家1相同。
示例:
Player 1's Roll: 1 and 4
Player 2's Roll: 1 and 4
如何修复此问题(无需另外执行此操作),以便玩家2可能有不同的骰子滚动?
答案 0 :(得分:3)
你的问题很简单。您只需拨打Dice()
一次,而不是两次。如果你想让第二个玩家掷骰子 - 你需要再次打电话给Dice()
。如果你不这样做 - 你会得到相同的结果。如果两个cout
之间没有进行任何更改,则没有理由不同。
我刚刚添加了Dice()
的第二个电话,请查看此内容。
int main()
{
srand(time(NULL));
int dice1;
int dice2;
Dice(dice1, dice2); //you're rolling first time
cout << "Player 1's Roll: " << dice1 << " and " << dice2 << endl; //printing result
Dice(dice1, dice2); //Added by Sylogista: you're rolling second time
cout << "Player 2's Roll: " << dice1 << " and " << dice2 << endl; //printing result
}
答案 1 :(得分:1)
一种方法是在
的行上写一些东西struct Player
{
int roll1;
int roll2;
void roll()
{
Dice(roll1, roll2);
}
};
在通话现场:
int main()
{
srand(time(NULL));
Player one, two;
one.roll();
two.roll();
cout << "Player 1's Roll: " << one.roll1 << " and " << one.roll2 << endl;
cout << "Player 2's Roll: " << two.roll1 << " and " << two.roll2 << endl;
}
然后你可以在闲暇时增强玩家类,例如构建一个合适的构造函数,封装成员变量,添加其他成员,例如播放器的名称&amp; c。