2

我刚开始使用 C,但我对 PHP 有一些了解,所以我决定做一些“更复杂”的东西,作为初学者:)

我使用了两个嵌套循环来打印一个 50x50 的数组。它不是很慢,但我包含了一个带有箭头键的移动,以在阵列周围移动一个符号 X(玩家)。每次移动时,都需要刷新整个数组,我这样做是:

system("cls");
for(x=0;x<50;x++)
{
    for(y=0;y<50;y++)
    {
         printf("%c",table[x][y]);
    }
    printf("\n");
}

这是一个非常草率的解决方案,整个阵列在每次移动后都会“闪烁”。

在 C 中有没有更有效的方法来做到这一点?

4

3 回答 3

2

您可能必须使用某种 shell 图形库(例如ncurses)来在数组周围移动内容,而不会在重绘时闪烁。当您仅使用 printf 将网格显示为输出时,没有一种简单的方法可以避免这种情况。

于 2012-10-13T00:16:28.370 回答
1

我假设您使用的是 Windows(因为 cls)。

也许 ANSI.SYS 转义序列是没有库的最简单方法。

如果您移动光标并覆盖显示内容而不清除旧内容,您可能可以避免闪烁。

于 2012-10-13T00:28:30.407 回答
0

有一个使用 Win32 控制台的“读取和写入字符和属性块”的示例:

http://msdn.microsoft.com/en-us/library/ms685032%28v=vs.85%29.aspx

编辑:解释了链接。

于 2012-10-13T00:52:19.553 回答