c++ Hangman 游戏项目帮助如何在字符串中查找字母

标签 c++

<分区>

您好,我很久以前在编程课上开始使用 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;
}

这是老师给我们的指示: image

非常感谢您的帮助。

最佳答案

像这样正确使用 find() 方法:

if (secretWord.find(letter) != std::string::npos)
    ;// find
else
    ;// not find

但是您还远未完成。例如,您不会存储已经猜对的字母。

关于c++ Hangman 游戏项目帮助如何在字符串中查找字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47622288/

相关文章:

c++ - 是否有 WinAPI 可以从带有可选空格和其他参数的命令行获取文件名?

c++ - std::tuple 与多个空成员的比较不会在 GCC 上编译

c++ - 高度可定制的 C++ GUI 库?

c++ - 实现一个保证不会移动的 "string pool"

c++ - tbb parallel_reduce 用于 OpenMP 缩减的片段

c++ - 为什么从采用 std::ranges::output_range 的算法返回 std::ranges::safe_iterator_t 而不是 std::ranges::safe_subrange_t

c++ - 帮助 Arduino 和 Analog Min Max 设置

C++ 策略设计模式,制作接口(interface)数组

c++ - CUFFT 1-D FFT 期间出现奇怪的崩溃

c++ - 将 matlab 内联命令转换为不同的