X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/462fca95471224f85b85be911e72faee16cd1597..HEAD:/battlestar/fly.c diff --git a/battlestar/fly.c b/battlestar/fly.c index 663cf739..6277def6 100644 --- a/battlestar/fly.c +++ b/battlestar/fly.c @@ -1,6 +1,8 @@ +/* $NetBSD: fly.c,v 1.16 2021/05/02 12:50:43 rillig Exp $ */ + /* - * Copyright (c) 1983 Regents of the University of California. - * All rights reserved. + * Copyright (c) 1983, 1993 + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,11 +12,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -31,28 +29,40 @@ * SUCH DAMAGE. */ +#include #ifndef lint -/*static char sccsid[] = "from: @(#)fly.c 5.6 (Berkeley) 3/4/91";*/ -static char rcsid[] = "$Id: fly.c,v 1.2 1993/08/01 18:56:01 mycroft Exp $"; -#endif /* not lint */ +#if 0 +static char sccsid[] = "@(#)fly.c 8.2 (Berkeley) 4/28/95"; +#else +__RCSID("$NetBSD: fly.c,v 1.16 2021/05/02 12:50:43 rillig Exp $"); +#endif +#endif /* not lint */ -#include "externs.h" +#include "extern.h" #undef UP #include +#include -#define abs(a) ((a) < 0 ? -(a) : (a)) #define MIDR (LINES/2 - 1) #define MIDC (COLS/2 - 1) -int row, column; -int dr = 0, dc = 0; -char destroyed; -int clock = 120; /* time for all the flights in the game */ -char cross = 0; -sig_t oldsig; +static int row, column; +static int dr = 0, dc = 0; +static char destroyed; +int ourclock = 120; /* time for all the flights in the game */ +static char cross = 0; +static sig_t oldsig; + +static void blast(void); +static void endfly(void); +static void moveenemy(int); +static void notarget(void); +static void screen(void); +static void succumb(int); +static void target(void); -void -succumb() +static void +succumb(int dummy __unused) { if (oldsig == SIG_DFL) { endfly(); @@ -60,225 +70,229 @@ succumb() } if (oldsig != SIG_IGN) { endfly(); - (*oldsig)(SIGINT); + (*oldsig) (SIGINT); } } -visual() +int +visual(void) { - void moveenemy(); - destroyed = 0; - savetty(); - if(initscr() == ERR){ + if (initscr() == NULL) { puts("Whoops! No more memory..."); - return(0); + return (0); } oldsig = signal(SIGINT, succumb); - crmode(); + cbreak(); noecho(); screen(); - row = rnd(LINES-3) + 1; - column = rnd(COLS-2) + 1; - moveenemy(); + row = rnd(LINES - 3) + 1; + column = rnd(COLS - 2) + 1; + moveenemy(0); for (;;) { - switch(getchar()){ - - case 'h': - case 'r': - dc = -1; - fuel--; - break; - - case 'H': - case 'R': - dc = -5; - fuel -= 10; - break; - - case 'l': - dc = 1; - fuel--; - break; - - case 'L': - dc = 5; - fuel -= 10; - break; - - case 'j': - case 'u': - dr = 1; - fuel--; - break; - - case 'J': - case 'U': - dr = 5; - fuel -= 10; - break; - - case 'k': - case 'd': - dr = -1; - fuel--; - break; - - case 'K': - case 'D': - dr = -5; - fuel -= 10; - break; - - case '+': - if (cross){ - cross = 0; - notarget(); - } - else - cross = 1; - break; - - case ' ': - case 'f': - if (torps){ - torps -= 2; - blast(); - if (row == MIDR && column - MIDC < 2 && MIDC - column < 2){ - destroyed = 1; - alarm(0); - } + switch (getchar()) { + + case 'h': + case 'r': + dc = -1; + fuel--; + break; + + case 'H': + case 'R': + dc = -5; + fuel -= 10; + break; + + case 'l': + dc = 1; + fuel--; + break; + + case 'L': + dc = 5; + fuel -= 10; + break; + + case 'j': + case 'u': + dr = 1; + fuel--; + break; + + case 'J': + case 'U': + dr = 5; + fuel -= 10; + break; + + case 'k': + case 'd': + dr = -1; + fuel--; + break; + + case 'K': + case 'D': + dr = -5; + fuel -= 10; + break; + + case '+': + if (cross) { + cross = 0; + notarget(); + } else + cross = 1; + break; + + case ' ': + case 'f': + if (torps) { + torps -= 2; + blast(); + if (row == MIDR && column < MIDC + 2 && + column > MIDC - 2) { + destroyed = 1; + alarm(0); } - else - mvaddstr(0,0,"*** Out of torpedoes. ***"); - break; + } else + mvaddstr(0, 0, "*** Out of torpedoes. ***"); + break; - case 'q': - endfly(); - return(0); + case 'q': + endfly(); + return (0); - default: - mvaddstr(0,26,"Commands = r,R,l,L,u,U,d,D,f,+,q"); - continue; + default: + mvaddstr(0, 26, "Commands = r,R,l,L,u,U,d,D,f,+,q"); + continue; - case EOF: - break; + case EOF: + break; } - if (destroyed){ + if (destroyed) { endfly(); - return(1); + return (1); } - if (clock <= 0){ + if (ourclock <= 0) { endfly(); die(); } } } -screen() +static void +screen(void) { - register int r,c,n; - int i; + int r, c, n; + int i; clear(); i = rnd(100); - for (n=0; n < i; n++){ - r = rnd(LINES-3) + 1; + for (n = 0; n < i; n++) { + r = rnd(LINES - 3) + 1; c = rnd(COLS); mvaddch(r, c, '.'); } - mvaddstr(LINES-1-1,21,"TORPEDOES FUEL TIME"); + mvaddstr(LINES - 1 - 1, 21, "TORPEDOES FUEL TIME"); refresh(); } -target() +static void +target(void) { - register int n; + int n; - move(MIDR,MIDC-10); + move(MIDR, MIDC - 10); addstr("------- + -------"); - for (n = MIDR-4; n < MIDR-1; n++){ - mvaddch(n,MIDC,'|'); - mvaddch(n+6,MIDC,'|'); + for (n = MIDR - 4; n < MIDR - 1; n++) { + mvaddch(n, MIDC, '|'); + mvaddch(n + 6, MIDC, '|'); } } -notarget() +static void +notarget(void) { - register int n; + int n; - move(MIDR,MIDC-10); + move(MIDR, MIDC - 10); addstr(" "); - for (n = MIDR-4; n < MIDR-1; n++){ - mvaddch(n,MIDC,' '); - mvaddch(n+6,MIDC,' '); + for (n = MIDR - 4; n < MIDR - 1; n++) { + mvaddch(n, MIDC, ' '); + mvaddch(n + 6, MIDC, ' '); } } -blast() +static void +blast(void) { - register int n; + int n; alarm(0); - move(LINES-1, 24); + move(LINES - 1, 24); printw("%3d", torps); - for(n = LINES-1-2; n >= MIDR + 1; n--){ - mvaddch(n, MIDC+MIDR-n, '/'); - mvaddch(n, MIDC-MIDR+n, '\\'); + for (n = LINES - 1 - 2; n >= MIDR + 1; n--) { + mvaddch(n, MIDC + MIDR - n, '/'); + mvaddch(n, MIDC - MIDR + n, '\\'); refresh(); } - mvaddch(MIDR,MIDC,'*'); - for(n = LINES-1-2; n >= MIDR + 1; n--){ - mvaddch(n, MIDC+MIDR-n, ' '); - mvaddch(n, MIDC-MIDR+n, ' '); + mvaddch(MIDR, MIDC, '*'); + for (n = LINES - 1 - 2; n >= MIDR + 1; n--) { + mvaddch(n, MIDC + MIDR - n, ' '); + mvaddch(n, MIDC - MIDR + n, ' '); refresh(); } alarm(1); } -void -moveenemy() +static void +moveenemy(int dummy __unused) { - double d; - int oldr, oldc; + double d; + int oldr, oldc; oldr = row; oldc = column; - if (fuel > 0){ - if (row + dr <= LINES-3 && row + dr > 0) + if (fuel > 0) { + if (row + dr <= LINES - 3 && row + dr > 0) row += dr; - if (column + dc < COLS-1 && column + dc > 0) + if (column + dc < COLS - 1 && column + dc > 0) column += dc; - } else if (fuel < 0){ - fuel = 0; - mvaddstr(0,60,"*** Out of fuel ***"); - } - d = (double) ((row - MIDR)*(row - MIDR) + (column - MIDC)*(column - MIDC)); - if (d < 16){ + } else + if (fuel < 0) { + fuel = 0; + mvaddstr(0, 60, "*** Out of fuel ***"); + } + d = (double) ((row - MIDR) * (row - MIDR) + (column - MIDC) * + (column - MIDC)); + if (d < 16) { row += (rnd(9) - 4) % (4 - abs(row - MIDR)); column += (rnd(9) - 4) % (4 - abs(column - MIDC)); } - clock--; + ourclock--; mvaddstr(oldr, oldc - 1, " "); if (cross) target(); mvaddstr(row, column - 1, "/-\\"); - move(LINES-1, 24); + move(LINES - 1, 24); printw("%3d", torps); - move(LINES-1, 42); + move(LINES - 1, 42); printw("%3d", fuel); - move(LINES-1, 57); - printw("%3d", clock); + move(LINES - 1, 57); + printw("%3d", ourclock); refresh(); signal(SIGALRM, moveenemy); alarm(1); } -endfly() +static void +endfly(void) { alarm(0); signal(SIGALRM, SIG_DFL); - mvcur(0,COLS-1,LINES-1,0); + mvcur(0, COLS - 1, LINES - 1, 0); endwin(); signal(SIGTSTP, SIG_DFL); signal(SIGINT, oldsig);