如何对控制台输出进行小的更改,而不重复所有未更改的值
本文关键字:输出 控制台 | 更新日期: 2023-09-27 18:15:46
我正在尝试用c#创建一个带有控制台界面的文本游戏
基本流程如下:
- 接受用户输入
- 根据用户输入操作地图(2d数组)
- 打印地图
- 重复。
游戏运行良好,但我的问题是,它闪烁每当你试图移动角色,因为它必须通过整个嵌套的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);
}