如何向每个玩家询问他们是否需要另一张牌
问题描述:
让一对夫妇改变..但仍然无法正常工作。现在会发生什么,如果我输入'y'没有任何反应,程序就会冻结,如果输入'n',它会继续for循环。如何向每个玩家询问他们是否需要另一张牌
这是我到目前为止。玩家由我阵列的线代表,他们的手是cols。 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;
}
}
}
答
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
移动代码到while循环。 – NathanOliver
I.e.一旦你进入外部循环,'answer'永远不会改变。所以当然如果'answer =='y''(它应该在循环的顶部而不是底部进行检查)将会永久循环。 – WhozCraig
不是你在问什么,我只是觉得我必须指出。兰特在分销和质量方面绝对糟糕。你应该使用现代的C++ [random](http://en.cppreference.com/w/cpp/numeric/random)工具。 –