2016-10-07 18 views
-1

私はコマンドラインゲームを作ろうとしていますが、私はこれらの2つの関数を宣言していますが、playerAttack();を呼び出すと、error: playerAttack start was not declared in this scopeというメッセージが表示されます。int main() {...}関数の前に関数playerAttack()cpuAttack()が宣言されています。事前にお手伝いしてください。C++関数が宣言されていませんか?

void cpuAttack() { 
    if (playerHealth > 0 && cpuHealth > 0) { 
     cout << "Attack Direction (left, right, or center): "; 
     cin >> attack; 
     cout << name << " attacks from the " << attack << endl; 
     srand(time(0)); 
     cpuBlock = attDir[rand() % 2]; 
     cout << "CPU-1 blocks the " << cpuBlock << endl; 
     if (attack != cpuBlock) { 
      cpuHealth - dmg; 
     } else {cpuHealth = cpuHealth - (dmg + 20);} 
     playerAttack(); 
    } else if (playerHealth > 0 && cpuHealth <= 0) { 
     cout << "\n" << name << " has won the game.\n"; 
    } else if (playerHealth <= 0 && cpuHealth > 0) { 
     cout << "\nCPU-1 has won the game.\n"; 
    } 
} 

void playerAttack() { 
    if (playerHealth > 0 && cpuHealth > 0) { 
     cout << "Attack Direction (left, right, or center): "; 
     cin >> attack; 
     cout << name << " attacks from the " << attack << endl; 
     srand(time(0)); 
     cpuBlock = attDir[rand() % 2]; 
     cout << "CPU-1 blocks the " << cpuBlock << endl; 
     if (attack != cpuBlock) { 
      cpuHealth - dmg; 
     } else {cpuHealth = cpuHealth - (dmg + 20);} 
     cpuAttack(); 
    } else if (playerHealth > 0 && cpuHealth <= 0) { 
     cout << "\n" << name << " has won the game.\n"; 
    } else if (playerHealth <= 0 && cpuHealth > 0) { 
     cout << "\nCPU-1 has won the game.\n"; 
    } 
} 
+1

'main'の前に' playerAttack'を宣言しましたが、 'cpuAttack'の前に宣言しましたか? – immibis

+0

@immibis 'cpuAttack'の前に宣言すると'エラー:cpuAttackはこのスコープで宣言されていません 'と表示されます。 –

答えて

1

二つの機能がお互いに相互に依存しているのでそれが定義される前に、そのうちの一つは、すでに他の知っている必要があります。解決策を定義する前に、それらを宣言することです。また

void cpuAttack(); 
void playerAttack(); 

// now define them ... 

は、あなたが(ターンテイキングを制御するために何か他のものを可能にすることにより、相互依存を取り除くため、互いの上に呼び出しを積み重ねることができませんでした場合によってはスタックのオーバーフローが発生する可能性があります)。

関連する問題