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

标签 c# console-application

我有一个 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/

相关文章:

c# - 键值对作为控制台应用程序中的参数

c# - Winforms 中 Console.WriteLine() 的目的是什么

java - 计算器控制台应用程序无法运行

c# - 如何将sql语句改为参数化查询?

c# - 在 appsettings.json 日志记录上下文中,MinimumLevel 和 Override 意味着什么?

c - 当我将一个字符串 strcpy 到另一个字符串时,有一个空格

c# - 验证字符串仅包含 C# 控制台应用程序中的字母

c# - 使用 dotnet restore 的 Docker 导致错误 : GSSAPI operation failed - An unsupported mechanism was requested

c# - 如何分割字符串并将每个单词分配给一个新变量?

c# - 如何将 zip 文件发送到 ASP.NET WebApi