C 吊手游戏项目可帮助如何在字符串中找到字母
c++ Hangman game project help how to find a letter in a string
嗨,我在我的编程课上开始了C ,我们的老师给了我们一个工作的项目。这是一个具有非常具体要求的吊手游戏。我开始了,但是我陷入了检查输入字母是否在单词中的部分。
这是我到目前为止所拥有的:
#include <iostream>
#include <string>
using namespace std;
int errorNb;
string Player1;
string Player2;
string UnknownWord;
string secretWord;
char letter;
int alive(1);
void displayUnknownWord(string UnknownWord)
{
for (int a(0); a<=secretWord.size(); a++)
{
if (secretWord[a] == letter)
{
UnknownWord[a+a]=letter;
}
}
cout << "The secret word is: " << UnknownWord << endl;
}
void displayHangman(int errorNb)
{
if (errorNb == 0)
{
cout << endl << endl
<<" _____ "<< endl
<<"| | "<< endl
<<"| "<< endl
<<"| "<< endl
<<"| "<< endl
<<"|____________"<< endl<< endl;
}
else if (errorNb == 1)
{
cout << endl << endl
<<" _____ "<< endl
<<"| | "<< endl
<<"| O "<< endl
<<"| "<< endl
<<"| "<< endl
<<"|____________"<< endl<< endl;
}
else if (errorNb == 2)
{
cout << endl << endl
<<" _____ "<< endl
<<"| | "<< endl
<<"| O "<< endl
<<"| | "<< endl
<<"| "<< endl
<<"|____________"<< endl<< endl;
}
else if (errorNb == 3)
{
cout << endl << endl
<<" _____ "<< endl
<<"| | "<< endl
<<"| _O "<< endl
<<"| | "<< endl
<<"| "<< endl
<<"|____________"<< endl<< endl;
}
else if (errorNb == 4)
{
cout << endl << endl
<<" _____ "<< endl
<<"| | "<< endl
<<"| _O_ "<< endl
<<"| | "<< endl
<<"| "<< endl
<<"|____________"<< endl<< endl;
}
else if (errorNb == 5)
{
cout << endl << endl
<<" _____ "<< endl
<<"| | "<< endl
<<"| _O_ "<< endl
<<"| | "<< endl
<<"| / "<< endl
<<"|____________"<< endl<< endl;
}
else if (errorNb == 5)
{
cout << endl << endl
<<" _____ "<< endl
<<"| | "<< endl
<<"| _O_ "<< endl
<<"| | "<< endl
<<"| / \ "<< endl
<<"|____________"<< endl<< endl;
}
}
int main()
{
cout << "Welcome to HANGMAN!" << endl <<endl << "Player 1, enter your name."
<< endl;
cin >> Player1;
cout << "Player 2, enter your name." <<endl;
cin >> Player2;
cout << endl << Player1 << ". Please choose a secret word. "
"(Use lower case only)" <<endl;
cin >> secretWord;
for (int i(0); i< secretWord.size(); ++i)
{
UnknownWord += "_ ";
}
for (int s(0);s<30; ++s)
{
cout << "n";
}
cout << "GAME START" << endl <<endl;
displayUnknownWord(UnknownWord);
displayHangman(errorNb);
while (alive = 1)
{
cout << Player2 << endl << "Please guess a letter (lower case only):" << endl;
cin >> letter;
if (secretWord.find(letter))
{
cout << "CORRECT!" << endl;
displayUnknownWord(UnknownWord);
displayHangman(errorNb);
}
else
{
cout << "WRONG!" << endl;
++errorNb;
displayUnknownWord(UnknownWord);
displayHangman(errorNb);
}
}
return 0;
}
这是老师给我们的说明:图像
非常感谢您的帮助。
只需像这样正确使用find()方法:
if (secretWord.find(letter) != std::string::npos)
;// find
else
;// not find
,但是您还没有完成。例如,您没有存储已经正确猜测的字母。
一个非常简单的答案是使用std::find
或仅通过数组迭代。
希望这有帮助