【发布时间】:2022-01-30 02:25:04
【问题描述】:
我正在编写一个简单的骰子游戏,两个玩家互相对战。获胜者是掷骰子时获得最大数字的人。但是,当我按 Enter 为第一个玩家生成一个随机数时,我只会得到新的空行。代码如下:
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
int main()
{
srand(time(0));
int p1 = (rand() % 6) + 1;
cout << "Player 1: Press enter to roll your dice" << endl;
cin >> p1;
int p2 = (rand() % 6) + 1;
cout<<"Player 2: Press enter to roll your dice" << endl;
cin >> p2;
if(p1 == p2)
{
cout<<"You tied! \n";
}
else if(p1 > p2)
{
cout<<"You won! \n";
}
else
{
cout<<"You lost! \n";
}
}
【问题讨论】:
-
您意识到您正在用控制台中的每个用户条目覆盖您的“随机”数字,对吧?你认为
cin >> p1对p1的前任住户从前两行有什么影响?而且由于格式化整数提取将过滤空白,因此您继续输入的换行符将被忽略,直到流满足请求(并覆盖 p1)或尝试出错。 -
cin>>p用用户在终端中输入的内容覆盖 p 的值。 -
对不起,先生,如果我没有明白您的意思,但我的程序的目标是,一旦我为每个玩家单击输入,将为两个玩家中的每一个生成一个新的随机数。
-
p1 = rand或cin >> p1,不能同时使用。与p2相同。 -
非常感谢!感谢大家的帮助!