kumaコマンド作ってみた.

blコマンドを参考にkumaコマンドを作ってみた.特に後悔はしていない.

ソースは以下.

/* 
 * Ubuntu 12.0.4:
 * cc -O -o kuma kuma.c -lncursesw -ltermcap
 * Mac OSX
 * cc -O -o kuma kuma.c -lncurses -ltermcap
 * */

#include <locale.h>
#include <ncurses.h>
#include <signal.h>
#include <unistd.h>

#define KUMA_WIDTH 24
#define KUMA_HIGHT 12

void main(int argc, char *argv[])
{
    int x, y, lines;

    setlocale(LC_ALL,"");
    initscr();
    signal(SIGINT, SIG_IGN);
    noecho();
    leaveok(stdscr, TRUE);
    scrollok(stdscr, FALSE);
    y = LINES/2;
    for(x = COLS-KUMA_WIDTH; x >=0; x--){
        clear();
        if(add_kuma(x, y) == ERR) break;
        refresh();
        usleep(20000);
        if(x == 0) usleep(80000);
    }

    mvcur(0, COLS - 1, LINES - 1, 0);
    refresh();
    usleep(100000);
    endwin();
}


int add_kuma(int x, int y)
{
    int s;
    char *str[12];
    str[0] = "  ∩___∩";
    str[1] = "  | ノ   ヽ";
    str[2] = " / ●   ● | クマ──!!";
    str[3] = " |  ( _●_) ミ";
    str[4] = "彡、  |∪| 、`\";
    str[5] = " /_  ヽノ /´>  )";
    str[6] = "(__)   / (_/";
    str[7] = "  |     /";
    str[8] = " |  /\ \";
    str[9] = " | /   )  )";
    str[10]= " ∪     ( \";
    str[11]= "          \_) ";
    for(s = 0 ;s < KUMA_HIGHT-1;s++){
        if(mvaddstr(y+s, x, str[s]) == ERR) return ERR;
    }
    return 0;
}