2017-02-17 50 views
0

有什麼辦法可以有一個int值是多個值? 在這裏你可以看到代碼,我做一個小遊戲作爲概念驗證。 目前我有x發生在循環編號4和y發生在循環編號9.使一個int是多個值?

是否有任何方法來重複其他循環上的行動,而不是像它這樣的巨大混亂:i == 4 || i = = 14 ||我== 18

即時通訊設法要問的是,如果它可能只是寫我== a ,然後有多個值。

如果你還沒有弄清楚,那麼我就是C#的初學者,所以如果你能以一種容易理解的方式解釋它,我會非常感謝。 如果我寫的東西有點難以理解,那麼很抱歉不是一個母語爲英語的人,只是問你是否不確定我的意思。

for (int i = 0; i < 50; i++) 
{ 
    string input; 
    input = Console.ReadKey().Key.ToString(); 
    Console.Clear(); 
    if (input == "A") Animation.frame1(); 
    else Animation.fall(); 
    if (i == 4) Animation.blocklow2(); 
    if (i == 9) Animation.blockhigh2(); 
    input = Console.ReadKey().Key.ToString(); 
    Console.Clear(); 
    if (input == "W" && i == 4) Animation.blockjump(); 
    if (input == "S" && i == 9) Animation.blockduck(); 
    if (input == "D" && i != 4 && i != 9) Animation.frame2(); 
    else if (input != "W" && i == 4) Animation.fall(); 
    else if (input != "S" && i == 9) Animation.smack(); 
    if (i == 3) Animation.blocklow(); 
    if (i == 8) Animation.blockhigh(); 
} 

回答

4

您可以使用if (new int[] { 4, 14, 18 }.Contains(i))來檢查多個值。

0

在某些情況下,你可以進行按位測試,看看是否有些位在你的電話號碼設置:

if ((x & 4) != 0) 
{ 
    // This case covers numbers 
    // 4, 5, 6, 7, 12, 13, 14, and many others... 
} 

一般回答你的問題是NO,它纔有意義,使用約值附加知識你正在測試,然後使用這些知識。

另一種選擇是測試一個數字是否屬於一個序列,就像HHLV在其他答案中所說的那樣。

那麼,你是如何得到值4,14和18?

+0

基於代碼,它看起來就像是在特定的時間在一個循環中運行,猜我是幀的時間動畫在循環。我的猜測是OP正試圖通過檢查我來重用動畫資產。 – Andrew

+0

我不認爲這樣做會很順利,因爲OP需要特定的數字,按位會給出比OP想要的更多的數字,或者需要一個非常複雜的檢查,這是OP試圖避免的檢查。 – Andrew

1

商店要覈對,然後INTS的列表中使用.Contains

List<int> frame2ints = new List<int>{4,9}; 
if (input == "D" && !frame2ints.Contains(i)) Animation.frame2();