From 80379c039e586e212d931ae2ab9e91611c6ac5e9 Mon Sep 17 00:00:00 2001 From: lukem Date: Sun, 12 Oct 1997 01:49:24 +0000 Subject: WARNSify, KNFify --- snake/snake/move.c | 465 ++++++++++++++++++---------------- snake/snake/snake.6 | 6 +- snake/snake/snake.c | 656 ++++++++++++++++++++++++++---------------------- snake/snake/snake.h | 69 +++-- snake/snscore/snscore.c | 23 +- 5 files changed, 672 insertions(+), 547 deletions(-) (limited to 'snake') diff --git a/snake/snake/move.c b/snake/snake/move.c index fd29abc8..0a41db9e 100644 --- a/snake/snake/move.c +++ b/snake/snake/move.c @@ -1,4 +1,4 @@ -/* $NetBSD: move.c,v 1.13 1996/07/03 04:17:24 chopps Exp $ */ +/* $NetBSD: move.c,v 1.14 1997/10/12 01:49:24 lukem Exp $ */ /* * Copyright (c) 1980, 1993 @@ -33,13 +33,21 @@ * SUCH DAMAGE. */ +#include #ifndef lint #if 0 static char sccsid[] = "@(#)move.c 8.1 (Berkeley) 7/19/93"; #else -static char rcsid[] = "$NetBSD: move.c,v 1.13 1996/07/03 04:17:24 chopps Exp $"; +__RCSID("$NetBSD: move.c,v 1.14 1997/10/12 01:49:24 lukem Exp $"); #endif -#endif /* not lint */ +#endif /* not lint */ + +int tgetent __P((char *, char *)); +int tgetnum __P((char *)); +char *tgetstr __P((char *, char **)); +int tgetflag __P((char *)); +char *tgoto __P((char *, int, int)); +void tputs __P((char *, int, void (*outc) __P((int)))); /************************************************************************* * @@ -103,146 +111,150 @@ static char rcsid[] = "$NetBSD: move.c,v 1.13 1996/07/03 04:17:24 chopps Exp $"; #endif #include "snake.h" -int CMlength; -int NDlength; -int BSlength; -int delaystr[10]; +int CMlength; +int NDlength; +int BSlength; +int delaystr[10]; speed_t ospeed; static char str[80]; +void move(sp) -struct point *sp; + struct point *sp; { - int distance; - int tabcol,ct; + int distance; + int tabcol, ct; struct point z; - if (sp->line <0 || sp->col <0 || sp->col > COLUMNS){ - pr("move to [%d,%d]?",sp->line,sp->col); + if (sp->line < 0 || sp->col < 0 || sp->col > COLUMNS) { + pr("move to [%d,%d]?", sp->line, sp->col); return; } - if (sp->line >= LINES){ - move(point(&z,sp->col,LINES-1)); - while(sp->line-- >= LINES)putchar('\n'); + if (sp->line >= LINES) { + move(point(&z, sp->col, LINES - 1)); + while (sp->line-- >= LINES) + putchar('\n'); return; } - if (CM != 0) { - char *cmstr = tgoto(CM, sp->col, sp->line); + char *cmstr = tgoto(CM, sp->col, sp->line); CMlength = strlen(cmstr); - if(cursor.line == sp->line){ + if (cursor.line == sp->line) { distance = sp->col - cursor.col; - if(distance == 0)return; /* Already there! */ - if(distance > 0){ /* Moving to the right */ - if(distance*NDlength < CMlength){ + if (distance == 0) + return; /* Already there! */ + if (distance > 0) { /* Moving to the right */ + if (distance * NDlength < CMlength) { right(sp); return; } - if(TA){ - ct=sp->col&7; - tabcol=(cursor.col|7)+1; - do{ + if (TA) { + ct = sp->col & 7; + tabcol = (cursor.col | 7) + 1; + do { ct++; - tabcol=(tabcol|7)+1; + tabcol = (tabcol | 7) + 1; } - while(tabcolcol); - if(ctcol); + if (ct < CMlength) { right(sp); return; } } - } else { /* Moving to the left */ - if (-distance*BSlength < CMlength){ + } else {/* Moving to the left */ + if (-distance * BSlength < CMlength) { gto(sp); return; } } - if(sp->col < CMlength){ + if (sp->col < CMlength) { cr(); right(sp); return; } - /* No more optimizations on same row. */ + /* No more optimizations on same row. */ } distance = sp->col - cursor.col; distance = distance > 0 ? - distance*NDlength : -distance * BSlength; + distance * NDlength : -distance * BSlength; if (distance < 0) - pr("ERROR: distance is negative: %d",distance); + pr("ERROR: distance is negative: %d", distance); distance += abs(sp->line - cursor.line); - if(distance >= CMlength){ + if (distance >= CMlength) { putpad(cmstr); cursor.line = sp->line; cursor.col = sp->col; return; } } - /* * If we get here we have a terminal that can't cursor * address but has local motions or one which can cursor * address but can get there quicker with local motions. */ - gto(sp); + gto(sp); } + +void gto(sp) -struct point *sp; + struct point *sp; { - int distance,f,tfield,j; + int distance, f, tfield; - if (cursor.line > LINES || cursor.line <0 || - cursor.col <0 || cursor.col > COLUMNS) + if (cursor.line > LINES || cursor.line < 0 || + cursor.col < 0 || cursor.col > COLUMNS) pr("ERROR: cursor is at %d,%d\n", - cursor.line,cursor.col); - if (sp->line > LINES || sp->line <0 || - sp->col <0 || sp->col > COLUMNS) - pr("ERROR: target is %d,%d\n",sp->line,sp->col); + cursor.line, cursor.col); + if (sp->line > LINES || sp->line < 0 || + sp->col < 0 || sp->col > COLUMNS) + pr("ERROR: target is %d,%d\n", sp->line, sp->col); tfield = (sp->col) >> 3; - if (sp->line == cursor.line){ - if (sp->col > cursor.col)right(sp); - else{ - distance = (cursor.col -sp->col)*BSlength; - if (((TA) && - (distance > tfield+((sp->col)&7)*NDlength) + if (sp->line == cursor.line) { + if (sp->col > cursor.col) + right(sp); + else { + distance = (cursor.col - sp->col) * BSlength; + if (((TA) && + (distance > tfield + ((sp->col) & 7) * NDlength) ) || - (((cursor.col)*NDlength) < distance) - ){ + (((cursor.col) * NDlength) < distance) + ) { cr(); right(sp); - } - else{ - while(cursor.col > sp->col) bs(); + } else { + while (cursor.col > sp->col) + bs(); } } return; } - /*must change row */ - if (cursor.col - sp->col > (cursor.col >> 3)){ - if (cursor.col == 0)f = 0; - else f = -1; - } - else f = cursor.col >> 3; - if (((sp->line << 1) + 1 < cursor.line - f) && (HO != 0)){ - /* - * home quicker than rlf: - * (sp->line + f > cursor.line - sp->line) - */ + /* must change row */ + if (cursor.col - sp->col > (cursor.col >> 3)) { + if (cursor.col == 0) + f = 0; + else + f = -1; + } else + f = cursor.col >> 3; + if (((sp->line << 1) + 1 < cursor.line - f) && (HO != 0)) { + /* + * home quicker than rlf: + * (sp->line + f > cursor.line - sp->line) + */ putpad(HO); cursor.col = cursor.line = 0; gto(sp); return; } - if (((sp->line << 1) > cursor.line + LINES+1 + f) && (LL != 0)){ - /* home,rlf quicker than lf - * (LINES+1 - sp->line + f < sp->line - cursor.line) - */ - if (cursor.line > f + 1){ - /* is home faster than wraparound lf? - * (cursor.line + 20 - sp->line > 21 - sp->line + f) - */ + if (((sp->line << 1) > cursor.line + LINES + 1 + f) && (LL != 0)) { + /* home,rlf quicker than lf (LINES+1 - sp->line + f < sp->line + * - cursor.line) */ + if (cursor.line > f + 1) { + /* is home faster than wraparound lf? (cursor.line + + * 20 - sp->line > 21 - sp->line + f) */ ll(); gto(sp); return; @@ -250,22 +262,25 @@ struct point *sp; } if ((LL != 0) && (sp->line > cursor.line + (LINES >> 1) - 1)) cursor.line += LINES; - while(sp->line > cursor.line)down(); - while(sp->line < cursor.line)up(); - gto(sp); /*can recurse since cursor.line = sp->line */ + while (sp->line > cursor.line) + down(); + while (sp->line < cursor.line) + up(); + gto(sp); /* can recurse since cursor.line = sp->line */ } +void right(sp) -struct point *sp; + struct point *sp; { - int field,tfield; - int tabcol,strlength; + int field, tfield; + int tabcol, strlength; if (sp->col < cursor.col) pr("ERROR:right() can't move left\n"); - if(TA){ /* If No Tabs: can't send tabs because ttydrive - * loses count with control characters. - */ + if (TA) { /* If No Tabs: can't send tabs because + * ttydrive loses count with control + * characters. */ field = cursor.col >> 3; /* * This code is useful for a terminal which wraps around on backspaces. @@ -274,56 +289,62 @@ struct point *sp; * have addressible cursors, too). */ if (BW && (CM == 0) && - ((sp->col << 1) - field > (COLUMNS - 8) << 1 ) - ){ - if (cursor.line == 0){ - outch('\n'); - } - outch('\r'); - cursor.col = COLUMNS + 1; - while(cursor.col > sp->col)bs(); - if (cursor.line != 0) outch('\n'); - return; - } - + ((sp->col << 1) - field > (COLUMNS - 8) << 1) + ) { + if (cursor.line == 0) { + outch('\n'); + } + outch('\r'); + cursor.col = COLUMNS + 1; + while (cursor.col > sp->col) + bs(); + if (cursor.line != 0) + outch('\n'); + return; + } tfield = sp->col >> 3; - while (field < tfield){ + while (field < tfield) { putpad(TA); cursor.col = ++field << 3; } - tabcol = (cursor.col|7) + 1; - strlength = (tabcol - sp->col)*BSlength + 1; + tabcol = (cursor.col | 7) + 1; + strlength = (tabcol - sp->col) * BSlength + 1; /* length of sequence to overshoot */ - if (((sp->col - cursor.col)*NDlength > strlength) && + if (((sp->col - cursor.col) * NDlength > strlength) && (tabcol < COLUMNS) - ){ + ) { /* * Tab past and backup */ putpad(TA); cursor.col = (cursor.col | 7) + 1; - while(cursor.col > sp->col)bs(); + while (cursor.col > sp->col) + bs(); } } - while (sp->col > cursor.col){ + while (sp->col > cursor.col) { nd(); } } -cr(){ +void +cr() +{ outch('\r'); cursor.col = 0; } -clear(){ - int i; +void +clear() +{ + int i; - if (CL){ + if (CL) { putpad(CL); - cursor.col=cursor.line=0; + cursor.col = cursor.line = 0; } else { - for(i=0; i= LINES)cursor.line=LINES-1; + if (cursor.line >= LINES) + cursor.line = LINES - 1; } -bs(){ - if (cursor.col > 0){ + +void +bs() +{ + if (cursor.col > 0) { putpad(BS); cursor.col--; } } -nd(){ +void +nd() +{ putpad(ND); cursor.col++; - if (cursor.col == COLUMNS+1){ + if (cursor.col == COLUMNS + 1) { cursor.line++; cursor.col = 0; - if (cursor.line >= LINES)cursor.line=LINES-1; + if (cursor.line >= LINES) + cursor.line = LINES - 1; } } +void pch(c) + int c; { outch(c); - if(++cursor.col >= COLUMNS && AM) { + if (++cursor.col >= COLUMNS && AM) { cursor.col = 0; ++cursor.line; } @@ -397,36 +436,37 @@ pch(c) void #if __STDC__ -apr(struct point *ps, const char *fmt, ...) +apr(struct point * ps, const char *fmt,...) #else apr(ps, fmt, va_alist) struct point *ps; - char *fmt; - va_dcl + char *fmt; +va_dcl #endif { struct point p; va_list ap; - p.line = ps->line+1; p.col = ps->col+1; + p.line = ps->line + 1; + p.col = ps->col + 1; move(&p); #if __STDC__ va_start(ap, fmt); #else va_start(ap); #endif - (void)vsprintf(str, fmt, ap); + (void) vsprintf(str, fmt, ap); va_end(ap); pstring(str); } void #if __STDC__ -pr(const char *fmt, ...) +pr(const char *fmt,...) #else pr(fmt, va_alist) - char *fmt; - va_dcl + char *fmt; +va_dcl #endif { va_list ap; @@ -436,24 +476,26 @@ pr(fmt, va_alist) #else va_start(ap); #endif - (void)vsprintf(str, fmt, ap); + (void) vsprintf(str, fmt, ap); va_end(ap); pstring(str); } +void pstring(s) -char *s;{ + const char *s; +{ struct point z; - int stcol; + int stcol; stcol = cursor.col; - while (s[0] != '\0'){ - switch (s[0]){ + while (s[0] != '\0') { + switch (s[0]) { case '\n': - move(point(&z,0,cursor.line+1)); + move(point(&z, 0, cursor.line + 1)); break; case '\r': - move(point(&z,stcol,cursor.line+1)); + move(point(&z, stcol, cursor.line + 1)); break; case '\t': z.col = (((cursor.col + 8) >> 3) << 3); @@ -467,66 +509,76 @@ char *s;{ outch(CTRL('g')); break; default: - if (s[0] < ' ')break; + if (s[0] < ' ') + break; pch(s[0]); } s++; } } -pchar(ps,ch) -struct point *ps; -char ch;{ +void +pchar(ps, ch) + struct point *ps; + char ch; +{ struct point p; - p.col = ps->col + 1; p.line = ps->line + 1; + p.col = ps->col + 1; + p.line = ps->line + 1; if ( - (p.col >= 0) && - (p.line >= 0) && + (p.col >= 0) && + (p.line >= 0) && + ( + ( + (p.line < LINES) && + (p.col < COLUMNS) + ) || ( - ( - (p.line < LINES) && - (p.col < COLUMNS) - ) || - ( - (p.col == COLUMNS) && - (p.line < LINES-1) - ) - ) - ){ + (p.col == COLUMNS) && + (p.line < LINES - 1) + ) + ) + ) { move(&p); pch(ch); } } - +void outch(c) + int c; { putchar(c); } +void putpad(str) -char *str; + char *str; { if (str) tputs(str, 1, outch); } + +void delay(t) -int t; + int t; { - int k,j; + int k, j; k = (ospeed * t + 100) / 200; - for(j=0;jcol=x; - ps->line=y; - return(ps); + ps->col = x; + ps->line = y; + return (ps); } -char *ap; +char *ap; +void getcap() { - char *getenv(); - char *term; - char *xPC; - struct point z; - void stop(); + char *term; + char *xPC; #ifdef TIOCGWINSZ struct winsize win; #endif term = getenv("TERM"); - if (term==0) { - fprintf(stderr, "No TERM in environment\n"); - exit(1); - } - + if (term == 0) + errx(1, "No TERM in environment"); switch (tgetent(tbuf, term)) { case -1: - fprintf(stderr, "Cannot open termcap file\n"); - exit(2); + errx(2, "Cannot open termcap file"); case 0: - fprintf(stderr, "%s: unknown terminal", term); - exit(3); + errx(3, "unknown terminal `%s'", term); } ap = tcapbuf; @@ -611,7 +658,6 @@ getcap() if (BS == 0 && tgetflag("bs")) BS = "\b"; } - TA = tgetstr("ta", &ap); if (TA == 0 && tgetflag("pt")) TA = "\t"; @@ -629,11 +675,8 @@ getcap() Klength = strlen(KL); else Klength = 0; - /* NOTE: If KL, KR, KU, and KD are not - * all the same length, some problems - * may arise, since tests are made on - * all of them together. - */ + /* NOTE: If KL, KR, KU, and KD are not all the same length, some + * problems may arise, since tests are made on all of them together. */ TI = tgetstr("ti", &ap); TE = tgetstr("te", &ap); @@ -645,44 +688,32 @@ getcap() PC = *xPC; if ((CM == 0) && - (HO == 0 || UP == 0 || BS == 0 || ND == 0)) { - fprintf(stderr, "Terminal must have addressible "); - fprintf(stderr, "cursor or home + 4 local motions\n"); - exit(5); - } - if (ND == 0) { - fprintf(stderr, "Terminal must have `nd' capability\n"); - exit(5); - } + (HO == 0 || UP == 0 || BS == 0 || ND == 0)) + errx(5, "Terminal must have addressible cursor or home + 4 local motions"); + if (ND == 0) + errx(5, "Terminal must have `nd' capability"); NDlength = strlen(ND); - if (BS == 0) { - fprintf(stderr, - "Terminal must have 'le' or `bs' or `bc' capability\n"); - exit(5); - } + if (BS == 0) + errx(5, "Terminal must have 'le' or `bs' or `bc' capability"); BSlength = strlen(BS); - if (tgetflag("os")) { - fprintf(stderr, "Terminal must not overstrike\n"); - exit(5); - } - if (LINES <= 0 || COLUMNS <= 0) { - fprintf(stderr, "Must know the screen size\n"); - exit(5); - } - + if (tgetflag("os")) + errx(5, "Terminal must not overstrike"); + if (LINES <= 0 || COLUMNS <= 0) + errx(5, "Must know the screen size"); tcgetattr(0, &orig); new = orig; - new.c_lflag &= ~(ECHO|ICANON); - new.c_oflag &= ~(ONLCR|OXTABS); - signal(SIGINT,stop); + new.c_lflag &= ~(ECHO | ICANON); + new.c_oflag &= ~(ONLCR | OXTABS); + signal(SIGINT, stop); ospeed = cfgetospeed(&orig); new.c_cc[VSUSP] = _POSIX_VDISABLE; new.c_cc[VDSUSP] = _POSIX_VDISABLE; raw(); - if (orig.c_oflag & OXTABS) TA=0; + if (orig.c_oflag & OXTABS) + TA = 0; putpad(KS); putpad(TI); - point(&cursor,0,LINES-1); + point(&cursor, 0, LINES - 1); } diff --git a/snake/snake/snake.6 b/snake/snake/snake.6 index f44de895..62122b8a 100644 --- a/snake/snake/snake.6 +++ b/snake/snake/snake.6 @@ -1,4 +1,4 @@ -.\" $NetBSD: snake.6,v 1.5 1995/04/22 08:34:35 cgd Exp $ +.\" $NetBSD: snake.6,v 1.6 1997/10/12 01:49:26 lukem Exp $ .\" .\" Copyright (c) 1980, 1993 .\" The Regents of the University of California. All rights reserved. @@ -41,13 +41,13 @@ .Nm snscore .Nd display chase game .Sh SYNOPSIS -.Nm snake +.Nm .Op Fl w Ar width .Op Fl l Ar length .br .Nm snscore .Sh DESCRIPTION -.Nm Snake +.Nm is a display-based game which must be played on a CRT terminal. The object of the game is to make as much money as possible without getting eaten by the snake. The diff --git a/snake/snake/snake.c b/snake/snake/snake.c index db69aefa..eaa30b81 100644 --- a/snake/snake/snake.c +++ b/snake/snake/snake.c @@ -1,4 +1,4 @@ -/* $NetBSD: snake.c,v 1.8 1995/04/29 00:06:41 mycroft Exp $ */ +/* $NetBSD: snake.c,v 1.9 1997/10/12 01:49:28 lukem Exp $ */ /* * Copyright (c) 1980, 1993 @@ -33,19 +33,19 @@ * SUCH DAMAGE. */ +#include #ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1980, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ +__COPYRIGHT("@(#) Copyright (c) 1980, 1993\n\ + The Regents of the University of California. All rights reserved.\n"); +#endif /* not lint */ #ifndef lint #if 0 static char sccsid[] = "@(#)snake.c 8.2 (Berkeley) 1/7/94"; #else -static char rcsid[] = "$NetBSD: snake.c,v 1.8 1995/04/29 00:06:41 mycroft Exp $"; +__RCSID("$NetBSD: snake.c,v 1.9 1997/10/12 01:49:28 lukem Exp $"); #endif -#endif /* not lint */ +#endif /* not lint */ /* * snake - crt hack game. @@ -65,11 +65,12 @@ static char rcsid[] = "$NetBSD: snake.c,v 1.8 1995/04/29 00:06:41 mycroft Exp $" #include #include #include +#include #include "snake.h" #include "pathnames.h" -#define PENALTY 10 /* % penalty for invoking spacewarp */ +#define PENALTY 10 /* % penalty for invoking spacewarp */ #define EOT '\004' #define LF '\n' @@ -88,32 +89,34 @@ struct point money; struct point finish; struct point snake[6]; -int loot, penalty; -int long tl, tm=0L; -int moves; -char stri[BSIZE]; -char *p; -char ch, savec; -char *kl, *kr, *ku, *kd; -int fast=1; -int repeat=1; -time_t tv; -char *tn; - -main(argc,argv) -int argc; -char **argv; +int loot, penalty; +int long tl, tm = 0L; +int moves; +char stri[BSIZE]; +char *p; +char ch, savec; +char *kl, *kr, *ku, *kd; +int fast = 1; +int repeat = 1; +time_t tv; +char *tn; + +int main __P((int, char **)); + +int +main(argc, argv) + int argc; + char **argv; { extern char *optarg; extern int optind; - int ch, i, j, k; - void stop(); + int ch, i; - (void)time(&tv); - srandom((int)tv); + (void) time(&tv); + srandom((int) tv); - while ((ch = getopt(argc, argv, "l:w:")) != EOF) - switch((char)ch) { + while ((ch = getopt(argc, argv, "l:w:")) != -1) + switch ((char) ch) { #ifdef notdef case 'd': tv = atol(optarg); @@ -140,7 +143,6 @@ char **argv; pr("snake: screen too small for a fair game.\n"); exit(1); } - /* * chunk is the amount of money the user gets for each $. * The formula below tries to be fair for various screen sizes. @@ -154,7 +156,8 @@ char **argv; * smaller than 4x4 because there is a 3x3 game where you can win * an infinite amount of money. */ - if (i < 12) i = 12; /* otherwise it isn't fair */ + if (i < 12) + i = 12; /* otherwise it isn't fair */ /* * Compensate for border. This really changes the game since * the screen is two squares smaller but we want the default @@ -162,45 +165,51 @@ char **argv; * much anyway. */ i += 2; - chunk = (675.0 / (i+6)) + 2.5; /* min screen edge */ + chunk = (675.0 / (i + 6)) + 2.5; /* min screen edge */ - signal (SIGINT, stop); - putpad(TI); /* String to begin programs that use cm */ - putpad(KS); /* Put terminal in keypad transmit mode */ + signal(SIGINT, stop); + putpad(TI); /* String to begin programs that use cm */ + putpad(KS); /* Put terminal in keypad transmit mode */ snrand(&finish); snrand(&you); snrand(&money); snrand(&snake[0]); - if (ospeed < 9600 || ((! CM) && (! TA))) fast=0; - for(i=1;i<6;i++) - chase (&snake[i], &snake[i-1]); + if (ospeed < 9600 || ((!CM) && (!TA))) + fast = 0; + for (i = 1; i < 6; i++) + chase(&snake[i], &snake[i - 1]); setup(); mainloop(); + /* NOTREACHED */ + return (0); } /* Main command loop */ +void mainloop() { - int j, k; + int j, k; for (;;) { - int c,lastc,match; + int c, lastc, match; + lastc = 0; move(&you); fflush(stdout); if (((c = getchar() & 0177) <= '9') && (c >= '0')) { - ungetc(c,stdin); - j = scanf("%d",&repeat); + ungetc(c, stdin); + j = scanf("%d", &repeat); c = getchar() & 0177; } else { - if (c != '.') repeat = 1; + if (c != '.') + repeat = 1; } if (c == '.') { c = lastc; } - if ((Klength > 0) && + if ((Klength > 0) && (c == *KL || c == *KR || c == *KU || c == *KD)) { savec = c; match = 0; @@ -208,9 +217,9 @@ mainloop() kr = KR; ku = KU; kd = KD; - for (j=Klength;j>0;j--){ + for (j = Klength; j > 0; j--) { if (match != 1) { - match = 0; + match = 0; if (*kl++ == c) { ch = 'h'; match++; @@ -228,22 +237,24 @@ mainloop() match++; } if (match == 0) { - ungetc(c,stdin); + ungetc(c, stdin); ch = savec; - /* Oops! - * This works if we figure it out on second character. - */ + /* Oops! This works if we + * figure it out on second + * character. */ break; } } savec = c; - if(j != 1) c = getchar() & 0177; + if (j != 1) + c = getchar() & 0177; } c = ch; } - if (!fast) flushi(); + if (!fast) + flushi(); lastc = c; - switch (c){ + switch (c) { case CTRL('z'): suspend(); continue; @@ -302,31 +313,31 @@ mainloop() c = 'j'; break; } - for(k=1;k<=repeat;k++){ + for (k = 1; k <= repeat; k++) { moves++; - switch(c) { + switch (c) { case 's': case 'h': case '\b': - if (you.col >0) { - if((fast)||(k == 1)) - pchar(&you,' '); + if (you.col > 0) { + if ((fast) || (k == 1)) + pchar(&you, ' '); you.col--; - if((fast) || (k == repeat) || - (you.col == 0)) - pchar(&you,ME); + if ((fast) || (k == repeat) || + (you.col == 0)) + pchar(&you, ME); } break; case 'f': case 'l': case ' ': - if (you.col < ccnt-1) { - if((fast)||(k == 1)) - pchar(&you,' '); + if (you.col < ccnt - 1) { + if ((fast) || (k == 1)) + pchar(&you, ' '); you.col++; - if((fast) || (k == repeat) || - (you.col == ccnt-1)) - pchar(&you,ME); + if ((fast) || (k == repeat) || + (you.col == ccnt - 1)) + pchar(&you, ME); } break; case CTRL('p'): @@ -334,12 +345,12 @@ mainloop() case 'k': case 'i': if (you.line > 0) { - if((fast)||(k == 1)) - pchar(&you,' '); + if ((fast) || (k == 1)) + pchar(&you, ' '); you.line--; - if((fast) || (k == repeat) || - (you.line == 0)) - pchar(&you,ME); + if ((fast) || (k == repeat) || + (you.line == 0)) + pchar(&you, ME); } break; case CTRL('n'): @@ -347,100 +358,104 @@ mainloop() case 'j': case LF: case 'm': - if (you.line+1 < lcnt) { - if((fast)||(k == 1)) - pchar(&you,' '); + if (you.line + 1 < lcnt) { + if ((fast) || (k == 1)) + pchar(&you, ' '); you.line++; - if((fast) || (k == repeat) || - (you.line == lcnt-1)) - pchar(&you,ME); + if ((fast) || (k == repeat) || + (you.line == lcnt - 1)) + pchar(&you, ME); } break; } - if (same(&you,&money)) - { - char xp[20]; - struct point z; + if (same(&you, &money)) { loot += 25; - if(k < repeat) - pchar(&you,' '); + if (k < repeat) + pchar(&you, ' '); do { snrand(&money); - } while (money.col == finish.col && money.line == finish.line || - money.col < 5 && money.line == 0 || - money.col == you.col && money.line == you.line); - pchar(&money,TREASURE); + } while ((money.col == finish.col && + money.line == finish.line) || + (money.col < 5 && money.line == 0) || + (money.col == you.col && + money.line == you.line)); + pchar(&money, TREASURE); winnings(cashvalue); continue; } - if (same(&you,&finish)) - { + if (same(&you, &finish)) { win(&finish); ll(); cook(); - pr("You have won with $%d.\n",cashvalue); + pr("You have won with $%d.\n", cashvalue); fflush(stdout); logit("won"); - post(cashvalue,1); + post(cashvalue, 1); length(moves); done(); } - if (pushsnake())break; + if (pushsnake()) + break; } fflush(stdout); } } -setup(){ /* - * setup the board - */ - int i; +/* + * setup the board + */ +void +setup() +{ + int i; clear(); - pchar(&you,ME); - pchar(&finish,GOAL); - pchar(&money,TREASURE); - for(i=1; i<6; i++) { - pchar(&snake[i],SNAKETAIL); + pchar(&you, ME); + pchar(&finish, GOAL); + pchar(&money, TREASURE); + for (i = 1; i < 6; i++) { + pchar(&snake[i], SNAKETAIL); } pchar(&snake[0], SNAKEHEAD); drawbox(); fflush(stdout); } +void drawbox() { - register int i; + int i; struct point p; p.line = -1; - for (i= 0; i oldbest ? 1 : 0); /* Update this jokers best */ if (score > oldbest) { - lseek(rawscores, uid*sizeof(short), 0); + lseek(rawscores, uid * sizeof(short), 0); write(rawscores, &score, sizeof(short)); pr("You bettered your previous best of $%d\n", oldbest); } else @@ -525,48 +541,51 @@ int iscore, flag; * overshooting. This loses horribly at 9600 baud, but works nicely * if the terminal gets behind. */ +void flushi() { tcflush(0, TCIFLUSH); } -int mx [8] = { - 0, 1, 1, 1, 0,-1,-1,-1}; -int my [8] = { - -1,-1, 0, 1, 1, 1, 0,-1}; -float absv[8]= { + +int mx[8] = { + 0, 1, 1, 1, 0, -1, -1, -1 +}; +int my[8] = { + -1, -1, 0, 1, 1, 1, 0, -1 +}; +float absv[8] = { 1, 1.4, 1, 1.4, 1, 1.4, 1, 1.4 }; -int oldw=0; -chase (np, sp) -struct point *sp, *np; +int oldw = 0; + +void +chase(np, sp) + struct point *sp, *np; { - /* this algorithm has bugs; otherwise the - snake would get too good */ + /* this algorithm has bugs; otherwise the snake would get too good */ struct point d; - int w, i, wt[8]; - double v1, v2, vp, max; - point(&d,you.col-sp->col,you.line-sp->line); - v1 = sqrt( (double) (d.col*d.col + d.line*d.line) ); - w=0; - max=0; - for(i=0; i<8; i++) - { - vp = d.col*mx[i] + d.line*my[i]; + int w, i, wt[8]; + double v1, v2, vp, max; + point(&d, you.col - sp->col, you.line - sp->line); + v1 = sqrt((double) (d.col * d.col + d.line * d.line)); + w = 0; + max = 0; + for (i = 0; i < 8; i++) { + vp = d.col * mx[i] + d.line * my[i]; v2 = absv[i]; - if (v1>0) - vp = ((double)vp)/(v1*v2); - else vp=1.0; - if (vp>max) - { - max=vp; - w=i; + if (v1 > 0) + vp = ((double) vp) / (v1 * v2); + else + vp = 1.0; + if (vp > max) { + max = vp; + w = i; } } - for(i=0; i<8; i++) - { - point(&d,sp->col+mx[i],sp->line+my[i]); - wt[i]=0; - if (d.col<0 || d.col>=ccnt || d.line<0 || d.line>=lcnt) + for (i = 0; i < 8; i++) { + point(&d, sp->col + mx[i], sp->line + my[i]); + wt[i] = 0; + if (d.col < 0 || d.col >= ccnt || d.line < 0 || d.line >= lcnt) continue; /* * Change to allow snake to eat you if you're on the money, @@ -575,36 +594,42 @@ struct point *sp, *np; * * if (d.line == 0 && d.col < 5) continue; */ - if (same(&d,&money)) continue; - if (same(&d,&finish)) continue; - wt[i]= i==w ? loot/10 : 1; - if (i==oldw) wt [i] += loot/20; - } - for(w=i=0; i<8; i++) - w+= wt[i]; - vp = (( rand() >> 6 ) & 01777) %w; - for(i=0; i<8; i++) - if (vp > 6) & 01777) % w; + for (i = 0; i < 8; i++) + if (vp < wt[i]) break; else vp -= wt[i]; - if (i==8) { - pr("failure\n"); - i=0; - while (wt[i]==0) i++; - } - oldw=w=i; - point(np,sp->col+mx[w],sp->line+my[w]); + if (i == 8) { + pr("failure\n"); + i = 0; + while (wt[i] == 0) + i++; + } + oldw = w = i; + point(np, sp->col + mx[w], sp->line + my[w]); } +void spacewarp(w) -int w;{ + int w; +{ struct point p; - int j; - char *str; + int j; + char *str; snrand(&you); - point(&p,COLUMNS/2 - 8,LINES/2 - 1); + point(&p, COLUMNS / 2 - 8, LINES / 2 - 1); if (p.col < 0) p.col = 0; if (p.line < 0) @@ -615,152 +640,172 @@ int w;{ penalty = 0; } else { str = "SPACE WARP!!!"; - penalty += loot/PENALTY; + penalty += loot / PENALTY; } - for(j=0;j<3;j++){ + for (j = 0; j < 3; j++) { clear(); delay(5); - apr(&p,str); + apr(&p, str); delay(10); } setup(); winnings(cashvalue); } + +void snap() { struct point p; - int i; - if(you.line < 3){ - pchar(point(&p,you.col,0),'-'); + if (you.line < 3) { + pchar(point(&p, you.col, 0), '-'); } - if(you.line > lcnt-4){ - pchar(point(&p,you.col,lcnt-1),'_'); + if (you.line > lcnt - 4) { + pchar(point(&p, you.col, lcnt - 1), '_'); } - if(you.col < 10){ - pchar(point(&p,0,you.line),'('); + if (you.col < 10) { + pchar(point(&p, 0, you.line), '('); } - if(you.col > ccnt-10){ - pchar(point(&p,ccnt-1,you.line),')'); + if (you.col > ccnt - 10) { + pchar(point(&p, ccnt - 1, you.line), ')'); } - if (! stretch(&money)) if (! stretch(&finish)) delay(10); - if(you.line < 3){ - point(&p,you.col,0); + if (!stretch(&money)) + if (!stretch(&finish)) + delay(10); + if (you.line < 3) { + point(&p, you.col, 0); chk(&p); } - if(you.line > lcnt-4){ - point(&p,you.col,lcnt-1); + if (you.line > lcnt - 4) { + point(&p, you.col, lcnt - 1); chk(&p); } - if(you.col < 10){ - point(&p,0,you.line); + if (you.col < 10) { + point(&p, 0, you.line); chk(&p); } - if(you.col > ccnt-10){ - point(&p,ccnt-1,you.line); + if (you.col > ccnt - 10) { + point(&p, ccnt - 1, you.line); chk(&p); } fflush(stdout); } + +int stretch(ps) -struct point *ps;{ + struct point *ps; +{ struct point p; - point(&p,you.col,you.line); - if(abs(ps->col-you.col) < 6){ - if(you.line < ps->line){ - for (p.line = you.line+1;p.line <= ps->line;p.line++) - pchar(&p,'v'); + point(&p, you.col, you.line); + if (abs(ps->col - you.col) < 6) { + if (you.line < ps->line) { + for (p.line = you.line + 1; p.line <= ps->line; + p.line++) + pchar(&p, 'v'); delay(10); - for (;p.line > you.line;p.line--) + for (; p.line > you.line; p.line--) chk(&p); } else { - for (p.line = you.line-1;p.line >= ps->line;p.line--) - pchar(&p,'^'); + for (p.line = you.line - 1; p.line >= ps->line; + p.line--) + pchar(&p, '^'); delay(10); - for (;p.line < you.line;p.line++) + for (; p.line < you.line; p.line++) chk(&p); } - return(1); - } else if(abs(ps->line-you.line) < 3){ - p.line = you.line; - if(you.col < ps->col){ - for (p.col = you.col+1;p.col <= ps->col;p.col++) - pchar(&p,'>'); - delay(10); - for (;p.col > you.col;p.col--) - chk(&p); - } else { - for (p.col = you.col-1;p.col >= ps->col;p.col--) - pchar(&p,'<'); - delay(10); - for (;p.col < you.col;p.col++) - chk(&p); + return (1); + } else + if (abs(ps->line - you.line) < 3) { + p.line = you.line; + if (you.col < ps->col) { + for (p.col = you.col + 1; p.col <= ps->col; + p.col++) + pchar(&p, '>'); + delay(10); + for (; p.col > you.col; p.col--) + chk(&p); + } else { + for (p.col = you.col - 1; p.col >= ps->col; + p.col--) + pchar(&p, '<'); + delay(10); + for (; p.col < you.col; p.col++) + chk(&p); + } + return (1); } - return(1); - } - return(0); + return (0); } +void surround(ps) -struct point *ps;{ + struct point *ps; +{ struct point x; - int i,j; - - if(ps->col == 0)ps->col++; - if(ps->line == 0)ps->line++; - if(ps->line == LINES -1)ps->line--; - if(ps->col == COLUMNS -1)ps->col--; - apr(point(&x,ps->col-1,ps->line-1),"/*\\\r* *\r\\*/"); - for (j=0;j<20;j++){ - pchar(ps,'@'); + int j; + + if (ps->col == 0) + ps->col++; + if (ps->line == 0) + ps->line++; + if (ps->line == LINES - 1) + ps->line--; + if (ps->col == COLUMNS - 1) + ps->col--; + apr(point(&x, ps->col - 1, ps->line - 1), "/*\\\r* *\r\\*/"); + for (j = 0; j < 20; j++) { + pchar(ps, '@'); delay(1); - pchar(ps,' '); + pchar(ps, ' '); delay(1); } - if (post(cashvalue,0)) { - apr(point(&x,ps->col-1,ps->line-1)," \ro.o\r\\_/"); + if (post(cashvalue, 0)) { + apr(point(&x, ps->col - 1, ps->line - 1), " \ro.o\r\\_/"); delay(6); - apr(point(&x,ps->col-1,ps->line-1)," \ro.-\r\\_/"); + apr(point(&x, ps->col - 1, ps->line - 1), " \ro.-\r\\_/"); delay(6); } - apr(point(&x,ps->col-1,ps->line-1)," \ro.o\r\\_/"); + apr(point(&x, ps->col - 1, ps->line - 1), " \ro.o\r\\_/"); } + +void win(ps) -struct point *ps; + struct point *ps; { struct point x; - int j,k; - int boxsize; /* actually diameter of box, not radius */ + int j, k; + int boxsize; /* actually diameter of box, not radius */ boxsize = fast ? 10 : 4; - point(&x,ps->col,ps->line); - for(j=1;jcol, ps->line); + for (j = 1; j < boxsize; j++) { + for (k = 0; k < j; k++) { + pchar(&x, '#'); x.line--; } - for(k=0;k=0; i--) + for (i = 4; i >= 0; i--) if (same(&snake[i], &snake[5])) issame++; if (!issame) - pchar(&snake[5],' '); - for(i=4; i>=0; i--) - snake[i+1]= snake[i]; + pchar(&snake[5], ' '); + for (i = 4; i >= 0; i--) + snake[i + 1] = snake[i]; chase(&snake[0], &snake[1]); - pchar(&snake[1],SNAKETAIL); - pchar(&snake[0],SNAKEHEAD); - for(i=0; i<6; i++) - { - if (same(&snake[i],&you)) - { + pchar(&snake[1], SNAKETAIL); + pchar(&snake[0], SNAKEHEAD); + for (i = 0; i < 6; i++) { + if (same(&snake[i], &you)) { surround(&you); i = (cashvalue) % 10; - bonus = ((rand()>>8) & 0377)% 10; + bonus = ((rand() >> 8) & 0377) % 10; ll(); pr("%d\n", bonus); delay(30); @@ -792,9 +835,9 @@ pushsnake() spacewarp(1); logit("bonus"); flushi(); - return(1); + return (1); } - if ( loot >= penalty ){ + if (loot >= penalty) { pr("You and your $%d have been eaten\n", cashvalue); } else { @@ -806,68 +849,73 @@ pushsnake() done(); } } - return(0); + return (0); } - + +int chk(sp) -struct point *sp; + struct point *sp; { - int j; + int j; - if (same(sp,&money)) { - pchar(sp,TREASURE); - return(2); + if (same(sp, &money)) { + pchar(sp, TREASURE); + return (2); } - if (same(sp,&finish)) { - pchar(sp,GOAL); - return(3); + if (same(sp, &finish)) { + pchar(sp, GOAL); + return (3); } - if (same(sp,&snake[0])) { - pchar(sp,SNAKEHEAD); - return(4); + if (same(sp, &snake[0])) { + pchar(sp, SNAKEHEAD); + return (4); } - for(j=1;j<6;j++){ - if(same(sp,&snake[j])){ - pchar(sp,SNAKETAIL); - return(4); + for (j = 1; j < 6; j++) { + if (same(sp, &snake[j])) { + pchar(sp, SNAKETAIL); + return (4); } } - if ((sp->col < 4) && (sp->line == 0)){ + if ((sp->col < 4) && (sp->line == 0)) { winnings(cashvalue); - if((you.line == 0) && (you.col < 4)) pchar(&you,ME); - return(5); + if ((you.line == 0) && (you.col < 4)) + pchar(&you, ME); + return (5); } - if (same(sp,&you)) { - pchar(sp,ME); - return(1); + if (same(sp, &you)) { + pchar(sp, ME); + return (1); } - pchar(sp,' '); - return(0); + pchar(sp, ' '); + return (0); } + +void winnings(won) -int won; + int won; { struct point p; p.line = p.col = 1; - if(won>0){ + if (won > 0) { move(&p); - pr("$%d",won); + pr("$%d", won); } } void -stop(){ - signal(SIGINT,SIG_IGN); +stop(dummy) + int dummy; +{ + signal(SIGINT, SIG_IGN); ll(); length(moves); done(); } +void suspend() { - char *sh; - ll(); cook(); kill(getpid(), SIGTSTP); @@ -876,19 +924,21 @@ suspend() winnings(cashvalue); } +void length(num) -int num; + int num; { - pr("You made %d moves.\n",num); + pr("You made %d moves.\n", num); } +void logit(msg) -char *msg; + const char *msg; { - FILE *logfile; - time_t t; + FILE *logfile; + time_t t; - if ((logfile=fopen(_PATH_LOGFILE, "a")) != NULL) { + if ((logfile = fopen(_PATH_LOGFILE, "a")) != NULL) { time(&t); fprintf(logfile, "%s $%d %dx%d %s %s", getlogin(), cashvalue, lcnt, ccnt, msg, ctime(&t)); diff --git a/snake/snake/snake.h b/snake/snake/snake.h index e43e9aaa..e43169ca 100644 --- a/snake/snake/snake.h +++ b/snake/snake/snake.h @@ -1,4 +1,4 @@ -/* $NetBSD: snake.h,v 1.7 1996/07/03 04:17:25 chopps Exp $ */ +/* $NetBSD: snake.h,v 1.8 1997/10/12 01:49:29 lukem Exp $ */ /* * Copyright (c) 1980, 1993 @@ -35,13 +35,16 @@ * @(#)snake.h 8.1 (Berkeley) 5/31/93 */ -# include -# include -# include # include +# include +# include +# include +# include # include +# include +# include +# include # include -# include #define ESC '\033' @@ -59,7 +62,6 @@ int lcnt, ccnt; /* user's idea of screen size */ char PC; int AM, BW; char tbuf[1024], tcapbuf[128]; -char *tgetstr(), *tgoto(); int Klength; /* length of KX strings */ int chunk; /* amount of money given at a time */ speed_t ospeed; @@ -74,13 +76,52 @@ struct point { }; struct point cursor; struct termios orig, new; -struct point *point(); -#if __STDC__ -void apr(struct point *, const char *, ...); -void pr(const char *, ...); -#else -void apr(); -void pr(); -#endif #define same(s1, s2) ((s1)->line == (s2)->line && (s1)->col == (s2)->col) + + +void apr __P((struct point *, const char *, ...)); +void bs __P((void)); +void chase __P((struct point *, struct point *)); +int chk __P((struct point *)); +void clear __P((void)); +void cook __P((void)); +void cr __P((void)); +void delay __P((int)); +void done __P((void)); +void down __P((void)); +void drawbox __P((void)); +void flushi __P((void)); +void getcap __P((void)); +void gto __P((struct point *)); +void home __P((void)); +void length __P((int)); +void ll __P((void)); +void logit __P((const char *)); +void mainloop __P((void)); +void move __P((struct point *)); +void nd __P((void)); +void outch __P((int)); +void pch __P((int)); +void pchar __P((struct point *, char)); +struct point *point __P((struct point *, int, int)); +int post __P((int, int)); +void pr __P((const char *, ...)); +void pstring __P((const char *)); +int pushsnake __P((void)); +void putpad __P((char *)); +void raw __P((void)); +void right __P((struct point *)); +void setup __P((void)); +void snap __P((void)); +void snap __P((void)); +void snrand __P((struct point *)); +void spacewarp __P((int)); +void stop __P((int)); +int stretch __P((struct point *)); +int stretch __P((struct point *)); +void surround __P((struct point *)); +void suspend __P((void)); +void up __P((void)); +void win __P((struct point *)); +void winnings __P((int)); diff --git a/snake/snscore/snscore.c b/snake/snscore/snscore.c index a45babca..ddcb0fb9 100644 --- a/snake/snscore/snscore.c +++ b/snake/snscore/snscore.c @@ -1,4 +1,4 @@ -/* $NetBSD: snscore.c,v 1.5 1995/04/24 12:25:43 cgd Exp $ */ +/* $NetBSD: snscore.c,v 1.6 1997/10/12 01:49:33 lukem Exp $ */ /* * Copyright (c) 1980, 1993 @@ -33,21 +33,22 @@ * SUCH DAMAGE. */ +#include #ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1980, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; +__COPYRIGHT("@(#) Copyright (c) 1980, 1993\n\ + The Regents of the University of California. All rights reserved.\n"); #endif /* not lint */ #ifndef lint #if 0 static char sccsid[] = "@(#)snscore.c 8.1 (Berkeley) 7/19/93"; #else -static char rcsid[] = "$NetBSD: snscore.c,v 1.5 1995/04/24 12:25:43 cgd Exp $"; +__RCSID("$NetBSD: snscore.c,v 1.6 1997/10/12 01:49:33 lukem Exp $"); #endif #endif /* not lint */ #include +#include #include #include #include @@ -63,8 +64,12 @@ struct player { char *name; } players[MAXPLAYERS], temp; +int main __P((int, char **)); + int -main() +main(argc, argv) + int argc; + char *argv[]; { short uid, score; FILE *fd; @@ -75,10 +80,8 @@ main() struct passwd *p; fd = fopen(recfile, "r"); - if (fd == NULL) { - perror(recfile); - exit(1); - } + if (fd == NULL) + err(1, "opening `%s'", recfile); printf("Snake players scores to date\n"); fread(&whoallbest, sizeof(short), 1, fd); fread(&allbest, sizeof(short), 1, fd); -- cgit v1.2.3-56-ge451