如何向每个玩家询问他们是否需要另一张牌

问题描述:

让一对夫妇改变..但仍然无法正常工作。现在会发生什么,如果我输入'y'没有任何反应,程序就会冻结,如果输入'n',它会继续for循环。如何向每个玩家询问他们是否需要另一张牌

这是我到目前为止。玩家由我阵列的线代表,他们的手是cols。 CardtabCardHandTab是代表他们具有EX:1♥的牌的wchar,其余的是包含每张牌的值的模拟阵列。

其实只是意识到他们都会得到一张卡,不管他们的答案,因为一做,同时检查条件下执行的代码后,但并没有解决我的问题..

void anotherCard(const wchar_t* CardTab[], int ValTab[], const wchar_t* CardHandTab[4][5], int ValHandTab[4][5]) 
{ 
    for (int i = 0; i < 4; i++) 
    { 
     char answer = 0; 
     wcout << "Player" << i + 1 << "Would you like another? y/n" << endl; 
     cin >> answer; 
     while (answer == 'y' || answer == 'Y') 
     { 
      int x; 
      do 
      { 
       x = rand() % 51 + 0; 
      } while (CardTab[x] == NULL); 

      CardHandTab[i][3] = CardTab[x]; 
      ValHandTab[i][3] = ValTab[x]; 
      CardTab[x] = NULL; 
      ValTab[x] = 0; 
     } 
    } 
} 
+0

移动代码到while循环。 – NathanOliver

+0

I.e.一旦你进入外部循环,'answer'永远不会改变。所以当然如果'answer =='y''(它应该在循环的顶部而不是底部进行检查)将会永久循环。 – WhozCraig

+0

不是你在问什么,我只是觉得我必须指出。兰特在分销和质量方面绝对糟糕。你应该使用现代的C++ [random](http://en.cppreference.com/w/cpp/numeric/random)工具。 –

I forgot it needs a way to exit.. adding a break; fixed it 

    void anotherCard(const wchar_t* CardTab[], int ValTab[], const wchar_t* CardHandTab[4][5], int ValHandTab[4][5]) 
    { 
     for (int i = 0; i < 4; i++) 
     { 
      char answer = 0; 
      wcout << "Player" << i + 1 << "Desirez vous une autre carte? y/n" << endl; 
      cin >> answer; 
      while (answer == 'y' || answer == 'Y') 
      { 
       int x; 
       do 
       { 
        x = rand() % 51 + 0; 
       } while (CardTab[x] == NULL); 

       CardHandTab[i][3] = CardTab[x]; 
       ValHandTab[i][3] = ValTab[x]; 
       CardTab[x] = NULL; 
       ValTab[x] = 0; 
       wcout << CardHandTab[i][3]; 
       break; 
      } 
     } 
    } 
+0

也许你想用if()而不是while()。创建循环的唯一/毫无意义仅在第一次迭代时强制中断。 – drescherjm

+0

'x = rand()%51 + 0;'只会给你51个可能的值(0 .. 50)。 – drescherjm