有没有办法一次性打印大型二维数组?

问题描述 投票:0回答:1

所以我正在为控制台中发生的一种游戏编写一个程序,我需要每秒打印一个二维数组 20 次,并以所需的方式移动每个元素。因此,通过一遍又一遍地打印数组并每次移动一点元素,我给出了运动的错觉。我的问题是,当我以经典方式(嵌套循环)打印这个数组时,它需要时间,这会导致我的游戏变得有些滞后,并且元素似乎一直在闪烁,因为每次屏幕都会被清除并且数组会再次打印。我知道我可以使用 ncurses 库以更有效的方式制作这个游戏,但这不是我现在正在做的。

我尝试使用 windows.h 库中名为 WriteConsoleOutputCharacter 的东西,但我无法让它工作。 in 会打印一次控制台,停止,然后意外结束程序。我不知道我在那里做错了什么,但无论如何我是新手,我不知道该功能是如何工作的。如果 WriteConsoleOutputCharacter 是解决方案,我希望您能对其进行一些扩展并引导我完成。预先感谢。

c windows winapi multidimensional-array
1个回答
0
投票

我建议你使用双缓冲来防止控制台闪烁。

您可以使用函数

CreateConsoleScreenBuffer
为您的控制台创建额外的缓冲区。

然后您可以写入非活动缓冲区。一旦非活动缓冲区准备好显示,您可以使用功能

SetConsoleActiveScreenBuffer
切换缓冲区。

© www.soinside.com 2019 - 2024. All rights reserved.