2016-11-26 39 views
1

我正在尝试创建一个小型老虎机游戏,每个卷轴(铃,橙,樱桃和马)都有三个卷轴和四个可能的符号。C中的老虎机游戏 - 打印卷轴问题

我开始生成一个1-4之间的随机值,现在我试图让第一个卷轴打印出与生成的值相关联的文本。

这里是代码,我希望有人可以帮忙,并指出为什么它不工作,以及如何修复它。从下面的代码中,我期待程序打印出与生成的数字相关联的3个不同的文本片段,而是将“Cherry”打印出三次。

// Generates 3 different random values between 1-4 and stores them within the slotVal array. 
int slotVal[3], counter; 
srand(time(NULL)); 

for (counter = 0; counter < 3; counter++) { 
    slotVal[counter] = rand() % 4 + 1; 
} 

// Checks generated values and prints associated text. 
for (counter = 0; counter < 3; counter++) { 
    if (slotVal[counter] = 1) { 
     printf("Cherry"); 
    } 

    else if (slotVal[counter] = 2) { 
     printf("Bell"); 
    } 

    else if (slotVal[counter] = 3) { 
     printf("Orange"); 
    } 
    else 
     printf("Horseshoe"); 
} 
+2

'=='是C中的比较运算符。您正在使用'=' –

回答

3

你的if语句是错误的,你要分配(=)不能用来比较(==):

// Checks generated values and prints associated text. 
for (counter = 0; counter < 3; counter++) { 
    if (slotVal[counter] == 1) { 
     printf("Cherry"); 
    } else if (slotVal[counter] == 2) { 
     printf("Bell"); 
    } else if (slotVal[counter] == 3) { 
     printf("Orange"); 
    } else { 
     printf("Horseshoe"); 
    } 
} 

如果你if(something = 1)评估的条件将是1因为赋值运算符返回分配变量。由于1的计算结果为true,您的第一个条件将会被满足,其他else块将被忽略。


一些有用的提示,以避免此特定错误是:

  • if(1 == variable)而不是if(variable == 1),因为第一次提出了一个汇编(如果你只使用一个=号)错误,第二个没有按”吨;
  • 的比较定义的名称,例如:#define EQUALS ==这将允许你做if(variable EQUALS 10)
+0

谢谢,我不能相信我花了一个多小时,为什么它不工作会感到困惑! – Gaarsin

0

当您在C程序中,始终让所有的编译器警告,你可以找到。 C不是初学者友好的语言,它为你提供了很多方法来在脚下射击自己。启用编译器警告可以防止这些方法中的一些。

当您使用GCC时,至少启用-Wall -Wextra警告。他们会警告您在if条件中使用赋值运算符=而不是比较运算符==