通过控制台移动角色

时间:2017-04-10 19:06:40

标签: c

只是一个简单的问题。我试图在C中为一个程序制作一个简单的动画,但我找不到通过控制台移动这个对象的方法。 我正在使用printf在控制台上绘制图形,我正在考虑使用gotoxy函数使其移动,但这似乎并没有移动对象。 这就是数字:

        printf("          / \\");
        printf("         // \\\\");
        printf("        //   \\\\");
        printf("       //     \\\\");
        printf("       ||     ||");
        printf("=======|| [ ] ||=======");
        printf("\\\\     || [ ] ||     //");
        printf(" \\\\====|| [ ] ||====//");
        printf("       +++++++++");
        printf("    // | | | | | \\\\");

我想要的是,当我选择动画的选项时,火箭需要像它一样上升。我做了一个for循环更改Y值,但它没有工作。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

在使用MSVC的Windows中,您可以这样做,避免操作系统交互。它基于打印换行符将所有文本移动的想法。假设控制台中有25行。我希望Linux解决方案非常相似。

#include <windows.h>
#include <stdio.h>

#define LINES 25

int main(void) {
    for(int i = 0; i < LINES; i++) {            // clear console
        printf("\n");
    }

    printf("          / \\\n");                 // added newline to each of these lines
    printf("         // \\\\\n");
    printf("        //   \\\\\n");
    printf("       //     \\\\\n");
    printf("       ||     ||\n");
    printf("=======|| [ ] ||=======\n");
    printf("\\\\     || [ ] ||     //\n");
    printf(" \\\\====|| [ ] ||====//\n");
    printf("       +++++++++\n");
    printf("    // | | | | | \\\\\n");
    Sleep(3000);                                // start the burn

    for(int i = 0; i < LINES; i++) {
        Sleep(200);
        printf("\n");                           // lift-off
    }
    return 0;
}

答案 1 :(得分:0)

你应该使用clear screen选项,并在下次重新绘制另一个条件。

如何在C中清除屏幕取决于您使用的编译器。如果你使用c ++使用

multiprocessing.Lock

否则查找this article