【问题标题】:Making an int be multiple values?使 int 成为多个值?
【发布时间】:2017-02-17 16:23:02
【问题描述】:

有没有办法让一个 int 值是多个值? 在这里你可以看到代码,我正在做一个小游戏作为概念证明。 目前我有 x 发生在循环编号 4 和 y 发生在循环编号 9。

有什么方法可以在其他循环上重复这些操作,而不会像这样把它弄得一团糟:i == 4||i == 14 ||我 == 18

我想问的是是否可以只写 i == 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();
}

【问题讨论】:

    标签: c# for-loop int


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      存储要检查的整数列表,然后使用.Contains

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

      【讨论】:

        【解决方案3】:

        在某些情况下,您可以执行按位测试以查看您的号码中是否设置了某些位:

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

        对您的问题的一般回答是否定的,只有使用有关您正在测试的值的额外知识然后使用该知识才有意义。

        另一个选项是测试一个数字是否属于一个序列,就像 HHLV 在其他答案中所说的那样。

        那么,你是如何得到值 4、14 和 18 的?

        【讨论】:

        • 根据代码,它看起来像是在循环中特定时间运行的动画,猜测 i 是循环中帧的时间。我的猜测是 OP 正试图通过检查 i 来重用动画资产。
        • 我不认为按位对这个很有效,因为 OP 想要特定的数字,按位会给出比 OP 想要的更多的数字,或者需要一个非常复杂的检查,这是 OP 试图避免的.
        猜你喜欢
        • 2012-11-20
        • 1970-01-01
        • 1970-01-01
        • 2013-06-17
        • 2017-04-22
        • 2018-06-03
        • 1970-01-01
        • 2022-06-17
        • 1970-01-01
        相关资源
        最近更新 更多