2016-11-26 84 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條件中使用賦值運算符=而不是比較運算符==