【发布时间】:2013-04-21 04:57:53
【问题描述】:
所以我正在尝试完成这个程序,我需要做的就是为这个纸牌游戏实现某种形式的用户输入,但到目前为止,我尝试的所有内容都在无休止地循环(或者直到我用完数组),当我查看我的代码时,我不知道我在逻辑上做错了什么,这似乎是有道理的。
void players(int deck[])
{
int x;
int a;
a = 1;
printf("Player 1 \n");
printf("Your Hand is: \n");
draw(deck, a);
draw(deck, a);
while(a = 1)
{
printf("What would you like to do: Press 1 to Draw. 2 to Stay. \n");
scanf("%d" , &x);
if(x = 1)
{
draw(deck, a);
}
else
{
a--;
}
}
}
这是有问题的输入
void draw(int deck[SIZE], int a)
{
int numCards = 10;
int i;
int hand[numCards];
int card;
for(i = 0; i < numCards && top > 0; i++)
{
card = deck[top-1];
hand[i] = card;
top--;
}
if(a != 0)
printcards(card);
else
for(i = 0; i < numCards && top > 0; i++)
printcards(card);
}
这是 Loop 用于抽牌的函数(printcards 是一个单独的函数,只打印牌)玩家调用 draw 并且它可以工作,但正如所述,即使我按 2 也会无休止地调用牌(假设退出)。所以我不完全确定我做错了什么。
【问题讨论】:
-
改用
while (x == 1)。while (a == 1)相同 -
您是否尝试过逐行单步执行您的代码,尝试在脑海中执行它,大声朗读每个语句?
-
我不同意这应该作为本地化关闭?这是一个常见的初学者错误。也许我在这里遗漏了什么?
标签: c function loops if-statement