2017-03-28 9 views
-1

変更を加えました..しかし、まだ動作していません。ここで何が起きるかは、もし私が 'y'を入力しても何も起こらないのは、そこにフリーズするプログラムです。 'n'を入力すると、forループが続きます。各プレイヤーに別のカードが必要かどうか質問する方法

これまで私がこれまで持っていたことは次のとおりです。プレイヤーは私の配列の行で表され、その手はcolです。 CardtabおよびCardHandTabは、それぞれが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' '(ループの底ではなく、TOPでチェックする必要があります)の場合、永遠にループします。 – WhozCraig

+0

あなたが求めているものではなく、私はそれを指摘しなければならないと感じています。 'rand'は、配布と品質の面で全く恐ろしいです。最新のC++ [random](http://en.cppreference.com/w/cpp/numeric/random)機能を使用する必要があります。 –

答えて

0
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

おそらく、あなたはwhile()の代わりにif()を使いたいかもしれません。ループを作成するのは珍しい/無意味なことで、最初の反復でブレークさせるだけです。 – drescherjm

+0

'x = rand()%51 + 0;'は51の可能な値(0 .. 50)しか与えません。 – drescherjm

関連する問題