需要帮助来了解“ rand()%67 <10”

时间:2019-03-04 02:43:25

标签: 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

1 个答案:

答案 0 :(得分:1)

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

第一部分-

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)