4

我对 c++ 很陌生,我已经编写了这段代码。哪个是按这个顺序设计的.. 1. 询问名字然后欢迎这个人 2. 询问他们选择的武器 3. 选择一个随机数字并损坏一只熊猫

我已经完成了所有这三个步骤。然后我决定也许我可以通过在我的 rand() 函数括号中使用变量来改变我的随机数的范围。那没有按计划工作,所以我尝试恢复。提前感谢收到的任何帮助。我不知道如何通过互联网搜索这个,所以我来到这里.. 希望有人能发现我的问题。我正在使用 netbeans IDE。

我的问题:它首先询问我的名字,然后我输入我的名字并欢迎我。但随后它完成了代码。甚至在尝试其余代码之前。我的想法是我显然错过了一些我应该改回来的东西。

Welcome to panda hunter! Please enter your name: Darryl
Welcome!, Darryl!

RUN SUCCESSFUL (total time: 3s)

但是我已经看过很多次了,并没有发现任何错误。另外我的想法是这条线有问题,因为这是它未能做到并进一步发展的地方:

    cout << "Pick your weapon of choice! Then press enter to attack: ";

. 这是整个文件的内容:

#include <iostream>
#include <cstdlib>
#include <stdio.h>      /* printf, scanf, puts, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>

using namespace std;

string getName(){
    string name;
    cin >> name;
    return name;
}
string weaponChoice(){
    string weapon;
    cin >> weapon;
    return weapon;
}
int rand(){
    int damagePanda = rand() % 20 + 1;
    return damagePanda;
}
int main() {

    srand(time(0));
    int pandaHealth = 100;
    int userHealth = 100;   


    cout << ("Welcome to panda hunter! Please enter your name: ");
    cout << "Welcome!, " << getName() << "!" << endl;
    cout << "Pick your weapon of choice! Then press enter to attack: ";
    cout << "You surprise the panda with your " << weaponChoice() << ", dealing " <<   rand() << " damage!";
    pandaHealth = pandaHealth - rand();
    cout << "Panda has " << pandaHealth << " health remaining";

    char f;
    cin >> f;
    return 0; 
}
4

1 回答 1

10
int rand(){
    int damagePanda = rand() % 20 + 1;
    return damagePanda;
}

递归调用。你可能在这里吹了你的筹码。

编译器应该在这里警告你!不知道为什么没有。

改成

int myrand(){
    int damagePanda = rand() % 20 + 1;
    return damagePanda;
}

也改变

cout << "You surprise the panda with your " 
<< weaponChoice() << ", dealing " <<   rand() << " damage!";

cout << "You surprise the panda with your "  
<< weaponChoice() << ", dealing " <<   myrand() << " damage!";

这也可能需要改变

pandaHealth = pandaHealth - rand();

最后一个更改可能取决于您的应用程序逻辑 - 我没有尝试理解它。

于 2013-05-16T15:12:32.890 回答