我如何像动画一样在c中移动字母

时间:2018-08-02 07:30:17

标签: c

我想给出输出,例如字母“ O”正像球行进一样从音高的另一端移向中间的树桩。但我无法获得该输出。所以我该如何更正以获得我的输出

Sale

1 个答案:

答案 0 :(得分:0)

以下是通过完全重绘来实现动画的示例:

#include<stdio.h>
#include<unistd.h>

#define HEIGHT 22
#define WIDTH  17 

void ball();
char ground[HEIGHT][WIDTH]=
           {
           "       _ _     ",
           "      | | |    ",
           "      | | |    ",
           " _____|_|_|____",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           "|               |",
           " _______________"};

int main() {
    for (int time = 0, x= 3, y = 5; time < 7; ++time, ++x, ++y) {
        printf("\e[1;1H\e[2J");
        char prev = ground[x][y];
        ground[x][y] = 'O';
        ball();
        ground[x][y] = prev;
        sleep(1);
    }
    return 0;
}

void ball() {
    for(int i=0; i<HEIGHT; i++) {
        printf("\n");
        for(int j=0; j<WIDTH; j++)
            printf("%c",ground[i][j]);
    }
    printf("\n");
}

每个迭代清除屏幕(奇怪的printf),将球保存在上面,打印整个电路板,为下一次迭代做准备,最后睡一秒钟以确保动画不打得太快了。 玩xy的逻辑来获得想要的动作。