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);
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);