【发布时间】:2019-12-17 16:30:48
【问题描述】:
我正在尝试用双数组和宏在 c 语言中创建一个类似迷宫的游戏。 但是打印整个迷宫的时间太长了。 有没有更快的方法。
#define SIZER 25 //row
#define SIZEC 50 //column
#define WALL "\xDB"
#define MAN "O"
#define ENEMY "\x40"
#define EMPTY " "
void print_game()
{
int i,j;
for(i=0;i<SIZER;++i){
for(j=0;j<SIZEC;++j){
if(game[i][j]==w)
printf(WALL);
else if(game[i][j]==m)
printf(MAN);
else if(game[i][j]==x)
printf(ENEMY);
else if(game[i][j]==e)
printf(EMPTY);
if(j==SIZEC-1)
printf("\n");
}
}
}
【问题讨论】:
-
你能用
ncurses吗? -
我宁愿不这样做。但如果它们那么有效,我可能会尝试。
-
不是多次调用
printf,而是每次打印一个字符,而是缓冲整个屏幕并通过一次调用一次打印所有内容。 -
@RobertStiffler 你能再描述一下吗。或者给我一个关于它的研究课题。因为我对 c 编程非常陌生,对缓冲区操作了解不多。
-
使用当前的实现,您调用
printf20x50=1000 次来打印板。为整个游戏板构建一个字符串并只调用一次printf会更有效。缓冲区可以像char buffer[1300]一样简单。您需要 1300 个字符 (26x50),因为您需要在每行末尾添加换行符。
标签: c arrays loops optimization nested