c++ - 简单的 C++ 游戏模拟器 - 没有匹配的调用函数

标签 c++ function

我正在编写一个非常简单的游戏模拟器(不使用类)。从 main() 函数,我成功访问了我的一个函数,但另一个函数调用抛出错误:“没有匹配的函数调用 simGame”。 任何想法为什么会这样? 代码:

...


float rollDice() {
    default_random_engine randomGenerator(time(NULL));
    uniform_real_distribution<float> rollDice(0.0f, 1.0f);

    float roll = rollDice(randomGenerator);

    return roll;
}

string simGame(string p1, string p2, int p1Health, int p2Health, int p1Attack, int p2Attack) {
    // Game State
    bool gameOver = false;
    float attack = rollDice();

    int pl1 = 0;
    int pl2 = 1;
    int turn = pl1;

    int defenderHealth = p2Health;
    int attackerAttack = p1Attack;


    while ((p1Health > 0) && (p2Health > 0)) {
        if (attack > 0.3) {
            defenderHealth -= attackerAttack;
        }
        turn = -turn + 1;
        if (turn == 0) {
            defenderHealth = p2Health;
            attackerAttack = p1Attack;
        } else {
            defenderHealth = p1Health;
            attackerAttack = p2Attack;
        }
    }

    turn = -turn + 1;
    if (turn == 0) {
        return p1;
    } else {
        return p2;
    }
    return 0;
}

int setHealth(int botNum, int botHealth) {
    int totalHealth = botNum * botHealth;
    return totalHealth;
}

int main() {

    // bot types
    int drWhosAndCompanions;
    int ricksAndMortys;


    // Attributes
    int rmHealth = 10;
    int dcHealth = 15;
    int rmAttack = 15;
    int dcAttack = 10;

    int totalRMHealth;
    int totalDocHealth;

    cout << "How many Ricks and Mortys?" << endl;
    cin >> ricksAndMortys;
    cout << "How many Dr Whos and Companions?" << endl;
    cin >> drWhosAndCompanions;

    // Starting Vals
    totalRMHealth = setHealth(ricksAndMortys, rmHealth);
    totalDocHealth = setHealth(drWhosAndCompanions, dcHealth);

    cout << "You have chosen " << ricksAndMortys << " Ricks and Mortys and " << drWhosAndCompanions << " Dr. Whos and Companions.\n";
    string res;
    res = simGame(ricksAndMortys, drWhosAndCompanions, rmHealth, dcHealth, rmAttack, dcAttack);

    return 0;
}

最佳答案

很简单

你的函数定义有这个原型(prototype)

simGame(string, string, int, int, int, int); 

但是你通过了

simGame(ricksAndMortys, drWhosAndCompanions, rmHealth, dcHealth, rmAttack, dcAttack); 

其中ricksAndMortys和deWhosAndCompanions是int类型

所以把他们的数据类型改成字符串 在主函数中

// bot types 
int drWhosAndCompanions;
int ricksAndMortys;

应该是

// bot types 
string drWhosAndCompanions;
string ricksAndMortys;

关于c++ - 简单的 C++ 游戏模拟器 - 没有匹配的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37904229/

相关文章:

c++ - C++ 中的 vector 形状光栅化

c++ - C++ 中的正则表达式

c++ - 为什么在 C++ 中 'virtual' 和 '=0' 都需要描述一个方法是抽象的?

r - 将函数应用于矩阵或数据框的每一行

c++ - 将不同类型的参数传递给函数模板

c++ - 将char数组存储在一个类中然后返回它

c++ - 使用 ubuntu 在不同的显示器上共享 opengl 上下文

javascript - 构建 javascript 函数以接受默认值

javascript - 带函数的 JavaScript 闭包是如何工作的?

javascript - 显示函数的参数