在C中重绘数组

时间:2012-10-13 00:08:57

标签: c arrays loops for-loop

我刚开始使用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中有更有效的方法吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我假设你正在使用Windows(因为cls)。

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

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

答案 2 :(得分:0)

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

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

编辑:解释了链接。