【问题标题】:Moving characters through the console通过控制台移动角色
【发布时间】:2017-09-05 23:11:04
【问题描述】:

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

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

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

【问题讨论】:

  • 禁用输出缓冲,一次打印 1 个字符,sleep ?
  • 你是在windows上还是在unix之类的操作系统上?
  • 对不起,我忘记了,呵呵,我正在用我在互联网上找到的一些代码进行一些测试,我用我拥有的 java 代码重写了这个图。我在 Windows 上。

标签: c


【解决方案1】:

在带有 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;
}

【讨论】:

    【解决方案2】:

    你应该使用清屏选项,下次在另一个条件下重新绘制你的火箭。

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

    system("cls");
    

    否则查找this article

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多