c++ - 需要帮助理解 "rand() % 67 < 10"

标签 c++

我正在尝试练习我的 C++,以便在类里面更好地理解,因为我是初学者,有点落后,我遇到了一个有人在网上发布的僵尸游戏。

无论如何,我理解大部分代码,但是我不理解“if(rand() & 67 < 10)”。

我可以解释“rand() % 10 + 1”,其中代码将生成一个数字,在本例中为僵尸,介于 1 和 10 之间。

考虑到玩家选择了一个高数字,起初我认为僵尸的上限为 67,但我不相信这是它的功能,但同样,我不完全确定......

这是我正在查看的代码示例:

enter image description here

我确信它很简单,但我仍然对其目的感到困惑。即使在尝试了解它的功能后我也运行了游戏

为了以防万一,这里是完整的代码:

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

using namespace std;

int createZombie() { // createZombie function OPEN

    if(rand() % 67 < 10)

            return 11;

    else
            return rand() % 10 + 1;

} // createZombie fuction CLOSED


// #################### MAIN FUNCTION ############################


int main() { // main function OPEN


    srand(time(NULL));

    char enter;

    // game stats

    int playerAlive = true;
    int playerSkill = 9;
    int playerScore = 1;
    string playerName = "";
    int zombieCount = 0;
    int zombiesKILLed = 0;

    // title


    cout << "Welcome to Zombie War." << endl << "Press [ENTER] to start ";
    cin.get();


    // player name

    cout << "Please enter your name: ";
    cin >> playerName;

    // ask how many zombies

    cout << "How many zombies do you wish to fight? ";
    cin >> zombieCount;


cout <<"Get ready to fight for you life, " << playerName << "!" << endl;

    // main game loop


    while(playerAlive && zombiesKILLed < zombieCount) { // while loop OPEN


            // create a random zombie

            int zombieSkill = createZombie();

            // battle sequence 

            if(zombieSkill > 10) { // if statment OPEN


                    cout << endl << "Here comes a huge zombie! " << endl;

            } // if statement CLOSED

            else { // else statement OPEN

                    cout << endl << "Here comes Zombie " << zombiesKILLed + 1 << endl;

            } // else statement CLOSED

            cout << "Fighting... " << endl;
            sleep(2);

            // zombies killed the player

            if(playerSkill < zombieSkill) { // if statement OPEN


                    playerAlive = false;

                    cout << "You have died." << endl;

            } // if statement CLOSED

            else { // else statment OPEN

                    // PLAYER KILLED THE ZOMBIE

                    if(playerSkill - zombieSkill > 7) { // if statement OPEN

                            cout << "You wasted the Zombie! " << endl;

                            playerScore = playerScore * 2;

 } // if statment CLOSED

                    else if (playerSkill - zombieSkill > 5) { // else if statement OPEN

                            cout << "You decapitated the Zombie!" << endl;

                            playerScore = playerScore * 2;

                    } // else if statement CLOSED

                    else if (playerSkill - zombieSkill > 0) { // else 
if statement OPEN

                            cout << "You Killed the Zombie!" << endl;

                            playerScore = playerScore * 2;

                    } // else if statment CLOSED

                    else { // else statment OPEN


                            cout << "You killed the zombie, but suffered injuries." << endl;


                    } // else statment CLOSED

                    zombiesKILLed++;


            } // else statment CLOSE


            cout << endl;
            sleep(1);

    } // while loop CLOSED



    if(zombiesKILLed == zombieCount) { // if statement OPEN

            // victory

            cout <<"Your have survived the onslaught!" << endl;

    } // if statement CLOSED

    else { // else statement OPEN

            // LOST

            cout << "You did not survive the zombie war" << endl;

    } // else statement CLOSED

    cout << "Zombies killed: " << zombiesKILLed << endl;
    cout << "Final score: " << playerScore << endl << endl;


} // main function CLOSED

最佳答案

将命令分成两部分以便于理解:

第一部分-

rand() % 67 
= generate any random number from 0-66 
= remainder of division of any number by 67
= N (say)

第二部分

if( rand() % 67 < 10)
= if( N < 10)

关于c++ - 需要帮助理解 "rand() % 67 < 10",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54975956/

相关文章:

c++ - 尝试使用 boost.multiprecision 编译项目时出现 C2143/C2518

c++ - 使用 bool 值设置位集的最佳方法

c++ - SWIG:仅使用 header 和共享库为 Perl 包装 C++,无法定位可加载对象错误

c++ - main 的递归

c# - 使用 C++/CLI 桥连接 C++ 和 C# 代码

c++ - SDL 卡住但继续运行

c++ - 带指针的可调整大小数组

c++ - 如何计算 double 的平均值,使总误差最小?

c++ - OpenCV - 使用 calcHist 混淆

c++ - 如何序列化共享/弱指针?