2016-06-19 10 views
1

私は非常に単純なゲームシミュレータを作成しています(クラスは使用しません)。 main()関数から、私は正常に自分の関数の1つにアクセスしますが、別の関数呼び出しは 'simGameへの呼び出しに一致する関数がありません'というエラーをスローします。 これはなぜ起こっているのですか? コード:シンプルなC++ゲームシミュレータ - コールに対応する機能がありません

... 


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; 
} 

答えて

1

そのシンプルな

あなたの関数定義は、このプロトタイプ

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

を持っている。しかし、あなたがricksAndMortysとdeWhosAndCompanionsはint型

されている

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

を渡しています0

だから、そのデータ型は

// bot types 
string drWhosAndCompanions; 
string ricksAndMortys; 
+0

にする必要があり、私は私が得たことを信じることができない

// bot types int drWhosAndCompanions; int ricksAndMortys; 

主な機能には、文字列 に変更 - JSとPythonから来るので、静的型付けが少しあります方向性を失う。 – cc77

+1

うん。それはまた私に起こった:) –

関連する問題