用C语言重画数组

用C语言重画数组,c,arrays,loops,for-loop,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]); }

我刚开始学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");
}
系统(“cls”);

对于(x=0;x您可能需要使用某种shell图形库,如ncurses来移动阵列中的内容,而在重新绘制阵列时,阵列不会闪烁。当您仅使用printf将网格显示为输出时,没有简单的方法可以避免这种情况。

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

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

如果在不清除旧内容的情况下移动光标并覆盖显示内容,可能可以避免闪烁。

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


编辑:解释了链接。

Oops。根据,这已经不起作用了(除非你有NT或旧版本的windows)。但该页面提到了Win32控制台API。我无法测试它,坐在linux机箱前-可能转义序列仍然起作用,但没有ANSI.SYS“驱动程序”?虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,则仅链接的答案可能无效。