首页 > 解决方案 > 如何在 IF 语句 c++ 中创建“除非条件”

问题描述

我正在用 C++ 制作二十一点,而且快结束了!我正在做我的输赢陈述。但我的问题是,我需要我的 if 语句来确定庄家/玩家的手牌是大于还是小于另一手,还需要检查其中一个是否超过 21。

因此,让 if 语句确定这不是问题,如果另一个超过 21 岁,我只需要它不通过一个 if 语句

       if (dealerTotal > 21 || playerTotal > dealerTotal)//For win
        {

        }
        if (playerTotal > 21 || dealerTotal > playerTotal)// For lose
        {

        }

所以第一个它需要通过如果除非“playerTotal 超过 21”,而下一个 IF 则相反

任何建议将不胜感激。非常感谢!

标签: c++if-statementunless

解决方案


二十一点中,如果玩家和庄家都获得超过 21 点(称为“爆牌”),则玩家输,庄家赢。因此,您必须相应地设计逻辑:

if (
    //player busted, or
    playerTotal > 21 ||

    //dealer not busted and dealer has more points than player
    ( dealerTotal <= 21 && dealerTotal > playerTotal )
)
{
    printf( "Dealer wins!\n" );
}
else if ( dealerTotal == playerTotal )
{
    printf( "Tie!\n" );
}
else
{
    printf( "Player wins!\n" );
}

请注意,第一个if条件中的括号不是必需的,因为运算符优先级&&高于. 我只是为了清楚起见才添加它们。||

此逻辑没有考虑二十一点 21 对非二十一点 21 的胜利。如果一方有二十一点而另一方有非二十一点 21,则上述逻辑将错误地报告平局。如果不查看更多代码,则无法解决此问题,因为您仅显示变量playerTotaldealerTotal,它们并未指定一侧是否有二十一点。


推荐阅读