Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;21点游戏_C++ - Fatal编程技术网

C++ C++;21点游戏

C++ C++;21点游戏,c++,C++,好吧,我对编程真的很陌生,我正在尝试为我正在学习的课程制作一个21点游戏。到目前为止,我已经掌握了所有内容的要点,但当涉及到实际的游戏玩家部分时,我遇到了麻烦。当我看我的代码时,我不明白为什么我的游戏不能正常运行。我希望它比我现在看到的更容易修复,因为我通常会错过一些小事情 for(;;) { cout << "1)Bet, 2)Hit or 3)Stay?\n"; cin >> ans; if(ans == 1) { }

好吧,我对编程真的很陌生,我正在尝试为我正在学习的课程制作一个21点游戏。到目前为止,我已经掌握了所有内容的要点,但当涉及到实际的游戏玩家部分时,我遇到了麻烦。当我看我的代码时,我不明白为什么我的游戏不能正常运行。我希望它比我现在看到的更容易修复,因为我通常会错过一些小事情

for(;;)
{
    cout << "1)Bet, 2)Hit or 3)Stay?\n";
    cin >> ans;

    if(ans == 1)
    {

    }

    if(ans == 2)        // Hit
    {

        Console::Clear();
        cout << "Your Hand\n";
        Player.AddCard(Deck.Draw());
        cout << "\nHand Value: " << Player.HandValue() << "\n";
        Player.Show();

        if(Player.HandValue() > 21)
        {
            cout << "You Busted man...Sorry :/\n\n"
                //<< "Dealer's Hand\n\n";
                //Dealer.Show();

        }

            else if(Player.HandValue() == 21)
            {
                cout << "You've Won Your Freedom! :D";
            }

        while( Dealer.HandValue() <= 17)
        {
            Dealer.AddCard(Deck.Draw());
            Dealer.Show(1);

            if(Dealer.HandValue() > 21)
            {
               cout << "Dealer Busted man...You Win! :D\n"
                    << "\nDealer's Hand\n";
                    Dealer.Show();
            }

            else if(Dealer.HandValue() == 21)
            {
                cout << "Dealer Wins...Your Soul! >:D\n"

            }

        }

    if(Player.HandValue() > Dealer.HandValue())
    {
        cout << "Your Hand Beats Dealer's...You Win!! :D\n"

    }

    else if(Player.HandValue() < Dealer.HandValue() && Dealer.HandValue() > 17 && Player.HandValue() > 17)
    {
        cout << "Dealer's Hand Wins...Sorry :/\n"

    }
    cin.ignore(INT_MAX, '\n');

    cin.clear();
    cin.ignore(INT_MAX, '\n');
}
    break;
if(ans == 3)        // Stay
{

    Console::Clear();
    cout << "Your Hand\n";
    cout << "\nHand Value: " << Player.HandValue() << "\n";
    Player.Show();

    if(Player.HandValue() > 21)
    {
        cout << "You Busted man...Sorry :/\n"

    }
    else if(Player.HandValue() == 21)
    {
        cout << "You've Won Your Freedom! :D\n";
        cout << "\n\n";
        cout << "Dealer's Hand\n";
        Dealer.Show();
    }
    while(Dealer.HandValue() < 17)
    {
        Dealer.AddCard(Deck.Draw());
        Dealer.Show(1);

    if(Dealer.HandValue() > 21)
    {
        cout << "Dealer Busted man...You Win! :D\n"

    }
    else if(Dealer.HandValue() == 21)
    {
        cout << "Dealer Wins...Your Soul! >:D\n"

    }
    }
    if(Player.HandValue() > Dealer.HandValue())
    {
        cout << "Your Hand Beats Dealer's...You Win!! :D\n"

    }
    else if(Player.HandValue() < Dealer.HandValue() && Dealer.HandValue() > 17 && Player.HandValue() > 17)
    {
        cout << "Dealer's Hand Wins...Sorry :/\n;
        cin.ignore(INT_MAX, '\n');
    }
    cin.clear();
    cin.ignore(INT_MAX, '\n');
}

if(ans == 4)
{
    exit(0);
}
system("pause");
}
(;;)的

{
cout>ans;
如果(ans==1)
{
}
如果(ans==2)//命中
{
控制台::Clear();

cout您的问题很可能源于未处理某些情况。如果players.HandValue()==derders.HandValue(),您的代码将通过测试。此外,也不能保证player的<17(您在测试中依赖它)

我建议输入一个else{}子句,打印玩家和交易商的手值和一条调试消息,看看您缺少什么条件,然后您可以尝试找出原因

if(Player.HandValue() > Dealer.HandValue())
{
    cout << "Your Hand Beats Dealer's...You Win!! :D\n";
}
else if(Player.HandValue() < Dealer.HandValue() && Dealer.HandValue() > 17 && Player.HandValue() > 17)
{
    cout << "Dealer's Hand Wins...Sorry :/\n";
}
else
{
    cout << "Unhandled case! Player handvalue: " << Player.HandValue() 
         << " dealer handvalue: " << Dealer.HandValue() << '\n';
}
if(Player.HandValue()>Dealer.HandValue())
{
cout 17&&Player.HandValue()>17)
{

有什么特别的问题吗?我们需要更多的信息来帮助你。你说:“我的游戏不能正常运行”。你给它输入什么?你看到了什么结果,你认为“正确”的结果是什么?(或者你想让我们完全猜出来吗?)我有一种感觉,我太模糊了,对不起。这是我循环的一部分,在它显示我的手和庄家的手之后,它询问我是想下注、击球还是留下。我无法确定它,但我的问题都与我的输出有关。我测试了好几分钟,这就是我看到的问题ing:有时候,如果我抽,然后是半身,庄家仍然抽两次,然后他就抽,半身,我的和他的两条信息都会显示,所以没有人赢。如果我留下,我会自动回到我的主菜单,代码中没有显示。^应该让庄家抽,直到他达到17的上限,否则他就会半身而退。有时候庄家抽一次或几次两次,每次他抽牌时牌都会显示出来。所有的牌都在同一屏幕上。如果庄家的牌比我好,它就不会在我的牌之后显示他的牌。有时,如果我赢了,庄家仍然抽牌,他的牌也会显示出来。这些是我的主要问题,但我相信还有更多问题。很抱歉,之前没有说得更具体。我会继续尝试。你知道吗你认为我为了让我的经销商在需要的时候画图而做的while语句可能有问题吗?而且,老实说,我的stay函数没有任何功能。我有代码,但我猜它从来没有达到我的停留代码。有什么想法吗?这完全取决于你希望程序如何工作:)我想你可能想把while-loop在这里,庄家把牌抽到stay分支中。我还将把所有用于计算谁赢的代码分解成函数,比如“printgamesult()'或类似的问题。如果您仍然有像您详细描述的那样的奇怪问题,我的第一个猜测是可能是cin流,可能您并不总是刷新它们。请尝试在读入后立即清除它(而不是在If案例中单独清除)。