2016-04-05 13 views
0

私はC++でゲームを作ろうとしています。私のエディタはCode :: Blocksで、私のコンパイラはMinGWです。このゲームは、空腹、渇き、暖かさ、そして選択肢を持つテキストベースの生存ゲームです。私は、飢え、渇き、そして暖かさの価値をプレイヤーに伝えようとすると、この質問のタイトルに誤りがあることがわかります。私は比較的新しいプログラマーですが、私は基本を理解しています。私は今、私が使用したコードを出力します:C + +エラー:文がオーバーロードされた関数のアドレスを解決できない

cout<< "Your hunger is"; hunger; endl; 
cout<< "Your warmth is"; warmth; endl; 
cout<< "Your thirst is"; thirst; endl; 

変数は変更を取得場所です(これは一例です):

int wood() 
{ 
cout<< "You have chosen find firewood!"<< endl; 
if ((rand() % 2) == 2){ 
    cout<< "You found firewood!"<<endl; 
    warmth = warmth + 1; 
} 
else{ 
    cout<< "You could not find any firewood"<< endl; 
} 
} 

私はプレイヤーにコードを教えて同じ機能では、それらをターン毎に各変数の1点を失うことになっている:

warmth = warmth - 1; 
hunger = hunger - 1; 
thirst = thirst - 1; 

コードが100行以上の長さであるので、私は尋ねない限り、コード全体を貼り付ける習慣。変数のいずれかが0に到達した場合、ゲームは終了します。

if (hunger = 0){ 
    cout<< "You starved!"<< endl; 
    cout<< "Game over!"<< endl; 
    return 0; 
} 
if (thirst = 0){ 
    cout<< "You became dehydrated!"<< endl; 
    cout<< "Game over!"<< endl; 
    return 0; 
} 
if (warmth = 0){ 
    cout<< "You froze!"<< endl; 
    cout<< "Game over!"<< endl; 
    return 0; 
} 
+0

Btwコンパイルエラーが発生すると、特定の行を指しています。少なくとも、正確なメッセージコンパイラを貼り付けてください。 – Slava

答えて

1

それは次のようになります。

1

cout<< "Your hunger is" << hunger << endl; 

ので、あなたがあなたのコードでカップルの誤植を持っています。実行するとき

cout<< "Your hunger is"; hunger; endl; 

出力文の代わりに3つの文があります。あなたが持っていたことがあります

cout << "Your hunger is" << hunger << endl; 

どのようなすべて一緒にチェーン。それ以外の場合は、endl()を呼び出そうとしますが、関連付けられたストリームオブジェクトがないためできません。

また、if文にはすべて問題があります。あなたは0ある0hungerを設定した結果を評価しているよう

if (hunger = 0) 

は常にfalseとなります。等価比較を行うには、あなたのすべての用途===に変更する必要があります。

関連する問題