【问题标题】:Do-while loop issue: Try to develop a simple gameDo-while 循环问题:尝试开发一个简单的游戏
【发布时间】:2015-01-16 19:11:16
【问题描述】:

嗯,我正在写一个骰子游戏。我尝试在这里搜索骰子游戏,但似乎都没有回答我的问题。无论如何,这不是掷骰子的问题。这是关于 do while 循环的。我对这个网站非常陌生,我刚刚通过Maximum PC Magazine 发现了这一点,所以请多多包涵。我也是编程新手。

这是我的代码:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;
int main(){

    srand(time(NULL));

    int userRoll = rand() % 6 + 1 ;
    int computerRoll = rand() % 6 + 1 ;
    string yesOrNoChoice;
    string commandToThrowDie;


    do{
        cout << "Please enter \"throw\" (lowercase) to roll the die: ";
        cin >> commandToThrowDie;
    } while(commandToThrowDie != "throw");

    do{
        cout << "You rolled: " << userRoll << endl
             << "The Computer rolled: " << computerRoll << endl;

        if (userRoll < computerRoll){
            cout << "You lose. Try again? [Yes/No]: ";
         }
        if (computerRoll < userRoll){
            cout << "You win! Try again? [Yes/No]: ";
        }
        if (computerRoll == userRoll) {
            cout << "It's a draw. Try again? [Yes/No]: ";
        }
        cin >> yesOrNoChoice;
    } while(yesOrNoChoice != "Yes"); 

    system ("pause");
    return 0;
}

问题是,在要求用户在 do-while-loop 结束时输入一个选项后,无论我输入什么,程序都会退出循环,而不是循环回到另一个掷骰子。

结果是这样的:

【问题讨论】:

  • 您的实际问题是什么?你有什么问题?你尝试了什么?
  • 请正确格式化您的代码 - 随机缩进很难阅读。
  • @Tomo 第二个 do-while 循环不起作用。我发现“你滚了:”等等。我不明白为什么它不起作用,它可能是编码的......或者我认为。顺便说一句,我还是编程新手 :)
  • @DylanVillaruel:你有一本关于 C++ 的好书吗?如果没有,请查看此处的列表:stackoverflow.com/questions/388242/…
  • 你不应该搜索“骰子游戏”,这是错误的思考方式:这些词不能描述你的编程问题。还要学习在调试器中逐步运行程序,您会注意到问题所在。

标签: c++ loops while-loop do-while dice


【解决方案1】:

我复制了您的代码,它编译并完美运行。完全没有意义,但没有问题。我说这没有意义,因为当输入“是”时,这就是杀死它的原因。我相信你想要的while(yesOrNoChoice == "Yes")。也许将其命名为!= 会让您认为自己的行为有误?此外,您应该使用if, else if, else 语句,而不仅仅是if

【讨论】:

  • 当您这样考虑时可能会变得更清楚:您希望循环继续只要用户输入“是”。因此,您需要重复查看while(yesOrNoChoice == "Yes"),即只要用户输入“是”。您可能将do {...} while (...)loop {...} until (...) 之类的东西混淆了,这在C 或C++ 中不存在:stackoverflow.com/questions/1077216/…
  • 这解决了程序被杀死的部分。但是每当我尝试输入“是”时,它仍然会输出相同的结果。例如。;用户死:3,计算机死 5,当我再次尝试时,它仍然输出相同的数字。它不会再次被 srand() 播种。但是,谢谢你的帮助。非常有用:)
  • 是的,我知道它会,但你说过问题与游戏无关,所以我没有提及。每次循环执行时,您都需要生成 rand()
  • 哦,好的,我现在明白了。这完全解决了问题。谢谢!我现在让它运行稳定了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
相关资源
最近更新 更多