2016-03-20 2 views
0

私は学校のハングマンゲームを作成しています。 推測される単語はデータファイルから引き出されます プログラムはゲームに使用する単語としてファイルから最後の単語を選択します 「words」は私がこれに使用した変数です ユーザは文字を推測し、その文字が単語に含まれていればそれは正しいと判断し、そうでない場合は正しくないので、プログラムはハングマンの「ボード」または画像を徐々に表示する。特定の文字が単語に含まれているかどうかを調べるためにstr.find()を使用しています

私は推測手紙が単語であるかどうかを確認するためにstr.find()を使用し、以下のように、コードは次のとおりです。使用され

while (wrongGuess < 7){ 
    cout << "\nGuess a letter in the word: " << endl; 
    cin >> guess; 

    if (words.find(guess)==true){ 
     cout << "Correct! " << guess << " is FOUND in the word " << word << endl; 
     continue;} 
    else 
     {cout << guess << " is NOT FOUND in the word " << endl; 
     wrongGuess++; 
     if(wrongGuess == 1) 
      cout << board2; 
     else if(wrongGuess == 2) 
      cout << board3; 
     else if(wrongGuess == 3) 
      cout << board4; 
     else if(wrongGuess == 4) 
      cout << board5; 
     else if(wrongGuess == 5) 
      cout << board6; 
     else if(wrongGuess == 6) 
      cout << board7 << "\nSorry Game Over"; 
     } 

言葉がprogrammingです。

私は正しい文字(rのような)を入力すると、私は正しいことを伝え、別の正しい文字(p)を入力すると、プログラムは私に間違っていると伝えます。

何が間違っていますか?

+0

'words.find(推測)== true'を - しかし、文字列::真/偽... –

+0

はまた、 "文字列にSTLコンテナ" STDとのインタフェースを(使用を検討し、リターンの位置を見つけることではありません:: find)をメンバ関数の代わりに使用します。そのインターフェイスは、文字列のメンバー関数の混乱よりも言語の残りの部分と一貫しています –

答えて

1

std::basic_string::find aka。 std::string::findは、boolではなく、文字列内の指定された文字の位置を返します。

true1に崩壊し、検索された文字が1の位置にある場合、条件がtrueになるため、投稿したコードが動作することがあります。

それを修正するには、この操作を行う必要があります。

... 
if (words.find(guess)!=std::string::npos){ 
    ... 

std::basic_string::find

1

使用std::string::nposfind結果番目確認すること。

if(words.find(guess) != std::string::npos) 
{ 
    //... 
} 
else 
{ 
} 
関連する問題