PC6下载站

分类分类

教你用c写个能发炮弹的ascii坦克车

关注+2009-11-06作者:

昨天yangxi推荐unbunt下的一个ascii动画, 有兴趣的可以apt-get install sl看下效果。

今天中午利用休息的时间写了类似的程序, 绝对比那个震撼, 有兴趣的朋友可以拿gcc编译下看看效果。

BTW: 程序员们赶快行动起来吧, Program Just For Fun!

/*
* Program Just For Fun
*
* by wzt       http://hi.baidu.com/wzt85
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LENTH           7
#define WIDTH           155

#define SLEEP_TIME      30000
#define ENTER_NUM       20

char fun_ascii[LENTH][WIDTH] = {
"                                                                                                                                                  |       ",
"                                                                                                                                            _\\--__|_     ",
"                                                                                                                           II=======OOOOO[/ *02 ___|      ",
"                                                                                                                                      ____\\______|/-----.",
"                                                                                                                                    /____________________|",
"                                                                                                                                   \\@@@@@@@@@@@@@@@@@@@/ ",
"                                                                                                                                     ~~~~~~~~~~~~~~~~~~~ "
};

int g_shoot_pos;
int g_shoot_pos_static;

void display_ascii(void);
void print_enter(void);

void move_ascii(void)
{
        int i, j;

        for (i = 0; i < LENTH; i++) {
                for (j = 0; j < WIDTH; j++) {
                        if (fun_ascii[i][j] != ' ') {
                                fun_ascii[i][j - 1] = fun_ascii[i][j];
                                fun_ascii[i][j] = ' ';
                        }
                }
        }
}

void shoot_init(void)
{
        int i, j;

        for (j = 0; j < WIDTH; j++) {
                if (fun_ascii[2][j] != ' ')
                        break;
        }
        --j;

        g_shoot_pos_static = g_shoot_pos = j;
}

void shoot_begin(void)
{
        fun_ascii[2][g_shoot_pos] = 'O';

        system("clear");
        print_enter();
        display_ascii();
        fun_ascii[2][g_shoot_pos] = ' ';
}

void shoot_ascii(void)
{
        int i;

        i = WIDTH / 2 - 1;

        while (i > 0 && g_shoot_pos > 0) {
                shoot_begin();
                g_shoot_pos--;
                usleep(SLEEP_TIME);
                i--;
        }
}

void do_shoot_ascii(void)
{
        int i = 3;

        shoot_init();

        while (i > 0) {
                shoot_ascii();
                g_shoot_pos = g_shoot_pos_static;
                i--;
        }
}

void display_ascii(void)
{
        int i, j;

        for (i = 0; i < LENTH; i++) {
                for (j = 0; j < WIDTH; j++)
                        printf("%c", fun_ascii[i][j]);
                printf("\n");
        }
}

void print_enter(void)
{
        int i;

        for (i = 0; i < ENTER_NUM; i++)
                printf("\n");
}

int main(void)
{
        int i = WIDTH;

        while (i > 0) {
                if (i == (WIDTH / 2)) {
                        do_shoot_ascii();
                        i--;
                        continue;
                }
                system("clear");
                print_enter();
                move_ascii();
                display_ascii();
                i--;
                usleep(SLEEP_TIME);
        }

        return 0;
}

展开全部

相关文章

更多+相同厂商

热门推荐

  • 最新排行
  • 最热排行
  • 评分最高
排行榜

    点击查看更多

      点击查看更多

        点击查看更多

        说两句网友评论

          我要评论...
          取消