diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 08:53:40 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 08:53:40 +0000 |
commit | d6583bb2a13f329cf0332ef2570eb8bb8fc0e39c (patch) | |
tree | ece253b876159b39c620e62b6c9b1174642e070e /games/hangman |
initial import of NetBSD tree
Diffstat (limited to 'games/hangman')
-rw-r--r-- | games/hangman/Makefile | 14 | ||||
-rw-r--r-- | games/hangman/endgame.c | 91 | ||||
-rw-r--r-- | games/hangman/extern.c | 80 | ||||
-rw-r--r-- | games/hangman/getguess.c | 114 | ||||
-rw-r--r-- | games/hangman/getword.c | 81 | ||||
-rw-r--r-- | games/hangman/hangman.6 | 57 | ||||
-rw-r--r-- | games/hangman/hangman.h | 82 | ||||
-rw-r--r-- | games/hangman/main.c | 81 | ||||
-rw-r--r-- | games/hangman/pathnames.h | 38 | ||||
-rw-r--r-- | games/hangman/playgame.c | 66 | ||||
-rw-r--r-- | games/hangman/prdata.c | 64 | ||||
-rw-r--r-- | games/hangman/prman.c | 61 | ||||
-rw-r--r-- | games/hangman/prword.c | 55 | ||||
-rw-r--r-- | games/hangman/setup.c | 78 |
14 files changed, 962 insertions, 0 deletions
diff --git a/games/hangman/Makefile b/games/hangman/Makefile new file mode 100644 index 00000000000..1c965e9281c --- /dev/null +++ b/games/hangman/Makefile @@ -0,0 +1,14 @@ +# $NetBSD: Makefile,v 1.5 1995/03/23 08:32:38 cgd Exp $ +# @(#)Makefile 8.1 (Berkeley) 5/31/93 + +PROG= hangman +SRCS= endgame.c extern.c getguess.c getword.c main.c playgame.c \ + prdata.c prman.c prword.c setup.c +MAN= hangman.6 +DPADD= ${LIBCURSES} ${LIBTERM} +LDADD= -lcurses -ltermlib +HIDEGAME=hidegame + +.include <bsd.prog.mk> + + diff --git a/games/hangman/endgame.c b/games/hangman/endgame.c new file mode 100644 index 00000000000..300c0efb83b --- /dev/null +++ b/games/hangman/endgame.c @@ -0,0 +1,91 @@ +/* $NetBSD: endgame.c,v 1.3 1995/03/23 08:32:40 cgd Exp $ */ + +/* + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)endgame.c 8.1 (Berkeley) 5/31/93"; +#else +static char rcsid[] = "$NetBSD: endgame.c,v 1.3 1995/03/23 08:32:40 cgd Exp $"; +#endif +#endif /* not lint */ + +# include "hangman.h" + +/* + * endgame: + * Do what's necessary at the end of the game + */ +endgame() +{ + register char ch; + + prman(); + if (Errors >= MAXERRS) + Errors = MAXERRS + 2; + prword(); + prdata(); + move(MESGY, MESGX); + if (Errors > MAXERRS) + printw("Sorry, the word was \"%s\"\n", Word); + else + printw("You got it!\n"); + + for (;;) { + mvaddstr(MESGY + 1, MESGX, "Another word? "); + leaveok(stdscr, FALSE); + refresh(); + if ((ch = readch()) == 'n') + die(); + else if (ch == 'y') + break; + mvaddstr(MESGY + 2, MESGX, "Please type 'y' or 'n'"); + } + + leaveok(stdscr, TRUE); + move(MESGY, MESGX); + deleteln(); + deleteln(); + deleteln(); +} + + + + + + + + + + diff --git a/games/hangman/extern.c b/games/hangman/extern.c new file mode 100644 index 00000000000..2d5f0082873 --- /dev/null +++ b/games/hangman/extern.c @@ -0,0 +1,80 @@ +/* $NetBSD: extern.c,v 1.3 1995/03/23 08:32:41 cgd Exp $ */ + +/* + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)extern.c 8.1 (Berkeley) 5/31/93"; +#else +static char rcsid[] = "$NetBSD: extern.c,v 1.3 1995/03/23 08:32:41 cgd Exp $"; +#endif +#endif /* not lint */ + +# include "hangman.h" + +bool Guessed[26]; + +char Word[BUFSIZ], + Known[BUFSIZ], + *Noose_pict[] = { + " ______", + " | |", + " |", + " |", + " |", + " |", + " __|_____", + " | |___", + " |_________|", + NULL + }; + +int Errors, + Wordnum = 0; + +double Average = 0.0; + +ERR_POS Err_pos[MAXERRS] = { + { 2, 10, 'O' }, + { 3, 10, '|' }, + { 4, 10, '|' }, + { 5, 9, '/' }, + { 3, 9, '/' }, + { 3, 11, '\\' }, + { 5, 11, '\\' } +}; + +FILE *Dict = NULL; + +off_t Dict_size; diff --git a/games/hangman/getguess.c b/games/hangman/getguess.c new file mode 100644 index 00000000000..e7a31acda7e --- /dev/null +++ b/games/hangman/getguess.c @@ -0,0 +1,114 @@ +/* $NetBSD: getguess.c,v 1.5 1995/03/23 08:32:43 cgd Exp $ */ + +/* + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)getguess.c 8.1 (Berkeley) 5/31/93"; +#else +static char rcsid[] = "$NetBSD: getguess.c,v 1.5 1995/03/23 08:32:43 cgd Exp $"; +#endif +#endif /* not lint */ + +#include <sys/ttydefaults.h> +#include "hangman.h" + +/* + * getguess: + * Get another guess + */ +getguess() +{ + register int i; + register int ch; + register bool correct; + + leaveok(stdscr, FALSE); + for (;;) { + move(PROMPTY, PROMPTX + sizeof "Guess: "); + refresh(); + ch = readch(); + if (isalpha(ch)) { + if (isupper(ch)) + ch = tolower(ch); + if (Guessed[ch - 'a']) + mvprintw(MESGY, MESGX, "Already guessed '%c'", ch); + else + break; + } + else if (ch == CTRL('D')) + die(); + else + mvprintw(MESGY, MESGX, "Not a valid guess: '%s'", + unctrl(ch)); + } + leaveok(stdscr, TRUE); + move(MESGY, MESGX); + clrtoeol(); + + Guessed[ch - 'a'] = TRUE; + correct = FALSE; + for (i = 0; Word[i] != '\0'; i++) + if (Word[i] == ch) { + Known[i] = ch; + correct = TRUE; + } + if (!correct) + Errors++; +} + +/* + * readch; + * Read a character from the input + */ +readch() +{ + register int cnt, r; + auto char ch; + + cnt = 0; + for (;;) { + if (read(0, &ch, sizeof ch) <= 0) + { + if (++cnt > 100) + die(); + } + else if (ch == CTRL('L')) { + wrefresh(curscr); + mvcur(0, 0, curscr->cury, curscr->curx); + } + else + return ch; + } +} diff --git a/games/hangman/getword.c b/games/hangman/getword.c new file mode 100644 index 00000000000..e858fabeff6 --- /dev/null +++ b/games/hangman/getword.c @@ -0,0 +1,81 @@ +/* $NetBSD: getword.c,v 1.4 1995/03/23 08:32:45 cgd Exp $ */ + +/* + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)getword.c 8.1 (Berkeley) 5/31/93"; +#else +static char rcsid[] = "$NetBSD: getword.c,v 1.4 1995/03/23 08:32:45 cgd Exp $"; +#endif +#endif /* not lint */ + +#include "hangman.h" +#include <stdlib.h> + +/* + * getword: + * Get a valid word out of the dictionary file + */ +getword() +{ + register FILE *inf; + register char *wp, *gp; + register long pos; + + inf = Dict; + for (;;) { + pos = (double)rand() / (RAND_MAX + 1.0) * (double)Dict_size; + fseek(inf, pos, 0); + if (fgets(Word, BUFSIZ, inf) == NULL) + continue; + if (fgets(Word, BUFSIZ, inf) == NULL) + continue; + Word[strlen(Word) - 1] = '\0'; + if (strlen(Word) < MINLEN) + continue; + for (wp = Word; *wp; wp++) + if (!islower(*wp)) + goto cont; + break; +cont: ; + } + gp = Known; + wp = Word; + while (*wp) { + *gp++ = '-'; + wp++; + } + *gp = '\0'; +} diff --git a/games/hangman/hangman.6 b/games/hangman/hangman.6 new file mode 100644 index 00000000000..42040574dc1 --- /dev/null +++ b/games/hangman/hangman.6 @@ -0,0 +1,57 @@ +.\" $NetBSD: hangman.6,v 1.5 1995/03/23 08:32:46 cgd Exp $ +.\" +.\" 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 +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 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 +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)hangman.6 8.1 (Berkeley) 5/31/93 +.\" +.Dd May 31, 1993 +.Dt HANGMAN 6 +.Os +.Sh NAME +.Nm hangman +.Nd Computer version of the game hangman +.Sh SYNOPSIS +.Nm /usr/games/hangman +.Sh DESCRIPTION +In +.Nm hangman, +the computer picks a word from the on-line word list +and you must try to guess it. +The computer keeps track of which letters have been guessed +and how many wrong guesses you have made on the screen in a graphic fashion. +.Sh FILES +.Bl -tag -width /usr/share/dict/words -compact +.It Pa /usr/share/dict/words +On-line word list +.El +.Sh AUTHOR +Ken Arnold diff --git a/games/hangman/hangman.h b/games/hangman/hangman.h new file mode 100644 index 00000000000..7452b3ecd8f --- /dev/null +++ b/games/hangman/hangman.h @@ -0,0 +1,82 @@ +/* $NetBSD: hangman.h,v 1.5 1995/04/24 12:23:44 cgd Exp $ */ + +/* + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)hangman.h 8.1 (Berkeley) 5/31/93 + */ + +# include <curses.h> +# include <sys/types.h> +# include <sys/stat.h> +# include <ctype.h> +# include <signal.h> +# include <string.h> +# include "pathnames.h" + +# define MINLEN 6 +# define MAXERRS 7 + +# define MESGY 12 +# define MESGX 0 +# define PROMPTY 11 +# define PROMPTX 0 +# define KNOWNY 10 +# define KNOWNX 1 +# define NUMBERY 4 +# define NUMBERX (COLS - 1 - 26) +# define AVGY 5 +# define AVGX (COLS - 1 - 26) +# define GUESSY 2 +# define GUESSX (COLS - 1 - 26) + + +typedef struct { + short y, x; + char ch; +} ERR_POS; + +extern bool Guessed[]; + +extern char Word[], Known[], *Noose_pict[]; + +extern int Errors, Wordnum; + +extern double Average; + +extern ERR_POS Err_pos[]; + +extern FILE *Dict; + +extern off_t Dict_size; + +void die(); diff --git a/games/hangman/main.c b/games/hangman/main.c new file mode 100644 index 00000000000..3da3bac1077 --- /dev/null +++ b/games/hangman/main.c @@ -0,0 +1,81 @@ +/* $NetBSD: main.c,v 1.3 1995/03/23 08:32:50 cgd Exp $ */ + +/* + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +static char copyright[] = +"@(#) Copyright (c) 1983, 1993\n\ + The Regents of the University of California. All rights reserved.\n"; +#endif /* not lint */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 5/31/93"; +#else +static char rcsid[] = "$NetBSD: main.c,v 1.3 1995/03/23 08:32:50 cgd Exp $"; +#endif +#endif /* not lint */ + +# include "hangman.h" + +/* + * This game written by Ken Arnold. + */ +main() +{ + void die(); + + initscr(); + signal(SIGINT, die); + setup(); + for (;;) { + Wordnum++; + playgame(); + Average = (Average * (Wordnum - 1) + Errors) / Wordnum; + } + /* NOTREACHED */ +} + +/* + * die: + * Die properly. + */ +void +die() +{ + mvcur(0, COLS - 1, LINES - 1, 0); + endwin(); + putchar('\n'); + exit(0); +} diff --git a/games/hangman/pathnames.h b/games/hangman/pathnames.h new file mode 100644 index 00000000000..5b539e37670 --- /dev/null +++ b/games/hangman/pathnames.h @@ -0,0 +1,38 @@ +/* $NetBSD: pathnames.h,v 1.3 1995/03/23 08:32:51 cgd Exp $ */ + +/*- + * Copyright (c) 1990, 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)pathnames.h 8.1 (Berkeley) 5/31/93 + */ + +#define _PATH_DICT "/usr/share/dict/words" diff --git a/games/hangman/playgame.c b/games/hangman/playgame.c new file mode 100644 index 00000000000..5a591520d71 --- /dev/null +++ b/games/hangman/playgame.c @@ -0,0 +1,66 @@ +/* $NetBSD: playgame.c,v 1.3 1995/03/23 08:32:53 cgd Exp $ */ + +/*- + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)playgame.c 8.1 (Berkeley) 5/31/93"; +#else +static char rcsid[] = "$NetBSD: playgame.c,v 1.3 1995/03/23 08:32:53 cgd Exp $"; +#endif +#endif /* not lint */ + +# include "hangman.h" + +/* + * playgame: + * play a game + */ +playgame() +{ + register bool *bp; + + getword(); + Errors = 0; + bp = Guessed; + while (bp < &Guessed[26]) + *bp++ = FALSE; + while (Errors < MAXERRS && index(Known, '-') != NULL) { + prword(); + prdata(); + prman(); + getguess(); + } + endgame(); +} diff --git a/games/hangman/prdata.c b/games/hangman/prdata.c new file mode 100644 index 00000000000..adfff8f3e7e --- /dev/null +++ b/games/hangman/prdata.c @@ -0,0 +1,64 @@ +/* $NetBSD: prdata.c,v 1.3 1995/03/23 08:32:54 cgd Exp $ */ + +/*- + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)prdata.c 8.1 (Berkeley) 5/31/93"; +#else +static char rcsid[] = "$NetBSD: prdata.c,v 1.3 1995/03/23 08:32:54 cgd Exp $"; +#endif +#endif /* not lint */ + +# include "hangman.h" + +/* + * prdata: + * Print out the current guesses + */ +prdata() +{ + register bool *bp; + + move(GUESSY, GUESSX + sizeof "Guessed: "); + bp = Guessed; + while (bp < &Guessed[26]) + if (*bp++) + addch((bp - Guessed) + 'a' - 1); + clrtoeol(); + mvprintw(NUMBERY, NUMBERX + sizeof "Word #: ", "%d", Wordnum); + mvprintw(AVGY, AVGX + sizeof "Current Average: ", "%.3f", + (Average * (Wordnum - 1) + Errors) / Wordnum); + mvprintw(AVGY + 1, AVGX + sizeof "Overall Average: ", "%.3f", Average); +} diff --git a/games/hangman/prman.c b/games/hangman/prman.c new file mode 100644 index 00000000000..2337b6390e3 --- /dev/null +++ b/games/hangman/prman.c @@ -0,0 +1,61 @@ +/* $NetBSD: prman.c,v 1.3 1995/03/23 08:32:56 cgd Exp $ */ + +/*- + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)prman.c 8.1 (Berkeley) 5/31/93"; +#else +static char rcsid[] = "$NetBSD: prman.c,v 1.3 1995/03/23 08:32:56 cgd Exp $"; +#endif +#endif /* not lint */ + +# include "hangman.h" + +/* + * prman: + * Print out the man appropriately for the give number + * of incorrect guesses. + */ +prman() +{ + register int i; + + for (i = 0; i < Errors; i++) + mvaddch(Err_pos[i].y, Err_pos[i].x, Err_pos[i].ch); + while (i < MAXERRS) { + mvaddch(Err_pos[i].y, Err_pos[i].x, ' '); + i++; + } +} diff --git a/games/hangman/prword.c b/games/hangman/prword.c new file mode 100644 index 00000000000..ba2ab634d3b --- /dev/null +++ b/games/hangman/prword.c @@ -0,0 +1,55 @@ +/* $NetBSD: prword.c,v 1.3 1995/03/23 08:32:58 cgd Exp $ */ + +/*- + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)prword.c 8.1 (Berkeley) 5/31/93"; +#else +static char rcsid[] = "$NetBSD: prword.c,v 1.3 1995/03/23 08:32:58 cgd Exp $"; +#endif +#endif /* not lint */ + +# include "hangman.h" + +/* + * prword: + * Print out the current state of the word + */ +prword() +{ + move(KNOWNY, KNOWNX + sizeof "Word: "); + addstr(Known); + clrtoeol(); +} diff --git a/games/hangman/setup.c b/games/hangman/setup.c new file mode 100644 index 00000000000..73c835f9551 --- /dev/null +++ b/games/hangman/setup.c @@ -0,0 +1,78 @@ +/* $NetBSD: setup.c,v 1.3 1995/03/23 08:32:59 cgd Exp $ */ + +/*- + * 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 + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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 + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)setup.c 8.1 (Berkeley) 5/31/93"; +#else +static char rcsid[] = "$NetBSD: setup.c,v 1.3 1995/03/23 08:32:59 cgd Exp $"; +#endif +#endif /* not lint */ + +# include "hangman.h" + +/* + * setup: + * Set up the strings on the screen. + */ +setup() +{ + register char **sp; + static struct stat sbuf; + + noecho(); + crmode(); + + mvaddstr(PROMPTY, PROMPTX, "Guess:"); + mvaddstr(GUESSY, GUESSX, "Guessed:"); + mvaddstr(NUMBERY, NUMBERX, "Word #:"); + mvaddstr(AVGY, AVGX, "Current Average:"); + mvaddstr(AVGY + 1, AVGX, "Overall Average:"); + mvaddstr(KNOWNY, KNOWNX, "Word: "); + + for (sp = Noose_pict; *sp != NULL; sp++) { + move(sp - Noose_pict, 0); + addstr(*sp); + } + + srand(time(NULL) + getpid()); + if ((Dict = fopen(_PATH_DICT, "r")) == NULL) { + perror(_PATH_DICT); + endwin(); + exit(1); + } + fstat(fileno(Dict), &sbuf); + Dict_size = sbuf.st_size; +} |