gpt4 book ai didi

c# - 如何将 Sprite 随机移动到控制台C#中的某个点

转载 作者:太空宇宙 更新时间:2023-11-03 22:38:35 24 4
gpt4 key购买 nike

我有一个 Sprite 在控制台中随机移动。它一次向左、向右、向上或向下移动

.假设 Sprite 从position X=5,position Y=5开始移动

如何让它到达屏幕中的某个位置,例如 position X=20position 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com