c++ 如何让我的简单的刽子手游戏重复

oewdyzsn  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(98)

很抱歉,如果这是显而易见的,我是新的编码。
每当游戏结束,我键入“y”再次玩它显示什么已经在屏幕上一遍又一遍。我知道这是因为每当我键入“y”它运行活动的游戏,而不是重新启动,我的问题是,我如何让它重新启动?
这是专门针对void playgame()和int main()的。

#include <iostream>
#include <string>

std::string correcans = "coding";
std::string placeholder = "------";
std::string wrongans = "";
int amountguess = 6;


void title()
{
    std::cout << "##########################################" << std::endl;
    std::cout << "#                HANGMAN                 #" << std::endl;
    std::cout << "##########################################\n" << std::endl;
}

void hangdraw(int amountguess)
{
    if (amountguess == 6)
    {
        std::cout << " |-----------------|" << std::endl;
        std::cout << " |                 " << std::endl;
        std::cout << " |" << std::endl;
        std::cout << " |" << std::endl;
        std::cout << "_|__________________" << std::endl;
    }
    else if(amountguess == 5)
    {
        std::cout << " |-----------------|" << std::endl;
        std::cout << " |                 0" << std::endl;
        std::cout << " |                 " << std::endl;
        std::cout << " |" << std::endl;
        std::cout << "_|__________________" << std::endl;
    }
    else if (amountguess == 4)
    {
        std::cout << " |-----------------|" << std::endl;
        std::cout << " |                 0" << std::endl;
        std::cout << " |                 |" << std::endl;
        std::cout << " |                  " << std::endl;
        std::cout << "_|__________________" << std::endl;
    }
    else if (amountguess == 3)
    {
        std::cout << " |-----------------|" << std::endl;
        std::cout << " |                 0" << std::endl;
        std::cout << " |                 |" << std::endl;
        std::cout << " |                /" << std::endl;
        std::cout << "_|__________________" << std::endl;
    }
    else if (amountguess == 2)
    {
        std::cout << " |-----------------|" << std::endl;
        std::cout << " |                 0" << std::endl;
        std::cout << " |                 |" << std::endl;
        std::cout << " |                / \\" << std::endl;
        std::cout << "_|__________________" << std::endl;
    }
    else if (amountguess == 1)
    {
        std::cout << " |-----------------|" << std::endl;
        std::cout << " |                 0 /" << std::endl;
        std::cout << " |                 |" << std::endl;
        std::cout << " |                / \\" << std::endl;
        std::cout << "_|__________________" << std::endl;
    }
    else if (amountguess == 0)
    {
        std::cout << " |-----------------|" << std::endl;
        std::cout << " |               \\ 0 /" << std::endl;
        std::cout << " |                 |" << std::endl;
        std::cout << " |                / \\" << std::endl;
        std::cout << "_|__________________" << std::endl;
    }

}

void guessdisplay()
{
    std::cout << std::endl;
    std::cout << placeholder; 
    std::cout << std::endl;
    std::cout << "\n------------------------------------------" << std::endl;
    std::cout << "|              Wrong Letters             |";
    std::cout << "\n------------------------------------------" << std::endl;

    std::cout << wrongans;

    std::cout << "\n------------------------------------------" << std::endl;

    std::cout << "Guesses Left: " << amountguess << std::endl;
}

char input()
{
    std::cout << "Guess Letter: ";
    char letter;

    std::cin >> letter;

    std::cin.clear();
    std::cin.ignore();

    return letter;
}

void guess(char letter)
{
    bool sameletter = false;
    for (int i = 0; i < placeholder.size(); i++)
    {
        if (correcans[i] == letter)
        {
            placeholder[i] = correcans[i];
            sameletter = true;
        }
    }

    if (sameletter == false)
    {
        amountguess -= 1;
        wrongans += letter;
    }
}

void winorlose()
{
    title();
    hangdraw(amountguess);
    guessdisplay();

    if (placeholder == correcans)
    {
        std::cout << "\n------------------------------------------" << std::endl;
        std::cout << "|                  YOU WIN!!!            |";
        std::cout << "\n------------------------------------------" << std::endl;
    }

    else
    {
        std::cout << "\n------------------------------------------" << std::endl;
        std::cout << "|                YOU LOSE!!!             |";
        std::cout << "\n------------------------------------------" << std::endl;
    }
}

void playgame()
{
    while (placeholder != correcans && amountguess > 0)
    {
        title();
        hangdraw(amountguess);
        guessdisplay();
        char letter = input();
        guess(letter);
        system("cls");
    }

    winorlose();

}

int main()
{
    bool isRunning = true;

    while (isRunning)
    {
        playgame();

        std::cout << "Would you like to play again (y/n)? ";

        char userChoice;
        std::cin >> userChoice;

        if (userChoice == 'y' || userChoice == 'Y')
        {
            isRunning = true;
        }
        else
        {
            isRunning = false;
        }
    }

    return 0;
}
svmlkihl

svmlkihl1#

你只需要在游戏结束后重置变量
在int main()方法中使用

if (userChoice == 'y' || userChoice == 'Y')
        {
            placeholder = "------";
wrongans = "";
amountguess = 6;
            isRunning = true;
        }
        else
        {
            isRunning = false;
        }

相关问题