C 吊手游戏项目可帮助如何在字符串中找到字母

c++ Hangman game project help how to find a letter in a string

本文关键字:字符串 手游 游戏 项目 帮助      更新时间:2023-10-16

嗨,我在我的编程课上开始了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或仅通过数组迭代。

希望这有帮助