如何在C ++中随机化输出

问题描述 投票:-1回答:2

我在Mac OS Sierra上使用Eclipse 4.6.3。

所以我有这个代码:

int main() 
{
    int GameState = ROOM1;
    int iRoomCounter[4] = {0,0,0}; // Used to determine if a room has been visited.
    string choice;
    char Name[25];
    cout << "!!!Hello World!!!" << endl;
    cout << "Enter Your Name!" << endl;
    cin >> Name;
    cout << "Thank you " << Name << ". You will not be forgotten." << endl;

    while(GameState != DEATH)
    {
        switch(GameState)
        {
            case ROOM1:
            {
                if (iRoomCounter[0] == 0) 
                {
                    cout << "\n One day, " << Name << " was walking through a field and spotted a little Ejay." << endl;
                    cout << Name << " also spotted a cat. He wanted to pet both, but he could only pet one." << endl;
                    iRoomCounter[0] = 1;
                }
                cout << "\nWhich one will he pet?" << endl;
                cout << "Ejay" << endl;
                cout << "Cat" << endl;
                cout << "-> ";
                cin >> choice;

                if(choice == "Ejay" || choice == "ejay")
                {
                    cout << "He pet Ejay" << endl;
                }
            }
        }
    }
}

我想将某些输出随机化,例如:如果我选择“Ejay”,我希望它能说“他宠物Ejay”或“Ejay逃跑”。或者“Ejay死了。”我不知道该怎么做。有人会如此善意地在我的代码中实现一种方法吗?先感谢您。

谢谢大家!

c++ random
2个回答
-1
投票

这样做的方法是使用随机数生成器。最简单的一个,但不是最好的,是rand()。当然,有更好的随机数生成器,如std::mt19937,但我会保持这个简单。

rand()将返回一个随机整数,你可以使用modulo(%)运算符将其缩小到一个小范围。

switch ( rand() % 3 )
{
    case 0:
        cout << "He pet Ejay" << endl;
        break;
    case 1:
        cout << "Ejay ran away." << endl;
        break;
    case 2:
        cout << "Ejay died." << endl;
        break;
    default:
        break;
}

对于第二个问题,尝试在IDE上找到构建或编译按钮。我不太熟悉Eclipse的界面,但要弄清楚如何编译代码应该不会太难。


0
投票

答案1:int randNum = rand() % 3创建一个随机数0-2,然后您可以使用它来编号以选择数组内的字符串。 EX:

string randString[3] = {"hi","Hello","Sup"};

答案2:您只需编译代码即可创建“应用程序”。从终端编译代码的常用方法是'G ++ filename.cc -o desiredname'

**编辑:如果您正在尝试使用游戏完成GUI,那么使用c ++非常具有挑战性。您可能最好不要研究其他语言或框架。

© www.soinside.com 2019 - 2024. All rights reserved.