Console.Clear() 闪烁

Console.Clear() blinking

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(),因为它让制作这个游戏变得更加困难)。

尝试将所有场景汇总到 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);

我自己从未这样做过,但您可以通过将 Console.BufferHeight. When you're ready to draw, Console.SetCusorPosition() one time to the beginning of the off-screen buffer area, draw your scene like normal, and then use Console.MoveBufferArea() 的大小加倍来创建穷人的双缓冲方案,以将新绘制的屏幕外场景移动到屏幕上。

它闪烁是因为 Console.Clear() 太慢了。 要加快速度,请使用以下任一方法增加缓冲区大小:

Console.BufferHeight = int;
Console.BufferWidth = int;

或者这个:

Console.SetBufferSize(width, height);