├── .gitignore ├── LICENSE ├── Makefile ├── README.ja.md ├── README.md ├── demo.gif ├── sl.1 ├── sl.1.ja ├── sl.c └── sl.h /.gitignore: -------------------------------------------------------------------------------- 1 | /sl 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 1993,1998,2014 Toyoda Masashi (mtoyoda@acm.org) 2 | 3 | Everyone is permitted to do anything on this program including copying, 4 | modifying, and improving, unless you try to pretend that you wrote it. 5 | i.e., the above copyright notice has to appear in all copies. 6 | THE AUTHOR DISCLAIMS ANY RESPONSIBILITY WITH REGARD TO THIS SOFTWARE. 7 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | #========================================== 2 | # Makefile: makefile for sl 5.1 3 | # Copyright 1993, 1998, 2014 4 | # Toyoda Masashi 5 | # (mtoyoda@acm.org) 6 | # Last Modified: 2014/03/31 7 | #========================================== 8 | 9 | CC=gcc 10 | CFLAGS=-O -Wall 11 | 12 | all: sl 13 | 14 | sl: sl.c sl.h 15 | $(CC) $(CFLAGS) -o sl sl.c -lncurses 16 | 17 | clean: 18 | rm -f sl 19 | 20 | distclean: clean 21 | -------------------------------------------------------------------------------- /README.ja.md: -------------------------------------------------------------------------------- 1 | SL: キータイプ矯正ソフト 2 | ======================== 3 | 4 | むかしにも投稿された冗談ソフトの sl の豪華版です。 5 | アイデアは借り物ですが、プログラム自体は私のオリジナルです。 6 | いまさらながら若干アップデートしました。 7 | a,l,F,c オプションが有効です。機能は実行して確かめてください。 8 | 9 | Copyright 1993,1998,2014 Toyoda Masashi (mtoyoda@acm.org) 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SL(1): Cure your bad habit of mistyping 2 | ======================================= 3 | 4 | SL (Steam Locomotive) runs across your terminal when you type "sl" as 5 | you meant to type "ls". It's just a joke command, and not useful at 6 | all. 7 | 8 | Copyright 1993,1998,2014 Toyoda Masashi (mtoyoda@acm.org) 9 | 10 | ![](demo.gif) -------------------------------------------------------------------------------- /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mtoyoda/sl/923e7d7ebc5c1f009755bdeb789ac25658ccce03/demo.gif -------------------------------------------------------------------------------- /sl.1: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright 1993,1998,2014 Toyoda Masashi (mtoyoda@acm.org) 3 | .\" 4 | .\" @(#)sl.1 5 | .\" 6 | .TH SL 1 "March 31, 2014" 7 | .SH NAME 8 | sl \- cure your bad habit of mistyping 9 | .SH SYNOPSIS 10 | .B sl 11 | [ 12 | .B \-alFc 13 | ] 14 | .SH DESCRIPTION 15 | .B sl 16 | is a highly advanced animation program for curing your bad habit of mistyping. 17 | .PP 18 | .TP 19 | .B \-a 20 | An accident is occurring. People cry for help. 21 | .TP 22 | .B \-l 23 | Little version. 24 | .TP 25 | .B \-F 26 | It flies like the galaxy express 999. 27 | .TP 28 | .B \-c 29 | C51 appears instead of D51. 30 | .PP 31 | .SH SEE ALSO 32 | .BR ls (1) 33 | .SH BUGS 34 | It sometimes lists directory contents. 35 | .SH AUTHOR 36 | Toyoda Masashi (mtoyoda@acm.org) 37 | -------------------------------------------------------------------------------- /sl.1.ja: -------------------------------------------------------------------------------- 1 | .\" 2 | .\" Copyright 1993,2014 Toyoda Masashi. 3 | .\" (mtoyoda@acm.org) 4 | .\" @(#)sl.1 5 | .\" 6 | .TH SL 1 "March 31, 2014" 7 | .SH 名称 8 | sl \- キータイプを矯正します。 9 | .SH 形式 10 | .B sl 11 | [ 12 | .B \-alF 13 | ] 14 | .SH 解説 15 | .B sl 16 | は、高度に発展した、キータイプ矯正を目的とするアニメーションプログラムです。 17 | .PP 18 | 次のようなオプションがあります。 19 | .TP 20 | .B \-a 21 | なにかアクシデントがあったようですね。助けを求める人々が悲痛です。 22 | .TP 23 | .B \-l 24 | 小さくなります。 25 | .TP 26 | .B \-F 27 | 飛びます。 28 | .TP 29 | .B \-c 30 | C51になります。 31 | .PP 32 | .SH 関連事項 33 | .BR ls (1) 34 | .SH バグ 35 | カレントディレクトリの内容が表示されることがあります。 36 | .SH 著者 37 | 豊田 正史 (mtoyoda@acm.org) 38 | -------------------------------------------------------------------------------- /sl.c: -------------------------------------------------------------------------------- 1 | /*======================================== 2 | * sl.c: SL version 5.03 3 | * Copyright 1993,1998,2014-2015 4 | * Toyoda Masashi 5 | * (mtoyoda@acm.org) 6 | * Last Modified: 2014/06/03 7 | *======================================== 8 | */ 9 | /* sl version 5.03 : Fix some more compiler warnings. */ 10 | /* by Ryan Jacobs 2015/01/19 */ 11 | /* sl version 5.02 : Fix compiler warnings. */ 12 | /* by Jeff Schwab 2014/06/03 */ 13 | /* sl version 5.01 : removed cursor and handling of IO */ 14 | /* by Chris Seymour 2014/01/03 */ 15 | /* sl version 5.00 : add -c option */ 16 | /* by Toyoda Masashi 2013/05/05 */ 17 | /* sl version 4.00 : add C51, usleep(40000) */ 18 | /* by Toyoda Masashi 2002/12/31 */ 19 | /* sl version 3.03 : add usleep(20000) */ 20 | /* by Toyoda Masashi 1998/07/22 */ 21 | /* sl version 3.02 : D51 flies! Change options. */ 22 | /* by Toyoda Masashi 1993/01/19 */ 23 | /* sl version 3.01 : Wheel turns smoother */ 24 | /* by Toyoda Masashi 1992/12/25 */ 25 | /* sl version 3.00 : Add d(D51) option */ 26 | /* by Toyoda Masashi 1992/12/24 */ 27 | /* sl version 2.02 : Bug fixed.(dust remains in screen) */ 28 | /* by Toyoda Masashi 1992/12/17 */ 29 | /* sl version 2.01 : Smoke run and disappear. */ 30 | /* Change '-a' to accident option. */ 31 | /* by Toyoda Masashi 1992/12/16 */ 32 | /* sl version 2.00 : Add a(all),l(long),F(Fly!) options. */ 33 | /* by Toyoda Masashi 1992/12/15 */ 34 | /* sl version 1.02 : Add turning wheel. */ 35 | /* by Toyoda Masashi 1992/12/14 */ 36 | /* sl version 1.01 : Add more complex smoke. */ 37 | /* by Toyoda Masashi 1992/12/14 */ 38 | /* sl version 1.00 : SL runs vomiting out smoke. */ 39 | /* by Toyoda Masashi 1992/12/11 */ 40 | 41 | #include 42 | #include 43 | #include 44 | #include "sl.h" 45 | 46 | void add_smoke(int y, int x); 47 | void add_man(int y, int x); 48 | int add_C51(int x); 49 | int add_D51(int x); 50 | int add_sl(int x); 51 | void option(char *str); 52 | int my_mvaddstr(int y, int x, char *str); 53 | 54 | int ACCIDENT = 0; 55 | int LOGO = 0; 56 | int FLY = 0; 57 | int C51 = 0; 58 | 59 | int my_mvaddstr(int y, int x, char *str) 60 | { 61 | for ( ; x < 0; ++x, ++str) 62 | if (*str == '\0') return ERR; 63 | for ( ; *str != '\0'; ++str, ++x) 64 | if (mvaddch(y, x, *str) == ERR) return ERR; 65 | return OK; 66 | } 67 | 68 | void option(char *str) 69 | { 70 | extern int ACCIDENT, LOGO, FLY, C51; 71 | 72 | while (*str != '\0') { 73 | switch (*str++) { 74 | case 'a': ACCIDENT = 1; break; 75 | case 'F': FLY = 1; break; 76 | case 'l': LOGO = 1; break; 77 | case 'c': C51 = 1; break; 78 | default: break; 79 | } 80 | } 81 | } 82 | 83 | int main(int argc, char *argv[]) 84 | { 85 | int x, i; 86 | 87 | for (i = 1; i < argc; ++i) { 88 | if (*argv[i] == '-') { 89 | option(argv[i] + 1); 90 | } 91 | } 92 | initscr(); 93 | signal(SIGINT, SIG_IGN); 94 | noecho(); 95 | curs_set(0); 96 | nodelay(stdscr, TRUE); 97 | leaveok(stdscr, TRUE); 98 | scrollok(stdscr, FALSE); 99 | 100 | for (x = COLS - 1; ; --x) { 101 | if (LOGO == 1) { 102 | if (add_sl(x) == ERR) break; 103 | } 104 | else if (C51 == 1) { 105 | if (add_C51(x) == ERR) break; 106 | } 107 | else { 108 | if (add_D51(x) == ERR) break; 109 | } 110 | getch(); 111 | refresh(); 112 | usleep(40000); 113 | } 114 | mvcur(0, COLS - 1, LINES - 1, 0); 115 | endwin(); 116 | 117 | return 0; 118 | } 119 | 120 | 121 | int add_sl(int x) 122 | { 123 | static char *sl[LOGOPATTERNS][LOGOHEIGHT + 1] 124 | = {{LOGO1, LOGO2, LOGO3, LOGO4, LWHL11, LWHL12, DELLN}, 125 | {LOGO1, LOGO2, LOGO3, LOGO4, LWHL21, LWHL22, DELLN}, 126 | {LOGO1, LOGO2, LOGO3, LOGO4, LWHL31, LWHL32, DELLN}, 127 | {LOGO1, LOGO2, LOGO3, LOGO4, LWHL41, LWHL42, DELLN}, 128 | {LOGO1, LOGO2, LOGO3, LOGO4, LWHL51, LWHL52, DELLN}, 129 | {LOGO1, LOGO2, LOGO3, LOGO4, LWHL61, LWHL62, DELLN}}; 130 | 131 | static char *coal[LOGOHEIGHT + 1] 132 | = {LCOAL1, LCOAL2, LCOAL3, LCOAL4, LCOAL5, LCOAL6, DELLN}; 133 | 134 | static char *car[LOGOHEIGHT + 1] 135 | = {LCAR1, LCAR2, LCAR3, LCAR4, LCAR5, LCAR6, DELLN}; 136 | 137 | int i, y, py1 = 0, py2 = 0, py3 = 0; 138 | 139 | if (x < - LOGOLENGTH) return ERR; 140 | y = LINES / 2 - 3; 141 | 142 | if (FLY == 1) { 143 | y = (x / 6) + LINES - (COLS / 6) - LOGOHEIGHT; 144 | py1 = 2; py2 = 4; py3 = 6; 145 | } 146 | for (i = 0; i <= LOGOHEIGHT; ++i) { 147 | my_mvaddstr(y + i, x, sl[(LOGOLENGTH + x) / 3 % LOGOPATTERNS][i]); 148 | my_mvaddstr(y + i + py1, x + 21, coal[i]); 149 | my_mvaddstr(y + i + py2, x + 42, car[i]); 150 | my_mvaddstr(y + i + py3, x + 63, car[i]); 151 | } 152 | if (ACCIDENT == 1) { 153 | add_man(y + 1, x + 14); 154 | add_man(y + 1 + py2, x + 45); add_man(y + 1 + py2, x + 53); 155 | add_man(y + 1 + py3, x + 66); add_man(y + 1 + py3, x + 74); 156 | } 157 | add_smoke(y - 1, x + LOGOFUNNEL); 158 | return OK; 159 | } 160 | 161 | 162 | int add_D51(int x) 163 | { 164 | static char *d51[D51PATTERNS][D51HEIGHT + 1] 165 | = {{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7, 166 | D51WHL11, D51WHL12, D51WHL13, D51DEL}, 167 | {D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7, 168 | D51WHL21, D51WHL22, D51WHL23, D51DEL}, 169 | {D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7, 170 | D51WHL31, D51WHL32, D51WHL33, D51DEL}, 171 | {D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7, 172 | D51WHL41, D51WHL42, D51WHL43, D51DEL}, 173 | {D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7, 174 | D51WHL51, D51WHL52, D51WHL53, D51DEL}, 175 | {D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7, 176 | D51WHL61, D51WHL62, D51WHL63, D51DEL}}; 177 | static char *coal[D51HEIGHT + 1] 178 | = {COAL01, COAL02, COAL03, COAL04, COAL05, 179 | COAL06, COAL07, COAL08, COAL09, COAL10, COALDEL}; 180 | 181 | int y, i, dy = 0; 182 | 183 | if (x < - D51LENGTH) return ERR; 184 | y = LINES / 2 - 5; 185 | 186 | if (FLY == 1) { 187 | y = (x / 7) + LINES - (COLS / 7) - D51HEIGHT; 188 | dy = 1; 189 | } 190 | for (i = 0; i <= D51HEIGHT; ++i) { 191 | my_mvaddstr(y + i, x, d51[(D51LENGTH + x) % D51PATTERNS][i]); 192 | my_mvaddstr(y + i + dy, x + 53, coal[i]); 193 | } 194 | if (ACCIDENT == 1) { 195 | add_man(y + 2, x + 43); 196 | add_man(y + 2, x + 47); 197 | } 198 | add_smoke(y - 1, x + D51FUNNEL); 199 | return OK; 200 | } 201 | 202 | int add_C51(int x) 203 | { 204 | static char *c51[C51PATTERNS][C51HEIGHT + 1] 205 | = {{C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7, 206 | C51WH11, C51WH12, C51WH13, C51WH14, C51DEL}, 207 | {C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7, 208 | C51WH21, C51WH22, C51WH23, C51WH24, C51DEL}, 209 | {C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7, 210 | C51WH31, C51WH32, C51WH33, C51WH34, C51DEL}, 211 | {C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7, 212 | C51WH41, C51WH42, C51WH43, C51WH44, C51DEL}, 213 | {C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7, 214 | C51WH51, C51WH52, C51WH53, C51WH54, C51DEL}, 215 | {C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7, 216 | C51WH61, C51WH62, C51WH63, C51WH64, C51DEL}}; 217 | static char *coal[C51HEIGHT + 1] 218 | = {COALDEL, COAL01, COAL02, COAL03, COAL04, COAL05, 219 | COAL06, COAL07, COAL08, COAL09, COAL10, COALDEL}; 220 | 221 | int y, i, dy = 0; 222 | 223 | if (x < - C51LENGTH) return ERR; 224 | y = LINES / 2 - 5; 225 | 226 | if (FLY == 1) { 227 | y = (x / 7) + LINES - (COLS / 7) - C51HEIGHT; 228 | dy = 1; 229 | } 230 | for (i = 0; i <= C51HEIGHT; ++i) { 231 | my_mvaddstr(y + i, x, c51[(C51LENGTH + x) % C51PATTERNS][i]); 232 | my_mvaddstr(y + i + dy, x + 55, coal[i]); 233 | } 234 | if (ACCIDENT == 1) { 235 | add_man(y + 3, x + 45); 236 | add_man(y + 3, x + 49); 237 | } 238 | add_smoke(y - 1, x + C51FUNNEL); 239 | return OK; 240 | } 241 | 242 | 243 | void add_man(int y, int x) 244 | { 245 | static char *man[2][2] = {{"", "(O)"}, {"Help!", "\\O/"}}; 246 | int i; 247 | 248 | for (i = 0; i < 2; ++i) { 249 | my_mvaddstr(y + i, x, man[(LOGOLENGTH + x) / 12 % 2][i]); 250 | } 251 | } 252 | 253 | 254 | void add_smoke(int y, int x) 255 | #define SMOKEPTNS 16 256 | { 257 | static struct smokes { 258 | int y, x; 259 | int ptrn, kind; 260 | } S[1000]; 261 | static int sum = 0; 262 | static char *Smoke[2][SMOKEPTNS] 263 | = {{"( )", "( )", "( )", "( )", "( )", 264 | "( )" , "( )" , "( )" , "()" , "()" , 265 | "O" , "O" , "O" , "O" , "O" , 266 | " " }, 267 | {"(@@@)", "(@@@@)", "(@@@@)", "(@@@)", "(@@)", 268 | "(@@)" , "(@)" , "(@)" , "@@" , "@@" , 269 | "@" , "@" , "@" , "@" , "@" , 270 | " " }}; 271 | static char *Eraser[SMOKEPTNS] 272 | = {" ", " ", " ", " ", " ", 273 | " " , " " , " " , " " , " " , 274 | " " , " " , " " , " " , " " , 275 | " " }; 276 | static int dy[SMOKEPTNS] = { 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 277 | 0, 0, 0, 0, 0, 0 }; 278 | static int dx[SMOKEPTNS] = {-2, -1, 0, 1, 1, 1, 1, 1, 2, 2, 279 | 2, 2, 2, 3, 3, 3 }; 280 | int i; 281 | 282 | if (x % 4 == 0) { 283 | for (i = 0; i < sum; ++i) { 284 | my_mvaddstr(S[i].y, S[i].x, Eraser[S[i].ptrn]); 285 | S[i].y -= dy[S[i].ptrn]; 286 | S[i].x += dx[S[i].ptrn]; 287 | S[i].ptrn += (S[i].ptrn < SMOKEPTNS - 1) ? 1 : 0; 288 | my_mvaddstr(S[i].y, S[i].x, Smoke[S[i].kind][S[i].ptrn]); 289 | } 290 | my_mvaddstr(y, x, Smoke[sum % 2][0]); 291 | S[sum].y = y; S[sum].x = x; 292 | S[sum].ptrn = 0; S[sum].kind = sum % 2; 293 | sum ++; 294 | } 295 | } 296 | -------------------------------------------------------------------------------- /sl.h: -------------------------------------------------------------------------------- 1 | /*======================================== 2 | * sl.h: SL version 5.02 3 | * Copyright 1993,2002,2014 4 | * Toyoda Masashi 5 | * (mtoyoda@acm.org) 6 | * Last Modified: 2014/06/03 7 | *======================================== 8 | */ 9 | 10 | #define D51HEIGHT 10 11 | #define D51FUNNEL 7 12 | #define D51LENGTH 83 13 | #define D51PATTERNS 6 14 | 15 | 16 | #define D51STR1 " ==== ________ ___________ " 17 | #define D51STR2 " _D _| |_______/ \\__I_I_____===__|_________| " 18 | #define D51STR3 " |(_)--- | H\\________/ | | =|___ ___| " 19 | #define D51STR4 " / | | H | | | | ||_| |_|| " 20 | #define D51STR5 " | | | H |__--------------------| [___] | " 21 | #define D51STR6 " | ________|___H__/__|_____/[][]~\\_______| | " 22 | #define D51STR7 " |/ | |-----------I_____I [][] [] D |=======|__ " 23 | 24 | #define D51WHL11 "__/ =| o |=-~~\\ /~~\\ /~~\\ /~~\\ ____Y___________|__ " 25 | #define D51WHL12 " |/-=|___|= || || || |_____/~\\___/ " 26 | #define D51WHL13 " \\_/ \\O=====O=====O=====O_/ \\_/ " 27 | 28 | #define D51WHL21 "__/ =| o |=-~~\\ /~~\\ /~~\\ /~~\\ ____Y___________|__ " 29 | #define D51WHL22 " |/-=|___|=O=====O=====O=====O |_____/~\\___/ " 30 | #define D51WHL23 " \\_/ \\__/ \\__/ \\__/ \\__/ \\_/ " 31 | 32 | #define D51WHL31 "__/ =| o |=-O=====O=====O=====O \\ ____Y___________|__ " 33 | #define D51WHL32 " |/-=|___|= || || || |_____/~\\___/ " 34 | #define D51WHL33 " \\_/ \\__/ \\__/ \\__/ \\__/ \\_/ " 35 | 36 | #define D51WHL41 "__/ =| o |=-~O=====O=====O=====O\\ ____Y___________|__ " 37 | #define D51WHL42 " |/-=|___|= || || || |_____/~\\___/ " 38 | #define D51WHL43 " \\_/ \\__/ \\__/ \\__/ \\__/ \\_/ " 39 | 40 | #define D51WHL51 "__/ =| o |=-~~\\ /~~\\ /~~\\ /~~\\ ____Y___________|__ " 41 | #define D51WHL52 " |/-=|___|= O=====O=====O=====O|_____/~\\___/ " 42 | #define D51WHL53 " \\_/ \\__/ \\__/ \\__/ \\__/ \\_/ " 43 | 44 | #define D51WHL61 "__/ =| o |=-~~\\ /~~\\ /~~\\ /~~\\ ____Y___________|__ " 45 | #define D51WHL62 " |/-=|___|= || || || |_____/~\\___/ " 46 | #define D51WHL63 " \\_/ \\_O=====O=====O=====O/ \\_/ " 47 | 48 | #define D51DEL " " 49 | 50 | #define COAL01 " " 51 | #define COAL02 " " 52 | #define COAL03 " _________________ " 53 | #define COAL04 " _| \\_____A " 54 | #define COAL05 " =| | " 55 | #define COAL06 " -| | " 56 | #define COAL07 "__|________________________|_ " 57 | #define COAL08 "|__________________________|_ " 58 | #define COAL09 " |_D__D__D_| |_D__D__D_| " 59 | #define COAL10 " \\_/ \\_/ \\_/ \\_/ " 60 | 61 | #define COALDEL " " 62 | 63 | #define LOGOHEIGHT 6 64 | #define LOGOFUNNEL 4 65 | #define LOGOLENGTH 84 66 | #define LOGOPATTERNS 6 67 | 68 | #define LOGO1 " ++ +------ " 69 | #define LOGO2 " || |+-+ | " 70 | #define LOGO3 " /---------|| | | " 71 | #define LOGO4 " + ======== +-+ | " 72 | 73 | #define LWHL11 " _|--O========O~\\-+ " 74 | #define LWHL12 "//// \\_/ \\_/ " 75 | 76 | #define LWHL21 " _|--/O========O\\-+ " 77 | #define LWHL22 "//// \\_/ \\_/ " 78 | 79 | #define LWHL31 " _|--/~O========O-+ " 80 | #define LWHL32 "//// \\_/ \\_/ " 81 | 82 | #define LWHL41 " _|--/~\\------/~\\-+ " 83 | #define LWHL42 "//// \\_O========O " 84 | 85 | #define LWHL51 " _|--/~\\------/~\\-+ " 86 | #define LWHL52 "//// \\O========O/ " 87 | 88 | #define LWHL61 " _|--/~\\------/~\\-+ " 89 | #define LWHL62 "//// O========O_/ " 90 | 91 | #define LCOAL1 "____ " 92 | #define LCOAL2 "| \\@@@@@@@@@@@ " 93 | #define LCOAL3 "| \\@@@@@@@@@@@@@_ " 94 | #define LCOAL4 "| | " 95 | #define LCOAL5 "|__________________| " 96 | #define LCOAL6 " (O) (O) " 97 | 98 | #define LCAR1 "____________________ " 99 | #define LCAR2 "| ___ ___ ___ ___ | " 100 | #define LCAR3 "| |_| |_| |_| |_| | " 101 | #define LCAR4 "|__________________| " 102 | #define LCAR5 "|__________________| " 103 | #define LCAR6 " (O) (O) " 104 | 105 | #define DELLN " " 106 | 107 | #define C51HEIGHT 11 108 | #define C51FUNNEL 7 109 | #define C51LENGTH 87 110 | #define C51PATTERNS 6 111 | 112 | #define C51DEL " " 113 | 114 | #define C51STR1 " ___ " 115 | #define C51STR2 " _|_|_ _ __ __ ___________" 116 | #define C51STR3 " D__/ \\_(_)___| |__H__| |_____I_Ii_()|_________|" 117 | #define C51STR4 " | `---' |:: `--' H `--' | |___ ___| " 118 | #define C51STR5 " +|~~~~~~~~++::~~~~~~~H~~+=====+~~~~~~|~~||_| |_|| " 119 | #define C51STR6 " || | :: H +=====+ | |:: ...| " 120 | #define C51STR7 "| | _______|_::-----------------[][]-----| | " 121 | 122 | #define C51WH61 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__" 123 | #define C51WH62 "------'|oOo|==[]=- || || | ||=======_|__" 124 | #define C51WH63 "/~\\____|___|/~\\_| O=======O=======O |__|+-/~\\_| " 125 | #define C51WH64 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ " 126 | 127 | #define C51WH51 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__" 128 | #define C51WH52 "------'|oOo|===[]=- || || | ||=======_|__" 129 | #define C51WH53 "/~\\____|___|/~\\_| O=======O=======O |__|+-/~\\_| " 130 | #define C51WH54 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ " 131 | 132 | #define C51WH41 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__" 133 | #define C51WH42 "------'|oOo|===[]=- O=======O=======O | ||=======_|__" 134 | #define C51WH43 "/~\\____|___|/~\\_| || || |__|+-/~\\_| " 135 | #define C51WH44 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ " 136 | 137 | #define C51WH31 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__" 138 | #define C51WH32 "------'|oOo|==[]=- O=======O=======O | ||=======_|__" 139 | #define C51WH33 "/~\\____|___|/~\\_| || || |__|+-/~\\_| " 140 | #define C51WH34 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ " 141 | 142 | #define C51WH21 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__" 143 | #define C51WH22 "------'|oOo|=[]=- O=======O=======O | ||=======_|__" 144 | #define C51WH23 "/~\\____|___|/~\\_| || || |__|+-/~\\_| " 145 | #define C51WH24 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ " 146 | 147 | #define C51WH11 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__" 148 | #define C51WH12 "------'|oOo|=[]=- || || | ||=======_|__" 149 | #define C51WH13 "/~\\____|___|/~\\_| O=======O=======O |__|+-/~\\_| " 150 | #define C51WH14 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ " 151 | --------------------------------------------------------------------------------