这是一个简单的文字游戏的开始。在游戏中,你应该四处寻找地下城并收集文物。我使用srand(time(0))
做一些事情,比如找到要进入的阶段,攻击以及找到的项目,我在编程中已经走得太远,但我已经遇到了问题。我的rand()返回所有结果。当我运行游戏时(这不是完整的代码,顺便说一句),它会返回“你进入了一个地牢!”,“哦,不,敌人已经到了!”,并且“你找到了一件神器!”
void mainScreen()
{
srand(time(0));
cout << "Health: \n";
cout << health;
cout << endl;
_sleep(500);
cout << "Inventory: \n";
cout << inventory;
cout << endl;
_sleep(500);
cout << "Gold: \n";
cout << gold;
cout << endl;
_sleep(500);
cout << "Artifacts: \n";
cout << artifacts;
cout << endl;
_sleep(500);
cout << "Rolling the dice of fate... \n";
int diceRoll = 1 + (rand() % 10);
if (diceRoll = 1, 2, 3, 4, 5, 6) {
cout << "You entered a dungeon! \n";
}
if (diceRoll = 7, 8) {
cout << "Oh No! An enemy has arrived! \n";
}
if (diceRoll = 9, 10) {
cout << "You found an artifact! \n";
}
}
答案 0 :(得分:5)
您的if
陈述不符合您的预期。
首先,当您应该使用=
比较运算符时,您正在使用==
赋值运算符。
其次,您正在使用,
运算符,该运算符计算左右表达式,然后返回正确表达式的结果。
所以,这段代码:
if (diceRoll = 1, 2, 3, 4, 5, 6)
{
...
}
if (diceRoll = 7, 8)
{
...
}
if (diceRoll = 9, 10)
{
...
}
实际上是这样做的,这不是你想要的:
diceRoll = 1;
if (6)
{
...
}
diceRoll = 7;
if (8)
{
...
}
diceRoll = 9;
if (10)
{
...
}
你需要这样做:
if ((diceRoll == 1) ||
(diceRoll == 2) ||
(diceRoll == 3) ||
(diceRoll == 4) ||
(diceRoll == 5) ||
(diceRoll == 6))
{
cout << "You entered a dungeon! \n";
}
else if ((diceRoll == 7) ||
(diceRoll == 8))
{
cout << "Oh No! An enemy has arrived! \n";
}
else
{
cout << "You found an artifact! \n";
}
使用范围比较可以简化:
if ((diceRoll >= 1) && (diceRoll <= 6))
{
cout << "You entered a dungeon! \n";
}
else if ((diceRoll >= 7) && (diceRoll <= 8))
{
cout << "Oh No! An enemy has arrived! \n";
}
else
{
cout << "You found an artifact! \n";
}
或替换为单个switch
声明:
switch (diceRoll)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
{
cout << "You entered a dungeon! \n";
break;
}
case 7:
case 8:
{
cout << "Oh No! An enemy has arrived! \n";
break;
}
case 9:
case 10:
{
cout << "You found an artifact! \n";
break;
}
}
另外,在旁注中,每次调用srand()
时都不应该调用mainScreen()
(我假设在程序的生命周期内可以多次调用它)。 srand()
应该只调用一次,因此您应该在调用main()
之前在mainScreen()
中调用它。
答案 1 :(得分:0)
此:
if (diceRoll = 1, 2, 3, 4, 5, 6) {
cout << "You entered a dungeon! \n";
}
if (diceRoll = 7, 8) {
cout << "Oh No! An enemy has arrived! \n";
}
if (diceRoll = 9, 10) {
cout << "You found an artifact! \n";
}
完全错误,你需要单独检查每个元素,如下所示:
if (diceRoll == 1 || diceRoll ==2 || diceRoll == 3 || diceRoll == 4 diceRoll == 5 || diceRoll == 6) {
cout << "You entered a dungeon! \n";
}
if (diceRoll == 7|| diceRoll == 8) {
cout << "Oh No! An enemy has arrived! \n";
}
if (diceRoll == 9 ||diceRoll == 10) {
cout << "You found an artifact! \n";
}
为了进一步简化第一个分支,您可以这样做:
if (diceRoll >= 1 || diceRoll <= 6) {
cout << "You entered a dungeon! \n";
}