我有一个 Sprite 在控制台中随机移动。它一次向左、向右、向上或向下移动
.假设 Sprite 从position X=5,position Y=5开始移动
如何让它到达屏幕中的某个位置,例如 position X=20 和 position Y=10?
public void Draw()
{
Console.SetCursorPosition(PositionX, PositionY);
Console.Write(Sprite);
}
public void RandomMove()
{
var number = Random.Next(1, 5);
switch (number)
{
case 1:
PositionX++; //Move Down
break;
case 2:
PositionX--; Move Up
break;
case 3:
PositionY--; Move Left
break;
case 4:
PositionY++; Move Right
break;
}
}
while(true)
{
RandomMove();
Draw()
}
最佳答案
使用Random生成随机位置
查看 Victor Laio 的代码示例。您需要为 Next
提供两个参数,一个是下限,一个是上限。
确保将光标放在屏幕上可见的位置。
为了实现这一点,您可以在 Console
类上使用以下静态属性:
Console.WindowTop
- 获取最顶部可见位置。Console.WindowLeft
- 获取最顶层可见位置。Console.WindowWidth
- 获取一行中的可见字符数。Console.WindowHeight
- 获取控制台中的可见行数。
将光标放到想要的位置
您可以使用 SetCursorPosition
方法。例如:Console.SetCursorPosition(10, 10);
综合考虑
以下示例将光标设置为每次按键时的随机位置。请注意,我没有从 maxLeft
中减去 1,因为 Random.Next
采用独占上限。
internal class Program
{
private static void Main(string[] args)
{
Random r = new Random();
while (true)
{
Console.ReadKey();
int minLeft = Console.WindowLeft;
int maxLeft = Console.WindowLeft + Console.WindowWidth;
int minTop = Console.WindowTop;
int maxTop = Console.WindowTop + Console.WindowHeight;
Console.SetCursorPosition(r.Next(minLeft, maxLeft), r.Next(minTop, maxTop));
// ...
}
}
}
关于c# - 如何将 Sprite 随机移动到控制台C#中的某个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53638815/