随机生成的回复? C ++

时间:2015-04-11 01:03:31

标签: c++

我用C ++制作基于文本的游戏。我希望用户能够从3个选项中选择,然后再选择3个选项等等。我将如何进行此操作。我希望制作一个随机生成事件的游戏,并且可以一次又一次地完成。抱歉模糊不清。

3 个答案:

答案 0 :(得分:1)

可能是一个循环(while(endGame == false){...}),您要求用户提供该选项(例如std::cin >> option)?

如果您想生成随机数(根据它的值,您可以决定是否应该发生一些随机事件),请使用the rand() function

#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */
...
/* initialize random seed: */
srand (time(NULL));

/* generate secret number between 1 and 10: */
int secretNumber = rand() % 10 + 1;

if(secretNumber > 7){
   ... //some special event
}

反正。我强烈建议你先先获得一些关于c ++和编程的基本知识。检查一些分步教程或书籍。第一步通常是最难的;)

答案 1 :(得分:0)

如果您希望您的回复采用文本形式(我假设您这样做),那么它们的随机性可能会受到限制(以保持它们的连贯性)。

我会通过设置一个有限的响应列表来做,然后生成一个随机#来选择要使用的响应。

#include <iostream>
#include <fstream>
#include <stdlib.h>     
#include <time.h>       



using namespace std;

string generateRandomResponse() {
    srand (time(NULL));
    const int MAXSIZE = 1000; int i = rand() % 2 + 1;
string randomResponse[MAXSIZE];
randomResponse[0] = "This can be one response\n";
randomResponse[1] = "So can this\n";
randomResponse[2] = "So on and so forth\n";

return randomResponse[i];
}

int main() {
int userResponse = 0;
cout << "Hey you! What is your favorite number? ('1', '2', '3')" << endl;
cin >> userResponse;
cout << generateRandomResponse();


    return 0;
}

答案 2 :(得分:0)

现代C ++解决方案。

#include <string>
#include <vector>
#include <random>
#include <iostream>

// List of choices we want to give the user.
std::vector< std::string > options = { 
        {"Option 1"}, 
        {"Option 2"}, 
        {"Option 3"}, 
        {"Option 4"}, 
        {"Option 5"} };

// Prepare random number generator /////////////////////////////////////////
// Seed with a real random value, if available
std::random_device r;
std::default_random_engine e1(r());
// A random value from 0 up to (and including) count of options - 1
std::uniform_int_distribution<int> uniform_dist(0, options.size()-1);

int nextRandomChoice()
{
    return uniform_dist(e1);
}

int main()
{
    std::string input;

    do 
    {
        const auto firstSelection = nextRandomChoice();
        const auto secondSelection = nextRandomChoice();
        const auto thirdSelection = nextRandomChoice();

        std::cout << options[firstSelection] << '\n'
            << options[secondSelection] << '\n'
            << options[thirdSelection] << '\n';

        std::cout << "Press Q to quit or ENTER for next selection:";
        std::getline(std::cin, input);
    } while ( input != "Q" );

    return 0;
}