C++ C+中的视频扑克+;

C++ C+中的视频扑克+;,c++,poker,C++,Poker,我开始写一个视频扑克程序,我遇到了一些问题 我有一个保持功能,如下所示: void Game::Hold( bool& choice ) { if( choice == true ) { Console::BackgroundColor(Red); Console::ForegroundColor(Black); cout << "HOLD"; Consol

我开始写一个视频扑克程序,我遇到了一些问题

我有一个保持功能,如下所示:

void Game::Hold( bool& choice )
{
    if( choice == true )
        {
            Console::BackgroundColor(Red);
            Console::ForegroundColor(Black);
            cout << "HOLD";
            Console::BackgroundColor(Black);
            Console::ForegroundColor(Red);
        }
        else
            cout << "HOLD"; 
}

您还没有展示Console::BackgroundColor()的实际功能,因此很难确定。然而


通常,
cout
将其输出缓冲到以后。因此,
Console::BackgroundColor()
可能正在更改一些立即生效的内容,然后
可能您还没有显示
Console::BackgroundColor()
的实际功能,因此很难确定。然而


通常,
cout
将其输出缓冲到以后。正因为如此,可能会改变一些立即生效的东西,然后<代码> CUT> P>严格的SUSEU,<代码> STD::CUT和其他C++标准流没有任何颜色或字体。 有一个标准定义如何在旧的基于字符的终端(以及当前的终端仿真器,如新的克隆)上更改字体和颜色


<>但如果你关心基于终端的I/O,我建议使用一个库来支持

严格的SUN,<代码> STD::CUT和其他C++标准流没有任何颜色或字体。 有一个标准定义如何在旧的基于字符的终端(以及当前的终端仿真器,如新的克隆)上更改字体和颜色


但是如果你关心基于终端的I/O,我建议你使用一个库,比如

你能解释一下“不会阻塞”是什么意思吗?你期望看到什么,以及实际发生了什么?格雷格-如果卡被持有,“持有”周围的文本将交换。你能解释一下“不会被阻挡”是什么意思吗?你希望看到什么,以及实际发生了什么?Greg-如果卡被持有,“HOLD”周围的文本将交换。控制台不是问题。我几乎在我编写的每个控制台应用程序中都使用了相同的类。问题在于for循环不允许我在发送的数组中显示第一个和最后一个“true”保持。恐怕我还是不明白。如果
Game::Hold()
不是问题,您能描述一下问题是什么吗?我不明白你所说的“真正持有”是什么意思。另外,也许你也可以更新你的问题标题。我建议的更改显然没有帮助。如果每次选择“1”时它都要求我保留,则文本不会在第一次和最后一次保留时更改,而是会在第二次、第三次和第四次保留时更改。我无法立即理解为什么会出现问题。我没有看到您的代码中有任何明显的off-by-1错误。但是,我可能建议在修改前后打印各种数组的内容,如
p_Hold
,以查看它是否包含您认为应该包含的内容。-如你所见。第一个和最后一个不显示。第一张牌也不起作用。控制台不是问题所在。我几乎在我编写的每个控制台应用程序中都使用了相同的类。问题在于for循环不允许我在发送的数组中显示第一个和最后一个“true”保持。恐怕我还是不明白。如果
Game::Hold()
不是问题,您能描述一下问题是什么吗?我不明白你所说的“真正持有”是什么意思。另外,也许你也可以更新你的问题标题。我建议的更改显然没有帮助。如果每次选择“1”时它都要求我保留,则文本不会在第一次和最后一次保留时更改,而是会在第二次、第三次和第四次保留时更改。我无法立即理解为什么会出现问题。我没有看到您的代码中有任何明显的off-by-1错误。但是,我可能建议在修改前后打印各种数组的内容,如
p_Hold
,以查看它是否包含您认为应该包含的内容。-如你所见。第一个和最后一个不显示。第一张卡也不保存。你可以做颜色,因为你的终端支持ANSI转义代码(但是C++标准不需要这样做)。你可以做颜色,因为你的终端支持ANSI转义代码(但是C++标准不需要这样做)。
void Game::Play( void )
{

    Menu();

    Console::Clear();
    Deck nGame;
    nGame.Shuffle();
    Game Hand;
    Card currentHand[ 5 ]; 
    bool p_Hold[ 5 ] = { 0 , 0 , 0, 0, 0 };


    for( int i = 0; i < 5; i++ )
        currentHand[ i ] = nGame.Draw();

    cout << "Type in which cards you would like to hold. Type \"d\" when done.\n\n";
    char uChoice[ 5 ] = {};

    for( int i = 0; i < 5; i++ )
    {
        if( uChoice[ i ] == 'd' ) 
            break;

        for( int i = 0; i < 5; i++ )
            cout << "    " << currentHand[ i ] << "   ";

        cout << endl;

        for( int i = 0; i < 5; i++ )
        {
            cout << "  ";
            Hand.Hold( p_Hold[ i ] ); 
            cout << "   ";  
        }

        cout << "\n\n\nWould you like to hold Card " << i + 1 << "? (1 = Yes/0 = No): ";

        cin.get( uChoice[ i ] );
        cin.clear();

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

        cout << endl;

        if( cin.good() )
        {
            for( int i = 0; i < 5; i++ )
            {
                if( uChoice[ i ] == '1' )
                    p_Hold[ i ] = true;
                else
                    p_Hold[ i ] = false;
            }
        }
    }
}
void Game::Hold( bool& choice )
{
    if( choice == true )
        {
            cout.flush();
            Console::BackgroundColor(Red);
            Console::ForegroundColor(Black);
            cout << "HOLD";
            cout.flush();
            Console::BackgroundColor(Black);
            Console::ForegroundColor(Red);
        }
        else
            cout << "HOLD"; 
}