如何在不重复所有未更改值的情况下对控制台输出进行小的更改

How to make small changes for console output without repeating all unchanged values

我正在尝试使用控制台界面在 C# 中创建文字游戏

基本流程是这样的:

  1. 接受用户输入。
  2. 根据用户输入操作地图(二维数组)。
  3. 打印地图。
  4. 重复。

游戏运行良好,但我的问题是每当您尝试移动角色时它都会闪烁,因为它每次都必须经过整个嵌套的 for 循环才能打印出地图。

我可以更改控制台输出的不同部分以避免闪烁吗?

我目前每一步显示地图的实际代码:

Console.Clear();
for (int y = 0; y < 15; y++)
{
    for (int x = 0; x < 58; x++)
    {
        // map is an array with current state for each cell on the map
        Console.Write(map[y, x]);
    }
    Console.WriteLine();
}

您不应该为每个周期重印所有地图。更好的方法是使用 Console.SetCursorPosition 方法并重写刚刚修改的符号:

foreach(var changedSymbol in changes)
{
    Console.SetCursorPosition(changedSymbol.Row, changedSymbol.Column)
    Console.Write(changedSymbol.Value);
}