while (true)
{
Console.Clear();
for (int row = 0; row < 50; row++)
{
for (int col = 0; col < 50; col++)
{
Console.Write(world[row, col]);
}
Console.WriteLine();
}
Thread.Sleep(500);
}
我正在写一个游戏,我有一个数字,由10个字符组成。当单击某些箭头按钮时,我希望它在一个字符数组中移动。问题是这个游戏根本不流畅。使用Console.Clear()
时,控制台反复闪烁,这很烦人。有没有解决这个问题的方法? (如果我不想使用Console.SetCursorPosition()
,因为这使得制作这个游戏变得更加困难)。
答案 0 :(得分:2)
尝试将所有场景加在1个字符串中,而不是一次绘制,这会将闪烁效果(隐藏)隐藏到某一点:
string scene = "";
// iterate your array to construct the scene string
for (int row = 0; row < 50; row++)
{
for (int col = 0; col < 50; col++)
{
scene += world[row, col];
}
scene += '\n'; // new line
}
Console.Clear(); // thanx David
Console.Write(scene);
答案 1 :(得分:2)
我自己从未这样做过,但你可以通过加倍Console.BufferHeight的大小来创造一个穷人的双缓冲方案。当您准备好绘制时,Console.SetCusorPosition()一次到屏幕外缓冲区的开头,像平常一样绘制场景,然后使用Console.MoveBufferArea()移动新近绘制的屏幕外场景到屏幕上。
答案 2 :(得分:0)
它闪烁是因为 Console.Clear() 太慢了。 要加快速度,请使用以下任一方法增加缓冲区大小:
Console.BufferHeight = int;
Console.BufferWidth = int;
或者这个:
Console.SetBufferSize(width, height);