如何在不重复所有未更改值的情况下对控制台输出进行小的更改
How to make small changes for console output without repeating all unchanged values
我正在尝试使用控制台界面在 C# 中创建文字游戏
基本流程是这样的:
- 接受用户输入。
- 根据用户输入操作地图(二维数组)。
- 打印地图。
- 重复。
游戏运行良好,但我的问题是每当您尝试移动角色时它都会闪烁,因为它每次都必须经过整个嵌套的 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);
}
我正在尝试使用控制台界面在 C# 中创建文字游戏
基本流程是这样的:
- 接受用户输入。
- 根据用户输入操作地图(二维数组)。
- 打印地图。
- 重复。
游戏运行良好,但我的问题是每当您尝试移动角色时它都会闪烁,因为它每次都必须经过整个嵌套的 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);
}