我正在为游戏“craps”编写代码。
我有一个if语句。我在if语句中使用的变量是从is_win_or_loss_or_point(dice_sum)返回的。如果和为7或11,则此函数返回1.如果总和为2,3或12,则返回0.如果不是其中一个值,则返回-1。
当我得到一个导致它返回-1的和(即6)时,point_value被赋值-1。 point_value在命中if(point_value == 0)时保持其值-1。但是当它击中else if(point_value == 1)时它会做某事(在调试中它变为正1)然后继续通过else而不是继续使用else语句。
int main()
{
balance=get_bank_balance();
while (balance > 0)
{
wager=get_wager_amount();
wager=check_wager_amount(wager,balance);
printf("Wager %.2lf\n",wager);
roll1=roll_dice();
roll2=roll_dice();
dice_sum=calculate_sum_dice(roll1,roll2);
point_value=is_win_loss_or_point(dice_sum);
if (point_value == 0)
{
printf("You lose\n");
new_balance=adjust_bank_balance(balance,wager,point_value);
printf("Your current balance is %.2lf\n",new_balance);
}
else if (point_value = 1) // **point of interest**
{
printf("You win\n");
new_balance=adjust_bank_balance(balance,wager,point_value);
printf("Your current balance is %.2lf\n",new_balance);
}
else
{
roll3=roll_dice();
roll4=roll_dice();
dice_sum2=calculate_sum_dice(roll3,roll4);
point_loss=is_point_loss_or_neither(dice_sum2,dice_sum);
new_balance=adjust_bank_balance(balance,wager,point_loss);
printf("Your current balance is %.2lf\n",new_balance);
}
balance=new_balance;
}
}
如果我错过了什么,请随时询问其他信息。
答案 0 :(得分:2)
else if (point_value = 1)
是隐藏的作业。打开编译器警告。
答案 1 :(得分:1)
is_win_loss_or_point的原型是什么?
另外,也许只是在你的代码中你有一个等号而不是两个(你必须写else if (point_value == 1)
)
答案 2 :(得分:0)
古老的经典。而不是分配
else if (point_value = 1) // = will assign
你想要
else if (point_value == 1) // == will compare