Enable nonl mode in libcurses by default.
Update sl sources from https://github.com/mtoyoda/sl.
This commit is contained in:
6
src/cmd/sl/LICENSE
Normal file
6
src/cmd/sl/LICENSE
Normal file
@@ -0,0 +1,6 @@
|
||||
Copyright 1993,1998,2014 Toyoda Masashi (mtoyoda@acm.org)
|
||||
|
||||
Everyone is permitted to do anything on this program including copying,
|
||||
modifying, and improving, unless you try to pretend that you wrote it.
|
||||
i.e., the above copyright notice has to appear in all copies.
|
||||
THE AUTHOR DISCLAIMS ANY RESPONSIBILITY WITH REGARD TO THIS SOFTWARE.
|
||||
13
src/cmd/sl/Makefile-unix
Normal file
13
src/cmd/sl/Makefile-unix
Normal file
@@ -0,0 +1,13 @@
|
||||
#==========================================
|
||||
# Makefile: makefile for sl 5.1
|
||||
# Copyright 1993, 1998, 2014
|
||||
# Toyoda Masashi
|
||||
# (mtoyoda@acm.org)
|
||||
# Last Modified: 2014/03/31
|
||||
#==========================================
|
||||
|
||||
CC = gcc
|
||||
CFLAGS = -O -Wall -Werror
|
||||
|
||||
sl: sl.c sl.h
|
||||
$(CC) $(CFLAGS) -o sl sl.c -lncurses
|
||||
@@ -1,12 +1,8 @@
|
||||
===========================================
|
||||
SL: $B%-!<%?%$%W6:@5%=%U%H(B
|
||||
Copyright 1993,1998 Toyoda Masashi
|
||||
(toyoda@is.titech.ac.jp)
|
||||
===========================================
|
||||
|
||||
$B$`$+$7$K$bEj9F$5$l$?>iCL%=%U%H$N(B sl $B$N9k2ZHG$G$9!#(B
|
||||
$B%"%$%G%"$O<Z$jJ*$G$9$,!"%W%m%0%i%`<+BN$O;d$N%*%j%8%J%k$G$9!#(B
|
||||
a,l,F $B%*%W%7%g%s$,M-8z$G$9!#5!G=$O<B9T$7$F3N$+$a$F$/$@$5$$!#(B
|
||||
make $B$9$l$P$G$-$"$,$j$^$9!#(B
|
||||
SL(1): Cure your bad habit of mistyping
|
||||
=======================================
|
||||
|
||||
SL (Steam Locomotive) runs across your terminal when you type "sl" as
|
||||
you meant to type "ls". It's just a joke command, and not useful at
|
||||
all.
|
||||
|
||||
Copyright 1993,1998,2014 Toyoda Masashi (mtoyoda@acm.org)
|
||||
|
||||
9
src/cmd/sl/README-ja
Normal file
9
src/cmd/sl/README-ja
Normal file
@@ -0,0 +1,9 @@
|
||||
SL: キータイプ矯正ソフト
|
||||
========================
|
||||
|
||||
むかしにも投稿された冗談ソフトの sl の豪華版です。
|
||||
アイデアは借り物ですが、プログラム自体は私のオリジナルです。
|
||||
いまさらながら若干アップデートしました。
|
||||
a,l,F,c オプションが有効です。機能は実行して確かめてください。
|
||||
|
||||
Copyright 1993,1998,2014 Toyoda Masashi (mtoyoda@acm.org)
|
||||
@@ -1,34 +1,36 @@
|
||||
.\"
|
||||
.\" Copyright 1993 Toyoda Masashi.
|
||||
.\" (toyoda@is.titech.ac.jp)
|
||||
.\" @(#)sl.1 2.02 19/01/93
|
||||
.\" Copyright 1993,1998,2014 Toyoda Masashi (mtoyoda@acm.org)
|
||||
.\"
|
||||
.TH SL 1 "Jan 19, 1993"
|
||||
.SH $@L>>N(J
|
||||
sl \- $@%-!<%?%$%W$r6:@5$7$^$9!#(J
|
||||
.SH $@7A<0(J
|
||||
.\" @(#)sl.1
|
||||
.\"
|
||||
.TH SL 1 "March 31, 2014"
|
||||
.SH NAME
|
||||
sl \- cure your bad habit of mistyping
|
||||
.SH SYNOPSIS
|
||||
.B sl
|
||||
[
|
||||
.B \-alF
|
||||
.B \-alFc
|
||||
]
|
||||
.SH $@2r@b(J
|
||||
.SH DESCRIPTION
|
||||
.B sl
|
||||
$@$O!"9bEY$KH/E8$7$?!"%-!<%?%$%W6:@5$rL\E*$H$9$k%"%K%a!<%7%g%s%W%m%0%i%`$G$9!#(J
|
||||
is a highly advanced animation program for curing your bad habit of mistyping.
|
||||
.PP
|
||||
$@<!$N$h$&$J%*%W%7%g%s$,$"$j$^$9!#(J
|
||||
.TP
|
||||
.B \-a
|
||||
$@$J$K$+%"%/%7%G%s%H$,$"$C$?$h$&$G$9$M!#=u$1$r5a$a$k?M!9$,HaDK$G$9!#(J
|
||||
An accident is occurring. People cry for help.
|
||||
.TP
|
||||
.B \-l
|
||||
$@>.$5$/$J$j$^$9!#(J
|
||||
Little version
|
||||
.TP
|
||||
.B \-F
|
||||
$@Ht$S$^$9!#(J
|
||||
It flies like the galaxy express 999.
|
||||
.TP
|
||||
.B \-c
|
||||
C51 appears instead of D51.
|
||||
.PP
|
||||
.SH $@4XO";v9`(J
|
||||
.SH SEE ALSO
|
||||
.BR ls (1)
|
||||
.SH $@%P%0(J
|
||||
$@%+%l%s%H%G%#%l%/%H%j$NFbMF$,I=<($5$l$k$3$H$,$"$j$^$9!#(J
|
||||
.SH $@Cx<T(J
|
||||
$@K-ED(J $@@5;K!J(Jtoyoda@isea.is.titech.ac.jp$@!K(J
|
||||
.SH BUGS
|
||||
It sometimes lists directory contents.
|
||||
.SH AUTHOR
|
||||
Toyoda Masashi (mtoyoda@acm.org)
|
||||
|
||||
37
src/cmd/sl/sl.1-ja
Normal file
37
src/cmd/sl/sl.1-ja
Normal file
@@ -0,0 +1,37 @@
|
||||
.\"
|
||||
.\" Copyright 1993,2014 Toyoda Masashi.
|
||||
.\" (mtoyoda@acm.org)
|
||||
.\" @(#)sl.1
|
||||
.\"
|
||||
.TH SL 1 "March 31, 2014"
|
||||
.SH 名称
|
||||
sl \- キータイプを矯正します。
|
||||
.SH 形式
|
||||
.B sl
|
||||
[
|
||||
.B \-alF
|
||||
]
|
||||
.SH 解説
|
||||
.B sl
|
||||
は、高度に発展した、キータイプ矯正を目的とするアニメーションプログラムです。
|
||||
.PP
|
||||
次のようなオプションがあります。
|
||||
.TP
|
||||
.B \-a
|
||||
なにかアクシデントがあったようですね。助けを求める人々が悲痛です。
|
||||
.TP
|
||||
.B \-l
|
||||
小さくなります。
|
||||
.TP
|
||||
.B \-F
|
||||
飛びます。
|
||||
.TP
|
||||
.B \-c
|
||||
C51になります。
|
||||
.PP
|
||||
.SH 関連事項
|
||||
.BR ls (1)
|
||||
.SH バグ
|
||||
カレントディレクトリの内容が表示されることがあります。
|
||||
.SH 著者
|
||||
豊田 正史 (mtoyoda@acm.org)
|
||||
259
src/cmd/sl/sl.c
259
src/cmd/sl/sl.c
@@ -1,14 +1,23 @@
|
||||
/*========================================
|
||||
* sl.c:
|
||||
* Copyright 1993,1998 Toyoda Masashi
|
||||
* (toyoda@is.titech.ac.jp)
|
||||
* Last Modified: 1998/ 7/22
|
||||
* sl.c: SL version 5.02
|
||||
* Copyright 1993,1998,2014
|
||||
* Toyoda Masashi
|
||||
* (mtoyoda@acm.org)
|
||||
* Last Modified: 2014/06/03
|
||||
*========================================
|
||||
*/
|
||||
/* sl version 5.02 : Fix compiler warnings. */
|
||||
/* by Jeff Schwab 2014/06/03 */
|
||||
/* sl version 5.01 : removed cursor and handling of IO */
|
||||
/* by Chris Seymour 2014/01/03 */
|
||||
/* sl version 5.00 : add -c option */
|
||||
/* by Toyoda Masashi 2013/05/05 */
|
||||
/* sl version 4.00 : add C51, usleep(40000) */
|
||||
/* by Toyoda Masashi 2002/12/31 */
|
||||
/* sl version 3.03 : add usleep(20000) */
|
||||
/* by Toyoda Masashi 1998/ 7/22 */
|
||||
/* by Toyoda Masashi 1998/07/22 */
|
||||
/* sl version 3.02 : D51 flies! Change options. */
|
||||
/* by Toyoda Masashi 1993/ 1/19 */
|
||||
/* by Toyoda Masashi 1993/01/19 */
|
||||
/* sl version 3.01 : Wheel turns smoother */
|
||||
/* by Toyoda Masashi 1992/12/25 */
|
||||
/* sl version 3.00 : Add d(D51) option */
|
||||
@@ -16,32 +25,41 @@
|
||||
/* sl version 2.02 : Bug fixed.(dust remains in screen) */
|
||||
/* by Toyoda Masashi 1992/12/17 */
|
||||
/* sl version 2.01 : Smoke run and disappear. */
|
||||
/* Change '-a' to accident option. */
|
||||
/* Change '-a' to accident option. */
|
||||
/* by Toyoda Masashi 1992/12/16 */
|
||||
/* sl version 2.00 : Add a(all),l(long),F(Fly!) options. */
|
||||
/* by Toyoda Masashi 1992/12/15 */
|
||||
/* by Toyoda Masashi 1992/12/15 */
|
||||
/* sl version 1.02 : Add turning wheel. */
|
||||
/* by Toyoda Masashi 1992/12/14 */
|
||||
/* by Toyoda Masashi 1992/12/14 */
|
||||
/* sl version 1.01 : Add more complex smoke. */
|
||||
/* by Toyoda Masashi 1992/12/14 */
|
||||
/* sl version 1.00 : SL runs vomitting out smoke. */
|
||||
/* by Toyoda Masashi 1992/12/11 */
|
||||
/* by Toyoda Masashi 1992/12/11 */
|
||||
|
||||
#include <curses.h>
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
#include "sl.h"
|
||||
|
||||
void add_smoke(int y, int x);
|
||||
void add_man(int y, int x);
|
||||
int add_C51(int x);
|
||||
int add_D51(int x);
|
||||
int add_sl(int x);
|
||||
void option(char *str);
|
||||
int my_mvaddstr(int y, int x, char *str);
|
||||
|
||||
int ACCIDENT = 0;
|
||||
int LOGO = 0;
|
||||
int FLY = 0;
|
||||
int C51 = 0;
|
||||
|
||||
int my_mvaddstr(int y, int x, char *str)
|
||||
{
|
||||
for ( ; x < 0; ++x, ++str)
|
||||
if (*str == '\0') return ERR;
|
||||
if (*str == '\0') return ERR;
|
||||
for ( ; *str != '\0'; ++str, ++x)
|
||||
if (mvaddch(y, x, *str) == ERR) return ERR;
|
||||
if (mvaddch(y, x, *str) == ERR) return ERR;
|
||||
return OK;
|
||||
}
|
||||
|
||||
@@ -50,23 +68,24 @@ void option(char *str)
|
||||
extern int ACCIDENT, FLY, LONG;
|
||||
|
||||
while (*str != '\0') {
|
||||
switch (*str++) {
|
||||
case 'a': ACCIDENT = 1; break;
|
||||
case 'F': FLY = 1; break;
|
||||
case 'l': LOGO = 1; break;
|
||||
default: break;
|
||||
}
|
||||
switch (*str++) {
|
||||
case 'a': ACCIDENT = 1; break;
|
||||
case 'F': FLY = 1; break;
|
||||
case 'l': LOGO = 1; break;
|
||||
case 'c': C51 = 1; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void main(int argc, char *argv[])
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int x, i;
|
||||
|
||||
for (i = 1; i < argc; ++i) {
|
||||
if (*argv[i] == '-') {
|
||||
option(argv[i] + 1);
|
||||
}
|
||||
if (*argv[i] == '-') {
|
||||
option(argv[i] + 1);
|
||||
}
|
||||
}
|
||||
initscr();
|
||||
signal(SIGINT, SIG_IGN);
|
||||
@@ -75,13 +94,17 @@ void main(int argc, char *argv[])
|
||||
scrollok(stdscr, FALSE);
|
||||
|
||||
for (x = COLS - 1; ; --x) {
|
||||
if (LOGO == 0) {
|
||||
if (add_D51(x) == ERR) break;
|
||||
} else {
|
||||
if (add_sl(x) == ERR) break;
|
||||
}
|
||||
refresh();
|
||||
usleep(20000);
|
||||
if (LOGO == 1) {
|
||||
if (add_sl(x) == ERR) break;
|
||||
}
|
||||
else if (C51 == 1) {
|
||||
if (add_C51(x) == ERR) break;
|
||||
}
|
||||
else {
|
||||
if (add_D51(x) == ERR) break;
|
||||
}
|
||||
refresh();
|
||||
usleep(20000);
|
||||
}
|
||||
mvcur(0, COLS - 1, LINES - 1, 0);
|
||||
endwin();
|
||||
@@ -91,18 +114,18 @@ void main(int argc, char *argv[])
|
||||
int add_sl(int x)
|
||||
{
|
||||
static char *sl[LOGOPATTERNS][LOGOHIGHT + 1]
|
||||
= {{LOGO1, LOGO2, LOGO3, LOGO4, LWHL11, LWHL12, DELLN},
|
||||
{LOGO1, LOGO2, LOGO3, LOGO4, LWHL21, LWHL22, DELLN},
|
||||
{LOGO1, LOGO2, LOGO3, LOGO4, LWHL31, LWHL32, DELLN},
|
||||
{LOGO1, LOGO2, LOGO3, LOGO4, LWHL41, LWHL42, DELLN},
|
||||
{LOGO1, LOGO2, LOGO3, LOGO4, LWHL51, LWHL52, DELLN},
|
||||
{LOGO1, LOGO2, LOGO3, LOGO4, LWHL61, LWHL62, DELLN}};
|
||||
= {{LOGO1, LOGO2, LOGO3, LOGO4, LWHL11, LWHL12, DELLN},
|
||||
{LOGO1, LOGO2, LOGO3, LOGO4, LWHL21, LWHL22, DELLN},
|
||||
{LOGO1, LOGO2, LOGO3, LOGO4, LWHL31, LWHL32, DELLN},
|
||||
{LOGO1, LOGO2, LOGO3, LOGO4, LWHL41, LWHL42, DELLN},
|
||||
{LOGO1, LOGO2, LOGO3, LOGO4, LWHL51, LWHL52, DELLN},
|
||||
{LOGO1, LOGO2, LOGO3, LOGO4, LWHL61, LWHL62, DELLN}};
|
||||
|
||||
static char *coal[LOGOHIGHT + 1]
|
||||
= {LCOAL1, LCOAL2, LCOAL3, LCOAL4, LCOAL5, LCOAL6, DELLN};
|
||||
= {LCOAL1, LCOAL2, LCOAL3, LCOAL4, LCOAL5, LCOAL6, DELLN};
|
||||
|
||||
static char *car[LOGOHIGHT + 1]
|
||||
= {LCAR1, LCAR2, LCAR3, LCAR4, LCAR5, LCAR6, DELLN};
|
||||
= {LCAR1, LCAR2, LCAR3, LCAR4, LCAR5, LCAR6, DELLN};
|
||||
|
||||
int i, y, py1 = 0, py2 = 0, py3 = 0;
|
||||
|
||||
@@ -110,43 +133,43 @@ int add_sl(int x)
|
||||
y = LINES / 2 - 3;
|
||||
|
||||
if (FLY == 1) {
|
||||
y = (x / 6) + LINES - (COLS / 6) - LOGOHIGHT;
|
||||
py1 = 2; py2 = 4; py3 = 6;
|
||||
y = (x / 6) + LINES - (COLS / 6) - LOGOHIGHT;
|
||||
py1 = 2; py2 = 4; py3 = 6;
|
||||
}
|
||||
for (i = 0; i <= LOGOHIGHT; ++i) {
|
||||
my_mvaddstr(y + i, x, sl[(LOGOLENGTH + x) / 3 % LOGOPATTERNS][i]);
|
||||
my_mvaddstr(y + i + py1, x + 21, coal[i]);
|
||||
my_mvaddstr(y + i + py2, x + 42, car[i]);
|
||||
my_mvaddstr(y + i + py3, x + 63, car[i]);
|
||||
my_mvaddstr(y + i, x, sl[(LOGOLENGTH + x) / 3 % LOGOPATTERNS][i]);
|
||||
my_mvaddstr(y + i + py1, x + 21, coal[i]);
|
||||
my_mvaddstr(y + i + py2, x + 42, car[i]);
|
||||
my_mvaddstr(y + i + py3, x + 63, car[i]);
|
||||
}
|
||||
if (ACCIDENT == 1) {
|
||||
add_man(y + 1, x + 14);
|
||||
add_man(y + 1 + py2, x + 45); add_man(y + 1 + py2, x + 53);
|
||||
add_man(y + 1 + py3, x + 66); add_man(y + 1 + py3, x + 74);
|
||||
add_man(y + 1, x + 14);
|
||||
add_man(y + 1 + py2, x + 45); add_man(y + 1 + py2, x + 53);
|
||||
add_man(y + 1 + py3, x + 66); add_man(y + 1 + py3, x + 74);
|
||||
}
|
||||
add_smoke(y - 1, x + LOGOFUNNEL);
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
||||
add_D51(int x)
|
||||
int add_D51(int x)
|
||||
{
|
||||
static char *d51[D51PATTERNS][D51HIGHT + 1]
|
||||
= {{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL11, D51WHL12, D51WHL13, D51DEL},
|
||||
{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL21, D51WHL22, D51WHL23, D51DEL},
|
||||
{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL31, D51WHL32, D51WHL33, D51DEL},
|
||||
{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL41, D51WHL42, D51WHL43, D51DEL},
|
||||
{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL51, D51WHL52, D51WHL53, D51DEL},
|
||||
{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL61, D51WHL62, D51WHL63, D51DEL}};
|
||||
= {{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL11, D51WHL12, D51WHL13, D51DEL},
|
||||
{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL21, D51WHL22, D51WHL23, D51DEL},
|
||||
{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL31, D51WHL32, D51WHL33, D51DEL},
|
||||
{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL41, D51WHL42, D51WHL43, D51DEL},
|
||||
{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL51, D51WHL52, D51WHL53, D51DEL},
|
||||
{D51STR1, D51STR2, D51STR3, D51STR4, D51STR5, D51STR6, D51STR7,
|
||||
D51WHL61, D51WHL62, D51WHL63, D51DEL}};
|
||||
static char *coal[D51HIGHT + 1]
|
||||
= {COAL01, COAL02, COAL03, COAL04, COAL05,
|
||||
COAL06, COAL07, COAL08, COAL09, COAL10, COALDEL};
|
||||
= {COAL01, COAL02, COAL03, COAL04, COAL05,
|
||||
COAL06, COAL07, COAL08, COAL09, COAL10, COALDEL};
|
||||
|
||||
int y, i, dy = 0;
|
||||
|
||||
@@ -154,72 +177,112 @@ add_D51(int x)
|
||||
y = LINES / 2 - 5;
|
||||
|
||||
if (FLY == 1) {
|
||||
y = (x / 7) + LINES - (COLS / 7) - D51HIGHT;
|
||||
dy = 1;
|
||||
y = (x / 7) + LINES - (COLS / 7) - D51HIGHT;
|
||||
dy = 1;
|
||||
}
|
||||
for (i = 0; i <= D51HIGHT; ++i) {
|
||||
my_mvaddstr(y + i, x, d51[(D51LENGTH + x) % D51PATTERNS][i]);
|
||||
my_mvaddstr(y + i + dy, x + 53, coal[i]);
|
||||
my_mvaddstr(y + i, x, d51[(D51LENGTH + x) % D51PATTERNS][i]);
|
||||
my_mvaddstr(y + i + dy, x + 53, coal[i]);
|
||||
}
|
||||
if (ACCIDENT == 1) {
|
||||
add_man(y + 2, x + 43);
|
||||
add_man(y + 2, x + 47);
|
||||
add_man(y + 2, x + 43);
|
||||
add_man(y + 2, x + 47);
|
||||
}
|
||||
add_smoke(y - 1, x + D51FUNNEL);
|
||||
return OK;
|
||||
}
|
||||
|
||||
int add_C51(int x)
|
||||
{
|
||||
static char *c51[C51PATTERNS][C51HIGHT + 1]
|
||||
= {{C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7,
|
||||
C51WH11, C51WH12, C51WH13, C51WH14, C51DEL},
|
||||
{C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7,
|
||||
C51WH21, C51WH22, C51WH23, C51WH24, C51DEL},
|
||||
{C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7,
|
||||
C51WH31, C51WH32, C51WH33, C51WH34, C51DEL},
|
||||
{C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7,
|
||||
C51WH41, C51WH42, C51WH43, C51WH44, C51DEL},
|
||||
{C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7,
|
||||
C51WH51, C51WH52, C51WH53, C51WH54, C51DEL},
|
||||
{C51STR1, C51STR2, C51STR3, C51STR4, C51STR5, C51STR6, C51STR7,
|
||||
C51WH61, C51WH62, C51WH63, C51WH64, C51DEL}};
|
||||
static char *coal[C51HIGHT + 1]
|
||||
= {COALDEL, COAL01, COAL02, COAL03, COAL04, COAL05,
|
||||
COAL06, COAL07, COAL08, COAL09, COAL10, COALDEL};
|
||||
|
||||
int add_man(int y, int x)
|
||||
int y, i, dy = 0;
|
||||
|
||||
if (x < - C51LENGTH) return ERR;
|
||||
y = LINES / 2 - 5;
|
||||
|
||||
if (FLY == 1) {
|
||||
y = (x / 7) + LINES - (COLS / 7) - C51HIGHT;
|
||||
dy = 1;
|
||||
}
|
||||
for (i = 0; i <= C51HIGHT; ++i) {
|
||||
my_mvaddstr(y + i, x, c51[(C51LENGTH + x) % C51PATTERNS][i]);
|
||||
my_mvaddstr(y + i + dy, x + 55, coal[i]);
|
||||
}
|
||||
if (ACCIDENT == 1) {
|
||||
add_man(y + 3, x + 45);
|
||||
add_man(y + 3, x + 49);
|
||||
}
|
||||
add_smoke(y - 1, x + C51FUNNEL);
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
||||
void add_man(int y, int x)
|
||||
{
|
||||
static char *man[2][2] = {{"", "(O)"}, {"Help!", "\\O/"}};
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 2; ++i) {
|
||||
my_mvaddstr(y + i, x, man[(LOGOLENGTH + x) / 12 % 2][i]);
|
||||
my_mvaddstr(y + i, x, man[(LOGOLENGTH + x) / 12 % 2][i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int add_smoke(int y, int x)
|
||||
#define SMOKEPTNS 16
|
||||
void add_smoke(int y, int x)
|
||||
#define SMOKEPTNS 16
|
||||
{
|
||||
static struct smokes {
|
||||
int y, x;
|
||||
int ptrn, kind;
|
||||
int y, x;
|
||||
int ptrn, kind;
|
||||
} S[1000];
|
||||
static int sum = 0;
|
||||
static char *Smoke[2][SMOKEPTNS]
|
||||
= {{"( )", "( )", "( )", "( )", "( )",
|
||||
"( )" , "( )" , "( )" , "()" , "()" ,
|
||||
"O" , "O" , "O" , "O" , "O" ,
|
||||
" " },
|
||||
{"(@@@)", "(@@@@)", "(@@@@)", "(@@@)", "(@@)",
|
||||
"(@@)" , "(@)" , "(@)" , "@@" , "@@" ,
|
||||
"@" , "@" , "@" , "@" , "@" ,
|
||||
" " }};
|
||||
= {{"( )", "( )", "( )", "( )", "( )",
|
||||
"( )" , "( )" , "( )" , "()" , "()" ,
|
||||
"O" , "O" , "O" , "O" , "O" ,
|
||||
" " },
|
||||
{"(@@@)", "(@@@@)", "(@@@@)", "(@@@)", "(@@)",
|
||||
"(@@)" , "(@)" , "(@)" , "@@" , "@@" ,
|
||||
"@" , "@" , "@" , "@" , "@" ,
|
||||
" " }};
|
||||
static char *Eraser[SMOKEPTNS]
|
||||
= {" ", " ", " ", " ", " ",
|
||||
" " , " " , " " , " " , " " ,
|
||||
" " , " " , " " , " " , " " ,
|
||||
" " };
|
||||
= {" ", " ", " ", " ", " ",
|
||||
" " , " " , " " , " " , " " ,
|
||||
" " , " " , " " , " " , " " ,
|
||||
" " };
|
||||
static int dy[SMOKEPTNS] = { 2, 1, 1, 1, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0 };
|
||||
0, 0, 0, 0, 0, 0 };
|
||||
static int dx[SMOKEPTNS] = {-2, -1, 0, 1, 1, 1, 1, 1, 2, 2,
|
||||
2, 2, 2, 3, 3, 3 };
|
||||
2, 2, 2, 3, 3, 3 };
|
||||
int i;
|
||||
|
||||
if (x % 4 == 0) {
|
||||
for (i = 0; i < sum; ++i) {
|
||||
my_mvaddstr(S[i].y, S[i].x, Eraser[S[i].ptrn]);
|
||||
S[i].y -= dy[S[i].ptrn];
|
||||
S[i].x += dx[S[i].ptrn];
|
||||
S[i].ptrn += (S[i].ptrn < SMOKEPTNS - 1) ? 1 : 0;
|
||||
my_mvaddstr(S[i].y, S[i].x, Smoke[S[i].kind][S[i].ptrn]);
|
||||
}
|
||||
my_mvaddstr(y, x, Smoke[sum % 2][0]);
|
||||
S[sum].y = y; S[sum].x = x;
|
||||
S[sum].ptrn = 0; S[sum].kind = sum % 2;
|
||||
sum ++;
|
||||
for (i = 0; i < sum; ++i) {
|
||||
my_mvaddstr(S[i].y, S[i].x, Eraser[S[i].ptrn]);
|
||||
S[i].y -= dy[S[i].ptrn];
|
||||
S[i].x += dx[S[i].ptrn];
|
||||
S[i].ptrn += (S[i].ptrn < SMOKEPTNS - 1) ? 1 : 0;
|
||||
my_mvaddstr(S[i].y, S[i].x, Smoke[S[i].kind][S[i].ptrn]);
|
||||
}
|
||||
my_mvaddstr(y, x, Smoke[sum % 2][0]);
|
||||
S[sum].y = y; S[sum].x = x;
|
||||
S[sum].ptrn = 0; S[sum].kind = sum % 2;
|
||||
sum ++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
/*========================================
|
||||
* sl.h: Text data of SL version 3.01
|
||||
* Copyright 1993 Toyoda Masashi
|
||||
* (toyoda@is.titech.ac.jp)
|
||||
* Last Modified: 1992/12/23
|
||||
* sl.h: SL version 5.02
|
||||
* Copyright 1993,2002,2014
|
||||
* Toyoda Masashi
|
||||
* (mtoyoda@acm.org)
|
||||
* Last Modified: 2014/06/03
|
||||
*========================================
|
||||
*/
|
||||
|
||||
#define D51HIGHT 10
|
||||
#define D51FUNNEL 7
|
||||
#define D51LENGTH 83
|
||||
#define D51LENGTH 83
|
||||
#define D51PATTERNS 6
|
||||
|
||||
|
||||
@@ -102,3 +103,48 @@
|
||||
#define LCAR6 " (O) (O) "
|
||||
|
||||
#define DELLN " "
|
||||
|
||||
#define C51HIGHT 11
|
||||
#define C51FUNNEL 7
|
||||
#define C51LENGTH 87
|
||||
#define C51PATTERNS 6
|
||||
|
||||
#define C51DEL " "
|
||||
|
||||
#define C51STR1 " ___ "
|
||||
#define C51STR2 " _|_|_ _ __ __ ___________"
|
||||
#define C51STR3 " D__/ \\_(_)___| |__H__| |_____I_Ii_()|_________|"
|
||||
#define C51STR4 " | `---' |:: `--' H `--' | |___ ___| "
|
||||
#define C51STR5 " +|~~~~~~~~++::~~~~~~~H~~+=====+~~~~~~|~~||_| |_|| "
|
||||
#define C51STR6 " || | :: H +=====+ | |:: ...| "
|
||||
#define C51STR7 "| | _______|_::-----------------[][]-----| | "
|
||||
|
||||
#define C51WH61 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__"
|
||||
#define C51WH62 "------'|oOo|==[]=- || || | ||=======_|__"
|
||||
#define C51WH63 "/~\\____|___|/~\\_| O=======O=======O |__|+-/~\\_| "
|
||||
#define C51WH64 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ "
|
||||
|
||||
#define C51WH51 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__"
|
||||
#define C51WH52 "------'|oOo|===[]=- || || | ||=======_|__"
|
||||
#define C51WH53 "/~\\____|___|/~\\_| O=======O=======O |__|+-/~\\_| "
|
||||
#define C51WH54 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ "
|
||||
|
||||
#define C51WH41 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__"
|
||||
#define C51WH42 "------'|oOo|===[]=- O=======O=======O | ||=======_|__"
|
||||
#define C51WH43 "/~\\____|___|/~\\_| || || |__|+-/~\\_| "
|
||||
#define C51WH44 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ "
|
||||
|
||||
#define C51WH31 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__"
|
||||
#define C51WH32 "------'|oOo|==[]=- O=======O=======O | ||=======_|__"
|
||||
#define C51WH33 "/~\\____|___|/~\\_| || || |__|+-/~\\_| "
|
||||
#define C51WH34 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ "
|
||||
|
||||
#define C51WH21 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__"
|
||||
#define C51WH22 "------'|oOo|=[]=- O=======O=======O | ||=======_|__"
|
||||
#define C51WH23 "/~\\____|___|/~\\_| || || |__|+-/~\\_| "
|
||||
#define C51WH24 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ "
|
||||
|
||||
#define C51WH11 "| /~~ || |-----/~~~~\\ /[I_____I][][] --|||_______|__"
|
||||
#define C51WH12 "------'|oOo|=[]=- || || | ||=======_|__"
|
||||
#define C51WH13 "/~\\____|___|/~\\_| O=======O=======O |__|+-/~\\_| "
|
||||
#define C51WH14 "\\_/ \\_/ \\____/ \\____/ \\____/ \\_/ "
|
||||
|
||||
@@ -59,6 +59,8 @@ gettmode()
|
||||
fprintf(outf, "GETTMODE: NONL = %s\n", NONL ? "TRUE" : "FALSE");
|
||||
fprintf(outf, "GETTMODE: ospeed = %d\n", ospeed);
|
||||
# endif
|
||||
/* Use nonl mode by default. */
|
||||
nonl();
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user