按更改对象值的轮次打印高度



我正在尝试一轮一轮地打印对象的高度。它从100英尺的高度开始。问题是,它可以上升或下降,具体取决于每回合花费多少能量。我很难解释我会超过 100---初始起始高度的情况。目标是在游戏对象高度旁边出现一个星号,向下舍入最接近的 10 值;

我尝试在满足相反条件时递增 I,但它只会淹没控制台。也许我的逻辑感在这里完全不对劲。

public void printlocation(Object gameObject)
{
    int heightToPrint = (gameObject.GetHeight() - (gameObject.GetHeight() % 10));
    for (int i = heightToPrint; i >= 0; i -= 10)
    {
        if (i == heightToPrint)   
        {
            Console.WriteLine($"{i}m:*");
        }
        else
        {
            Console.WriteLine($"{i}m:");
        }
    }
}

就目前而言,它为 for 循环的每次迭代打印星号。

你写的是else if (i >= heightToPrint)而不是else if (i == heightToPrint).也不要在循环的主体中做i += 10;。您已经在循环访问从 100 到 0 的所有值。物体是向上移动还是向下移动都没有区别。只需在高度打印一个"*"。

但是你可以更容易地做到这一点

public void printlocation(Object gameObject)
{
    int heightToPrint = gameObject.GetHeight() % 10;
    for (int i = 100; i >= 0; i -= 10)
    {
        Console.WriteLine($"{i}m:{(i == heightToPrint ? "*" : "")}");
    }
}

最新更新