【发布时间】:2016-01-12 23:28:52
【问题描述】:
我正在努力掌握如何解决如何在 C 中的终端中制作简单的 ASCII 动画的问题。
作为我的课堂作业,我需要用 C 语言制作简单的康威生活游戏。游戏“棋盘”将存储在一维数组中。行数和列数取自用户输入。我在终端中通过滚动显示它没有问题,但我希望它是正确的动画,没有终端滚动和显示垃圾(不是项目中的实际代码,只是试图解释)
void draw(int *board, rows, columns){
for(int j =0; j < rows; j++){
for(int i = 0; i < columns;i++){
printf((*board+i));
} printf("/n");
}
/*****************************************************************
Here I would like to have code that clears terminal screen , returns
carriage to the begging so on the next call of function
draw(int*board...) terminal windows is clear and next frame will be
drawn without being garbage, as if it would be the first printf
being called in this program, after waiting 33 miliseconds ( sleep() ?)
******************************************************************/
runGame(); /* actual game code does game of life stuff in the array*/
}
经过多次尝试,我没有找到任何有用的东西或任何实际可行的东西。我不想使用 ncurses,因为这个项目需要尽可能精简和核心。
我不要求您为我编写代码! (太好了:P) 我只是想听听您的想法以及我应该使用什么功能来清除终端窗口等。
非常感谢:)
【问题讨论】:
-
“我不想使用 ncurses” - 好吧,这是您唯一明智的选择。如果您编写自己的终端例程,它将不再是“精益和核心”。终端库是完成这项工作的正确工具。
-
我明白了。所以没有聪明的技巧可以在终端窗口中执行此操作,纯粹作为文本?什么都好。
-
所有聪明的终端黑客都未能说明一个重要的观点。终端不止一个,它们“唤醒并关注”的角色略有不同,提供的功能也略有不同。所以,一个试图让它们都属于一个 api(诅咒)的库是明智的选择。
标签: c terminal ascii conways-game-of-life