aboutsummaryrefslogtreecommitdiff
path: root/games/backgammon
diff options
context:
space:
mode:
authorMark Murray <markm@FreeBSD.org>2002-10-21 07:40:27 +0000
committerMark Murray <markm@FreeBSD.org>2002-10-21 07:40:27 +0000
commit88001492142be07a49016a8cf7eff78171d59f64 (patch)
treeb90261e8ce260fee190d0f359aa2884ddf2510de /games/backgammon
parente05f78b8316cc4c48131cbc9093827a26f204680 (diff)
downloadsrc-88001492142be07a49016a8cf7eff78171d59f64.tar.gz
src-88001492142be07a49016a8cf7eff78171d59f64.zip
Deorbit complete. We dont build these anymore, so into the attic they go.
Notes
Notes: svn path=/head/; revision=105614
Diffstat (limited to 'games/backgammon')
-rw-r--r--games/backgammon/Makefile5
-rw-r--r--games/backgammon/backgammon/Makefile15
-rw-r--r--games/backgammon/backgammon/backgammon.6198
-rw-r--r--games/backgammon/backgammon/extra.c257
-rw-r--r--games/backgammon/backgammon/main.c571
-rw-r--r--games/backgammon/backgammon/move.c556
-rw-r--r--games/backgammon/backgammon/text.c137
-rw-r--r--games/backgammon/backgammon/version.c45
-rw-r--r--games/backgammon/common_source/allow.c113
-rw-r--r--games/backgammon/common_source/back.h127
-rw-r--r--games/backgammon/common_source/board.c181
-rw-r--r--games/backgammon/common_source/check.c162
-rw-r--r--games/backgammon/common_source/fancy.c752
-rw-r--r--games/backgammon/common_source/init.c103
-rw-r--r--games/backgammon/common_source/odds.c117
-rw-r--r--games/backgammon/common_source/one.c173
-rw-r--r--games/backgammon/common_source/save.c186
-rw-r--r--games/backgammon/common_source/subs.c483
-rw-r--r--games/backgammon/common_source/table.c312
-rw-r--r--games/backgammon/teachgammon/Makefile15
-rw-r--r--games/backgammon/teachgammon/data.c319
-rw-r--r--games/backgammon/teachgammon/teach.c178
-rw-r--r--games/backgammon/teachgammon/ttext1.c188
-rw-r--r--games/backgammon/teachgammon/ttext2.c199
-rw-r--r--games/backgammon/teachgammon/tutor.c161
-rw-r--r--games/backgammon/teachgammon/tutor.h63
26 files changed, 0 insertions, 5616 deletions
diff --git a/games/backgammon/Makefile b/games/backgammon/Makefile
deleted file mode 100644
index 5384677eb67d..000000000000
--- a/games/backgammon/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 5/31/93
-
-SUBDIR= backgammon teachgammon
-
-.include <bsd.subdir.mk>
diff --git a/games/backgammon/backgammon/Makefile b/games/backgammon/backgammon/Makefile
deleted file mode 100644
index 8277c0939f32..000000000000
--- a/games/backgammon/backgammon/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 5/31/93
-# $FreeBSD$
-
-PROG= backgammon
-CFLAGS+=-DV7 -I${.CURDIR}/../common_source
-SRCS= allow.c board.c check.c extra.c fancy.c init.c main.c move.c \
- odds.c one.c save.c subs.c table.c text.c version.c
-MAN= backgammon.6
-DPADD= ${LIBTERMCAP} ${LIBCOMPAT}
-LDADD= -ltermcap -lcompat
-.PATH: ${.CURDIR}/../common_source
-HIDEGAME=hidegame
-
-.include "../../Makefile.inc"
-.include <bsd.prog.mk>
diff --git a/games/backgammon/backgammon/backgammon.6 b/games/backgammon/backgammon/backgammon.6
deleted file mode 100644
index 007c267de60e..000000000000
--- a/games/backgammon/backgammon/backgammon.6
+++ /dev/null
@@ -1,198 +0,0 @@
-.\" Copyright (c) 1980, 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.
-.\"
-.\" @(#)backgammon.6 8.1 (Berkeley) 5/31/93
-.\" $FreeBSD$
-.\"
-.TH BACKGAMMON 6 "May 31, 1993"
-.UC 5
-.SH NAME
-backgammon \- the game of backgammon
-.SH SYNOPSIS
-.B backgammon
-[ -h n r w b pr pw pb t\c
-.I term
-s\c
-.I file
-]
-.SH DESCRIPTION
-This program lets you play backgammon against the computer
-or against a "friend".
-All commands only are one letter,
-so you don't need to type a carriage return,
-except at the end of a move.
-The program is mostly self documenting,
-so that a question mark (?) will usually get some help.
-If you answer `y' when the program asks if you want the rules,
-you will get text explaining the rules of the game,
-some hints on strategy,
-instruction on how to use the program,
-and a tutorial consisting of a practice game against the computer.
-A description of how to use the program can be
-obtained by answering `y' when it asks if you want instructions.
-.PP
-The possible arguments for backgammon
-(most are unnecessary but some are very convenient)
-consist of:
-.ne 11
-.PP
-.na
-.TP 8
-.B -h
-Get a description of possible arguments and exit
-.TP 8
-.B -n
-don't ask for rules or instructions
-.TP 8
-.B -r
-player is red (implies -n)
-.TP 8
-.B -w
-player is white (implies -n)
-.TP 8
-.B -b
-two players, red and white (implies -n)
-.TP 8
-.B -pr
-print the board before red's turn
-.TP 8
-.B -pw
-print the board before white's turn
-.TP 8
-.B -pb
-print the board before both player's turn
-.TP 8
-.B -t\fIterm
-terminal is type
-.IR term ,
-uses /etc/termcap
-.TP 8
-.B -s\fIfile
-recover previously saved game from
-.IR file .
-.ad
-.PP
-.PP
-If
-.IR term
-has capabilities for direct cursor movement (see
-.IR termcap (5))
-.IR backgammon
-``fixes'' the board after each move,
-so the board does not need to be reprinted,
-unless the screen suffers some horrendous malady.
-Also, any `-p' option will be ignored.
-(The `-t' option is not necessary unless the terminal type does not match
-the entry in the /etc/termcap data base.)
-.SH QUICK\ REFERENCE
-When the program prompts by typing only your color,
-type a space or carriage return to roll, or
-.ne 5
-.PP
-.na
-.TP 8
-.B d
-to double
-.TP 8
-.B p
-to print the board
-.TP 8
-.B q
-to quit
-.TP 8
-.B s
-to save the game for later
-.PP
-.ad
-When the program prompts with 'Move:', type
-.ne 4
-.PP
-.na
-.TP 8
-.B p
-to print the board
-.TP 8
-.B q
-to quit
-.TP 8
-.B s
-to save the game
-.ad
-.PP
-or a
-.IR move ,
-which is a sequence of
-.ne 4
-.PP
-.na
-.TP 8
-.B s-f
-move from
-.BR s
-to
-.BR f
-.TP 8
-.B s/r
-move one man on
-.BR s
-the roll
-.BR r
-.ad
-.PP
-separated by commas or spaces and ending with a newline.
-Available abbreviations are
-.ne 4
-.PP
-.na
-.TP 10
-.B s-f1-f2
-means
-.BR s-f1,f1-f2
-.TP 10
-.B s/r1r2
-means
-.BR s/r1,s/r2
-.ad
-.PP
-Use `b' for bar and `h' for home,
-or 0 or 25 as appropriate.
-.SH AUTHOR
-Alan Char
-.SH FILES
-.TP 25
-/usr/games/teachgammon
-\- rules and tutorial
-.br
-.TP 25
-/etc/termcap
-\- terminal capabilities
-.SH BUGS
-The program's strategy needs much work.
diff --git a/games/backgammon/backgammon/extra.c b/games/backgammon/backgammon/extra.c
deleted file mode 100644
index 0b2406e01b05..000000000000
--- a/games/backgammon/backgammon/extra.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)extra.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "back.h"
-
-#ifdef DEBUG
-#include <stdio.h>
-FILE *trace;
-#endif
-
-/*
- * dble()
- * Have the current player double and ask opponent to accept.
- */
-
-dble () {
- int resp; /* response to y/n */
-
- for (;;) {
- writel (" doubles."); /* indicate double */
-
- if (cturn == -pnum) { /* see if computer accepts */
- if (dblgood()) { /* guess not */
- writel (" Declined.\n");
- nexturn();
- cturn *= -2; /* indicate loss */
- return;
- } else { /* computer accepts */
- writel (" Accepted.\n");
- gvalue *= 2; /* double game value */
- dlast = cturn;
- if (tflag)
- gwrite();
- return;
- }
- }
-
- /* ask if player accepts */
- writel (" Does ");
- writel (cturn == 1? color[2]: color[3]);
- writel (" accept?");
-
- /* get response from yorn,
- * a "2" means he said "p"
- * for print board. */
- if ((resp = yorn ('R')) == 2) {
- writel (" Reprint.\n");
- buflush();
- wrboard();
- writel (*Colorptr);
- continue;
- }
-
- /* check response */
- if (resp) {
- /* accepted */
- gvalue *= 2;
- dlast = cturn;
- if (tflag)
- gwrite();
- return;
- }
-
- nexturn (); /* declined */
- cturn *= -2;
- return;
- }
-}
-
-/*
- * dblgood ()
- * Returns 1 if the computer would double in this position. This
- * is not an exact science. The computer will decline a double that he
- * would have made. Accumulated judgments are kept in the variable n,
- * which is in "pips", i.e., the position of each man summed over all
- * men, with opponent's totals negative. Thus, n should have a positive
- * value of 7 for each move ahead, or a negative value of 7 for each one
- * behind.
- */
-
-dblgood () {
- int n; /* accumulated judgment */
- int OFFC = *offptr; /* no. of computer's men off */
- int OFFO = *offopp; /* no. of player's men off */
-
-#ifdef DEBUG
- int i;
- if (trace == NULL)
- trace = fopen ("bgtrace","w");
-#endif
-
- /* get real pip value */
- n = eval()*cturn;
-#ifdef DEBUG
- fputs ("\nDoubles:\nBoard: ",trace);
- for (i = 0; i < 26; i++)
- fprintf (trace," %d",board[i]);
- fprintf (trace,"\n\tpip = %d, ",n);
-#endif
-
- /* below adjusts pip value
- * according to position
- * judgments */
-
- /* check men moving off
- * board */
- if (OFFC > -15 || OFFO > -15) {
- if (OFFC < 0 && OFFO < 0) {
- OFFC += 15;
- OFFO += 15;
- n +=((OFFC-OFFO)*7)/2;
- } else if (OFFC < 0) {
- OFFC += 15;
- n -= OFFO*7/2;
- } else if (OFFO < 0) {
- OFFO += 15;
- n += OFFC*7/2;
- }
- if (OFFC < 8 && OFFO > 8)
- n -= 7;
- if (OFFC < 10 && OFFO > 10)
- n -= 7;
- if (OFFC < 12 && OFFO > 12)
- n -= 7;
- if (OFFO < 8 && OFFC > 8)
- n += 7;
- if (OFFO < 10 && OFFC > 10)
- n += 7;
- if (OFFO < 12 && OFFC > 12)
- n += 7;
- n += ((OFFC-OFFO)*7)/2;
- }
-
-#ifdef DEBUG
- fprintf (trace,"off = %d, ",n);
-#endif
-
- /* see if men are trapped */
- n -= freemen(bar);
- n += freemen(home);
- n += trapped(home,-cturn);
- n -= trapped(bar,cturn);
-
-#ifdef DEBUG
- fprintf (trace,"free = %d\n",n);
- fprintf (trace,"\tOFFC = %d, OFFO = %d\n",OFFC,OFFO);
- fflush (trace);
-#endif
-
- /* double if 2-3 moves ahead */
- if (n > 10+rnum(7))
- return(1);
- return (0);
-}
-
-freemen (b)
-int b;
-
-{
- int i, inc, lim;
-
- odds(0,0,0);
- if (board[b] == 0)
- return (0);
- inc = (b == 0? 1: -1);
- lim = (b == 0? 7: 18);
- for (i = b+inc; i != lim; i += inc)
- if (board[i]*inc < -1)
- odds(abs(b-i),0,abs(board[b]));
- if (abs(board[b]) == 1)
- return ((36-count())/5);
- return (count()/5);
-}
-
-trapped (n,inc)
-int n, inc;
-
-{
- int i, j, k;
- int c, l, ct;
-
- ct = 0;
- l = n+7*inc;
- for (i = n+inc; i != l; i += inc) {
- odds (0,0,0);
- c = abs(i-l);
- if (board[i]*inc > 0) {
- for (j = c; j < 13; j++)
- if (board[i+inc*j]*inc < -1) {
- if (j < 7)
- odds (j,0,1);
- for (k = 1; k < 7 && k < j; k++)
- if (j-k < 7)
- odds (k,j-k,1);
- }
- ct += abs(board[i])*(36-count());
- }
- }
- return (ct/5);
-}
-
-eval () {
-
- int i, j;
-
- for (j = i = 0; i < 26; i++)
- j += (board[i] >= 0 ? i*board[i] : (25-i)*board[i]);
-
- if (off[1] >= 0)
- j += 25*off[1];
- else
- j += 25*(off[1]+15);
-
- if (off[0] >= 0)
- j -= 25*off[0];
- else
- j -= 25*(off[0]+15);
- return (j);
-}
diff --git a/games/backgammon/backgammon/main.c b/games/backgammon/backgammon/main.c
deleted file mode 100644
index fc2110f57b01..000000000000
--- a/games/backgammon/backgammon/main.c
+++ /dev/null
@@ -1,571 +0,0 @@
-/*
- * Copyright (c) 1980, 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 const char 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[] = "@(#)main.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <stdio.h>
-#include <termcap.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-#include <signal.h>
-#include "back.h"
-
-#define MVPAUSE 5 /* time to sleep when stuck */
-#define MAXUSERS 35 /* maximum number of users */
-
-extern const char *const instr[]; /* text of instructions */
-extern const char *const message[]; /* update message */
-
-const char *helpm[] = { /* help message */
- "Enter a space or newline to roll, or",
- " R to reprint the board\tD to double",
- " S to save the game\tQ to quit",
- 0
-};
-
-const char *contin[] = { /* pause message */
- "(Type a newline to continue.)",
- "",
- 0
-};
-
-static const char rules[] = "\nDo you want the rules of the game?";
-static const char noteach[] = "Teachgammon not available!\n\007";
-static const char need[] = "Do you need instructions for this program?";
-static const char askcol[] =
- "Enter 'r' to play red, 'w' to play white, 'b' to play both:";
-static const char rollr[] = "Red rolls a ";
-static const char rollw[] = ". White rolls a ";
-static const char rstart[] = ". Red starts.\n";
-static const char wstart[] = ". White starts.\n";
-static const char toobad1[] = "Too bad, ";
-static const char unable[] = " is unable to use that roll.\n";
-static const char toobad2[] = ". Too bad, ";
-static const char cantmv[] = " can't move.\n";
-static const char bgammon[] = "Backgammon! ";
-static const char gammon[] = "Gammon! ";
-static const char again[] = ".\nWould you like to play again?";
-static const char svpromt[] = "Would you like to save this game?";
-
-static const char password[] = "losfurng";
-static char pbuf[10];
-
-main (argc,argv)
-int argc;
-char **argv;
-
-{
- int i; /* non-descript index */
- int l; /* non-descript index */
- char c; /* non-descript character storage */
-
- /* revoke privs */
- setgid(getgid());
-
- /* initialization */
- bflag = 2; /* default no board */
- acnt = 1; /* Nuber of args */
- signal (SIGINT,getout); /* trap interrupts */
- if (gtty (0,&tty) == -1) /* get old tty mode */
- errexit ("backgammon(gtty)");
- old = tty.sg_flags;
-#ifdef V7
- raw = ((noech = old & ~ECHO) | CBREAK); /* set up modes */
-#else
- raw = ((noech = old & ~ECHO) | RAW); /* set up modes */
-#endif
- ospeed = tty.sg_ospeed; /* for termlib */
-
- /* get terminal
- * capabilities, and
- * decide if it can
- * cursor address */
- tflag = getcaps (getenv ("TERM"));
- /* use whole screen
- * for text */
- if (tflag)
- begscr = 0;
- srandomdev();
-
- getarg (argc, argv);
- args[acnt] = NULL;
- if (tflag) { /* clear screen */
- noech &= ~(CRMOD|XTABS);
- raw &= ~(CRMOD|XTABS);
- clear();
- }
- fixtty (raw); /* go into raw mode */
-
- /* check if restored
- * game and save flag
- * for later */
- if (rfl = rflag) {
- text (message); /* print message */
- text (contin);
- wrboard(); /* print board */
- /* if new game, pretend
- * to be a non-restored
- * game */
- if (cturn == 0)
- rflag = 0;
- } else {
- rscore = wscore = 0; /* zero score */
- text (message); /* update message
- * without pausing */
-
- if (aflag) { /* print rules */
- writel (rules);
- if (yorn(0)) {
-
- fixtty (old); /* restore tty */
- args[0] = strdup ("teachgammon");
- execv (TEACH,args);
-
- tflag = 0; /* error! */
- writel (noteach);
- exit(1);
- } else { /* if not rules, then
- * instructions */
- writel (need);
- if (yorn(0)) { /* print instructions */
- clear();
- text (instr);
- }
- }
- }
-
- for (i = 0; i < acnt; i++)
- free (args[i]);
-
- init(); /* initialize board */
-
- if (pnum == 2) { /* ask for color(s) */
- writec ('\n');
- writel (askcol);
- while (pnum == 2) {
- c = readc();
- switch (c) {
-
- case 'R': /* red */
- pnum = -1;
- break;
-
- case 'W': /* white */
- pnum = 1;
- break;
-
- case 'B': /* both */
- pnum = 0;
- break;
-
- case 'P':
- if (iroll)
- break;
- if (tflag)
- curmove (curr,0);
- else
- writec ('\n');
- writel ("Password:");
- signal (SIGALRM,getout);
- cflag = 1;
- alarm (10);
- for (i = 0; i < 10; i++) {
- pbuf[i] = readc();
- if (pbuf[i] == '\n')
- break;
- }
- if (i == 10)
- while (readc() != '\n');
- alarm (0);
- cflag = 0;
- if (i < 10)
- pbuf[i] = '\0';
- for (i = 0; i < 9; i++)
- if (pbuf[i] != password[i])
- getout();
- iroll = 1;
- if (tflag)
- curmove (curr,0);
- else
- writec ('\n');
- writel (askcol);
- break;
-
- default: /* error */
- writec ('\007');
- }
- }
- } else if (!aflag)
- /* pause to read
- * message */
- text (contin);
-
- wrboard(); /* print board */
-
- if (tflag)
- curmove (18,0);
- else
- writec ('\n');
- }
- /* limit text to bottom
- * of screen */
- if (tflag)
- begscr = 17;
-
- for (;;) { /* begin game! */
- /* initial roll if
- * needed */
- if ((! rflag) || raflag)
- roll();
-
- /* perform ritual of
- * first roll */
- if (! rflag) {
- if (tflag)
- curmove (17,0);
- while (D0 == D1) /* no doubles */
- roll();
-
- /* print rolls */
- writel (rollr);
- writec (D0+'0');
- writel (rollw);
- writec (D1+'0');
-
- /* winner goes first */
- if (D0 > D1) {
- writel (rstart);
- cturn = 1;
- } else {
- writel (wstart);
- cturn = -1;
- }
- }
-
- /* initalize variables
- * according to whose
- * turn it is */
-
- if (cturn == 1) { /* red */
- home = 25;
- bar = 0;
- inptr = &in[1];
- inopp = &in[0];
- offptr = &off[1];
- offopp = &off[0];
- Colorptr = &color[1];
- colorptr = &color[3];
- colen = 3;
- } else { /* white */
- home = 0;
- bar = 25;
- inptr = &in[0];
- inopp = &in[1];
- offptr = &off[0];
- offopp = &off[1];
- Colorptr = &color[0];
- colorptr = &color[2];
- colen = 5;
- }
-
- /* do first move
- * (special case) */
- if (! (rflag && raflag)) {
- if (cturn == pnum) /* computer's move */
- move (0);
- else { /* player's move */
- mvlim = movallow();
- /* reprint roll */
- if (tflag)
- curmove (cturn == -1? 18: 19,0);
- proll();
- getmove(); /* get player's move */
- }
- }
- if (tflag) {
- curmove (17,0);
- cline();
- begscr = 18;
- }
-
- /* no longer any diff-
- * erence between normal
- * game and recovered
- * game. */
- rflag = 0;
-
- /* move as long as it's
- * someone's turn */
- while (cturn == 1 || cturn == -1) {
-
- /* board maintainence */
- if (tflag)
- refresh(); /* fix board */
- else
- /* redo board if -p */
- if (cturn == bflag || bflag == 0)
- wrboard();
-
- /* do computer's move */
- if (cturn == pnum) {
- move (1);
-
- /* see if double
- * refused */
- if (cturn == -2 || cturn == 2)
- break;
-
- /* check for winning
- * move */
- if (*offopp == 15) {
- cturn *= -2;
- break;
- }
- continue;
-
- }
-
- /* (player's move) */
-
- /* clean screen if
- * safe */
- if (tflag && hflag) {
- curmove (20,0);
- clend ();
- hflag = 1;
- }
-
- /* if allowed, give him
- * a chance to double */
- if (dlast != cturn && gvalue < 64) {
- if (tflag)
- curmove (cturn == -1? 18: 19,0);
- writel (*Colorptr);
- c = readc();
-
- /* character cases */
- switch (c) {
-
- /* reprint board */
- case 'R':
- wrboard();
- break;
-
- /* save game */
- case 'S':
- raflag = 1;
- save (1);
- break;
-
- /* quit */
- case 'Q':
- quit();
- break;
-
- /* double */
- case 'D':
- dble();
- break;
-
- /* roll */
- case ' ':
- case '\n':
- roll();
- writel (" rolls ");
- writec (D0+'0');
- writec (' ');
- writec (D1+'0');
- writel (". ");
-
- /* see if he can move */
- if ( (mvlim = movallow()) == 0) {
-
- /* can't move */
- writel (toobad1);
- writel (*colorptr);
- writel (unable);
- if (tflag) {
- if (pnum) {
- buflush();
- sleep (MVPAUSE);
- }
- }
- nexturn();
- break;
- }
-
- /* get move */
- getmove();
-
- /* okay to clean
- * screen */
- hflag = 1;
- break;
-
- /* invalid character */
- default:
-
- /* print help message */
- if (tflag)
- curmove (20,0);
- else
- writec ('\n');
- text (helpm);
- if (tflag)
- curmove (cturn == -1? 18: 19,0);
- else
- writec ('\n');
-
- /* don't erase */
- hflag = 0;
- }
- } else { /* couldn't double */
-
- /* print roll */
- roll();
- if (tflag)
- curmove (cturn == -1? 18: 19,0);
- proll ();
-
- /* can he move? */
- if ((mvlim = movallow()) == 0) {
-
- /* he can't */
- writel (toobad2);
- writel (*colorptr);
- writel (cantmv);
- buflush();
- sleep (MVPAUSE);
- nexturn();
- continue;
- }
-
- /* get move */
- getmove();
- }
- }
-
- /* don't worry about who
- * won if quit */
- if (cturn == 0)
- break;
-
- /* fix cturn = winner */
- cturn /= -2;
-
- /* final board pos. */
- if (tflag)
- refresh();
-
- /* backgammon? */
- mflag = 0;
- l = bar+7*cturn;
- for (i = bar; i != l; i += cturn)
- if (board[i]*cturn) mflag++;
-
- /* compute game value */
- if (tflag)
- curmove (20,0);
- if (*offopp == 15) {
- if (mflag) {
- writel (bgammon);
- gvalue *= 3;
- }
- else if (*offptr <= 0) {
- writel (gammon);
- gvalue *= 2;
- }
- }
-
- /* report situation */
- if (cturn == -1) {
- writel ("Red wins ");
- rscore += gvalue;
- } else {
- writel ("White wins ");
- wscore += gvalue;
- }
- wrint (gvalue);
- writel (" point");
- if (gvalue > 1)
- writec ('s');
- writel (".\n");
-
- /* write score */
- wrscore();
-
- /* see if he wants
- * another game */
- writel (again);
- if ((i = yorn ('S')) == 0)
- break;
-
- init();
- if (i == 2) {
- writel (" Save.\n");
- cturn = 0;
- save (0);
- }
-
- /* yes, reset game */
- wrboard();
- }
-
- /* give him a chance to save if game was recovered */
- if (rfl && cturn) {
- writel (svpromt);
- if (yorn (0)) {
- /* re-initialize for
- * recovery */
- init();
- cturn = 0;
- save(0);
- }
- }
-
- /* leave peacefully */
- getout ();
-}
diff --git a/games/backgammon/backgammon/move.c b/games/backgammon/backgammon/move.c
deleted file mode 100644
index 8b85dad1f27e..000000000000
--- a/games/backgammon/backgammon/move.c
+++ /dev/null
@@ -1,556 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)move.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <stdlib.h>
-#include "back.h"
-
-#ifdef DEBUG
-#include <stdio.h>
-FILE *trace;
-static char tests[20];
-#endif
-
-struct BOARD { /* structure of game position */
- int b_board[26]; /* board position */
- int b_in[2]; /* men in */
- int b_off[2]; /* men off */
- int b_st[4], b_fn[4]; /* moves */
-
- struct BOARD *b_next; /* forward queue pointer */
-};
-
-struct BOARD *freeq = 0;
-struct BOARD *checkq = 0;
-struct BOARD *bsave();
-struct BOARD *nextfree();
-
- /* these variables are values for the
- * candidate move */
-static int ch; /* chance of being hit */
-static int op; /* computer's open men */
-static int pt; /* comp's protected points */
-static int em; /* farthest man back */
-static int frc; /* chance to free comp's men */
-static int frp; /* chance to free pl's men */
-
- /* these values are the values for the
- * move chosen (so far) */
-static int chance; /* chance of being hit */
-static int openmen; /* computer's open men */
-static int points; /* comp's protected points */
-static int endman; /* farthest man back */
-static int barmen; /* men on bar */
-static int menin; /* men in inner table */
-static int menoff; /* men off board */
-static int oldfrc; /* chance to free comp's men */
-static int oldfrp; /* chance to free pl's men */
-
-static int cp[5]; /* candidate start position */
-static int cg[5]; /* candidate finish position */
-
-static int race; /* game reduced to a race */
-
-move (okay)
-int okay; /* zero if first move */
-{
- int i; /* index */
- int l; /* last man */
-
- if (okay) {
- /* see if comp should double */
- if (gvalue < 64 && dlast != cturn && dblgood()) {
- writel (*Colorptr);
- dble(); /* double */
- /* return if declined */
- if (cturn != 1 && cturn != -1)
- return;
- }
- roll();
- }
-
- race = 0;
- for (i = 0; i < 26; i++) {
- if (board[i] < 0)
- l = i;
- }
- for (i = 0; i < l; i++) {
- if (board[i] > 0)
- break;
- }
- if (i == l)
- race = 1;
-
- /* print roll */
- if (tflag)
- curmove (cturn == -1? 18: 19,0);
- writel (*Colorptr);
- writel (" rolls ");
- writec (D0+'0');
- writec (' ');
- writec (D1+'0');
- /* make tty interruptable
- * while thinking */
- if (tflag)
- cline();
- fixtty (noech);
-
- /* find out how many moves */
- mvlim = movallow();
- if (mvlim == 0) {
- writel (" but cannot use it.\n");
- nexturn();
- fixtty (raw);
- return;
- }
-
- /* initialize */
- for (i = 0; i < 4; i++)
- cp[i] = cg[i] = 0;
-
- /* strategize */
- trymove (0,0);
- pickmove();
-
- /* print move */
- writel (" and moves ");
- for (i = 0; i < mvlim; i++) {
- if (i > 0)
- writec (',');
- wrint (p[i] = cp[i]);
- writec ('-');
- wrint (g[i] = cg[i]);
- makmove (i);
- }
- writec ('.');
-
- /* print blots hit */
- if (tflag)
- curmove (20,0);
- else
- writec ('\n');
- for (i = 0; i < mvlim; i++)
- if (h[i])
- wrhit(g[i]);
- /* get ready for next move */
- nexturn();
- if (!okay) {
- buflush();
- sleep (3);
- }
- fixtty (raw); /* no more tty interrupt */
-}
-
-trymove (mvnum,swapped)
-int mvnum; /* number of move (rel zero) */
-int swapped; /* see if swapped also tested */
-
-{
- int pos; /* position on board */
- int rval; /* value of roll */
-
- /* if recursed through all dice
- * values, compare move */
- if (mvnum == mvlim) {
- binsert (bsave());
- return;
- }
-
- /* make sure dice in always
- * same order */
- if (d0 == swapped)
- swap;
- /* choose value for this move */
- rval = dice[mvnum != 0];
-
- /* find all legitimate moves */
- for (pos = bar; pos != home; pos += cturn) {
- /* fix order of dice */
- if (d0 == swapped)
- swap;
- /* break if stuck on bar */
- if (board[bar] != 0 && pos != bar)
- break;
- /* on to next if not occupied */
- if (board[pos]*cturn <= 0)
- continue;
- /* set up arrays for move */
- p[mvnum] = pos;
- g[mvnum] = pos+rval*cturn;
- if (g[mvnum]*cturn >= home) {
- if (*offptr < 0)
- break;
- g[mvnum] = home;
- }
- /* try to move */
- if (makmove (mvnum))
- continue;
- else
- trymove (mvnum+1,2);
- /* undo move to try another */
- backone (mvnum);
- }
-
- /* swap dice and try again */
- if ((!swapped) && D0 != D1)
- trymove (0,1);
-}
-
-struct BOARD *
-bsave () {
- int i; /* index */
- struct BOARD *now; /* current position */
-
- now = nextfree (); /* get free BOARD */
-
- /* store position */
- for (i = 0; i < 26; i++)
- now->b_board[i] = board[i];
- now->b_in[0] = in[0];
- now->b_in[1] = in[1];
- now->b_off[0] = off[0];
- now->b_off[1] = off[1];
- for (i = 0; i < mvlim; i++) {
- now->b_st[i] = p[i];
- now->b_fn[i] = g[i];
- }
- return (now);
-}
-
-binsert (new)
-struct BOARD *new; /* item to insert */
-{
- struct BOARD *p = checkq; /* queue pointer */
- int result; /* comparison result */
-
- if (p == 0) { /* check if queue empty */
- checkq = p = new;
- p->b_next = 0;
- return;
- }
-
- result = bcomp (new,p); /* compare to first element */
- if (result < 0) { /* insert in front */
- new->b_next = p;
- checkq = new;
- return;
- }
- if (result == 0) { /* duplicate entry */
- mvcheck (p,new);
- makefree (new);
- return;
- }
-
- while (p->b_next != 0) { /* traverse queue */
- result = bcomp (new,p->b_next);
- if (result < 0) { /* found place */
- new->b_next = p->b_next;
- p->b_next = new;
- return;
- }
- if (result == 0) { /* duplicate entry */
- mvcheck (p->b_next,new);
- makefree (new);
- return;
- }
- p = p->b_next;
- }
- /* place at end of queue */
- p->b_next = new;
- new->b_next = 0;
-}
-
-bcomp (a,b)
-struct BOARD *a;
-struct BOARD *b;
-{
- int *aloc = a->b_board; /* pointer to board a */
- int *bloc = b->b_board; /* pointer to board b */
- int i; /* index */
- int result; /* comparison result */
-
- for (i = 0; i < 26; i++) { /* compare boards */
- result = cturn*(aloc[i]-bloc[i]);
- if (result)
- return (result); /* found inequality */
- }
- return (0); /* same position */
-}
-
-mvcheck (incumbent,candidate)
-struct BOARD *incumbent;
-struct BOARD *candidate;
-{
- int i;
- int result;
-
- for (i = 0; i < mvlim; i++) {
- result = cturn*(candidate->b_st[i]-incumbent->b_st[i]);
- if (result > 0)
- return;
- if (result < 0)
- break;
- }
- if (i == mvlim)
- return;
- for (i = 0; i < mvlim; i++) {
- incumbent->b_st[i] = candidate->b_st[i];
- incumbent->b_fn[i] = candidate->b_fn[i];
- }
-}
-
-makefree (dead)
-struct BOARD *dead; /* dead position */
-{
- dead->b_next = freeq; /* add to freeq */
- freeq = dead;
-}
-
-struct BOARD *
-nextfree () {
- struct BOARD *new;
-
- if (freeq == 0) {
- new = (struct BOARD *)calloc (1,sizeof (struct BOARD));
- if (new == 0) {
- writel ("\nOut of memory\n");
- getout();
- }
- new->b_next = 0;
- } else {
- new = freeq;
- freeq = freeq->b_next;
- }
- return (new);
-}
-
-pickmove () {
- /* current game position */
- struct BOARD *now = bsave();
- struct BOARD *next; /* next move */
-
-#ifdef DEBUG
- if (trace == NULL)
- trace = fopen ("bgtrace","w");
- fprintf (trace,"\nRoll: %d %d%s\n",D0,D1,race? " (race)": "");
- fflush (trace);
-#endif
- do { /* compare moves */
- boardcopy (checkq);
- next = checkq->b_next;
- makefree (checkq);
- checkq = next;
- movcmp();
- } while (checkq != 0);
-
- boardcopy (now);
-}
-
-boardcopy (s)
-struct BOARD *s; /* game situation */
-{
- int i; /* index */
-
- for (i = 0; i < 26; i++)
- board[i] = s->b_board[i];
- for (i = 0; i < 2; i++) {
- in[i] = s->b_in[i];
- off[i] = s->b_off[i];
- }
- for (i = 0; i < mvlim; i++) {
- p[i] = s->b_st[i];
- g[i] = s->b_fn[i];
- }
-}
-
-movcmp () {
- int i;
- int c;
-
-#ifdef DEBUG
- if (trace == NULL)
- trace = fopen ("bgtrace","w");
-#endif
-
- odds (0,0,0);
- if (!race) {
- ch = op = pt = 0;
- for (i = 1; i < 25; i++) {
- if (board[i] == cturn)
- ch = canhit (i,1);
- op += abs (bar-i);
- }
- for (i = bar+cturn; i != home; i += cturn)
- if (board[i]*cturn > 1)
- pt += abs(bar-i);
- frc = freemen (bar)+trapped (bar,cturn);
- frp = freemen (home)+trapped (home,-cturn);
- }
- for (em = bar; em != home; em += cturn)
- if (board[em]*cturn > 0)
- break;
- em = abs(home-em);
-#ifdef DEBUG
- fputs ("Board: ",trace);
- for (i = 0; i < 26; i++)
- fprintf (trace, " %d",board[i]);
- if (race)
- fprintf (trace,"\n\tem = %d\n",em);
- else
- fprintf (trace,
- "\n\tch = %d, pt = %d, em = %d, frc = %d, frp = %d\n",
- ch,pt,em,frc,frp);
- fputs ("\tMove: ",trace);
- for (i = 0; i < mvlim; i++)
- fprintf (trace," %d-%d",p[i],g[i]);
- fputs ("\n",trace);
- fflush (trace);
- strcpy (tests,"");
-#endif
- if ((cp[0] == 0 && cg[0] == 0) || movegood()) {
-#ifdef DEBUG
- fprintf (trace,"\t[%s] ... wins.\n",tests);
- fflush (trace);
-#endif
- for (i = 0; i < mvlim; i++) {
- cp[i] = p[i];
- cg[i] = g[i];
- }
- if (!race) {
- chance = ch;
- openmen = op;
- points = pt;
- endman = em;
- barmen = abs(board[home]);
- oldfrc = frc;
- oldfrp = frp;
- }
- menin = *inptr;
- menoff = *offptr;
- }
-#ifdef DEBUG
- else {
- fprintf (trace,"\t[%s] ... loses.\n",tests);
- fflush (trace);
- }
-#endif
-}
-
-movegood () {
- int n;
-
- if (*offptr == 15)
- return (1);
- if (menoff == 15)
- return (0);
- if (race) {
-#ifdef DEBUG
- strcat (tests,"o");
-#endif
- if (*offptr-menoff)
- return (*offptr > menoff);
-#ifdef DEBUG
- strcat (tests,"e");
-#endif
- if (endman-em)
- return (endman > em);
-#ifdef DEBUG
- strcat (tests,"i");
-#endif
- if (menin == 15)
- return (0);
- if (*inptr == 15)
- return (1);
-#ifdef DEBUG
- strcat (tests,"i");
-#endif
- if (*inptr-menin)
- return (*inptr > menin);
- return (rnum(2));
- } else {
- n = barmen-abs(board[home]);
-#ifdef DEBUG
- strcat (tests,"c");
-#endif
- if (abs(chance-ch)+25*n > rnum(150))
- return (n? (n < 0): (ch < chance));
-#ifdef DEBUG
- strcat (tests,"o");
-#endif
- if (*offptr-menoff)
- return (*offptr > menoff);
-#ifdef DEBUG
- strcat (tests,"o");
-#endif
- if (abs(openmen-op) > 7+rnum(12))
- return (openmen > op);
-#ifdef DEBUG
- strcat (tests,"b");
-#endif
- if (n)
- return (n < 0);
-#ifdef DEBUG
- strcat (tests,"e");
-#endif
- if (abs(endman-em) > rnum(2))
- return (endman > em);
-#ifdef DEBUG
- strcat (tests,"f");
-#endif
- if (abs(frc-oldfrc) > rnum(2))
- return (frc < oldfrc);
-#ifdef DEBUG
- strcat (tests,"p");
-#endif
- if (abs(n = pt-points) > rnum(4))
- return (n > 0);
-#ifdef DEBUG
- strcat (tests,"i");
-#endif
- if (*inptr-menin)
- return (*inptr > menin);
-#ifdef DEBUG
- strcat (tests,"f");
-#endif
- if (abs(frp-oldfrp) > rnum(2))
- return (frp > oldfrp);
- return (rnum(2));
- }
-}
diff --git a/games/backgammon/backgammon/text.c b/games/backgammon/backgammon/text.c
deleted file mode 100644
index 740367c6006d..000000000000
--- a/games/backgammon/backgammon/text.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)text.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "back.h"
-
-const char *const instr[] = {
- " If you did not notice by now, this program reacts to things as",
- "soon as you type them, without waiting for a newline. This means that",
- "the special characters RUBOUT, ESC, and CONTROL-D, will not perform",
- "their special functions during most of this program. The program",
- "should usually stop when a RUBOUT is typed, but occasionally it will",
- "ignore RUBOUTs until it is waiting for input.\n",
- " These instructions are presented in small chunks designed not to",
- "roll off the top of your screen. When the characters '-->' are print-",
- "ed, no more data will be printed until a space or newline is typed.",
- "In this way, you can finish one section before continuing to another.",
- "Like this:",
- "",
- " The two sides are colored 'red' and 'white.' The computer may play",
- "one side, or if there are two players, the computer can merely act as",
- "a gamekeeper, letting the players make the moves. Once you tell the",
- "computer what color(s) you want to play, the decision remains in ef-",
- "fect until you quit the program, even if you play more than one game,",
- "since the program keeps a running score.\n",
- " The program will prompt for a move in one of two ways. If the",
- "player has the opportunity to double, then merely his color will be",
- "typed out. The player can now do one of several things. He can dou-",
- "ble by typing a 'd', he can roll by typing a space (' ') or newline,",
- "or if he is not sure, he can reprint the board by typing a 'r'.\n",
- " If the player cannot double, his roll will be thrust in front of",
- "him, followed by the request 'Move:', asking for a move but not giving",
- "him the chance to double. He can still ask for the board by typing",
- "'r'. In either of these two states, the player can quit by typing 'q'",
- "or save the game by typing 's'. In either case, the player will be",
- "asked to verify, in case there was some error. The program then ends",
- "immediately, after first saving the file if so requested.",
- "",
- " A player can move one of his men using two forms of input. The",
- "first form is <s>-<f>, where <s> is the starting position, and <f> is",
- "the finishing position of the player's man. For example, if white",
- "wanted to move a piece from position 13 to position 8, his move could",
- "be entered as 13-8. The second form is <s>/<r> where <s> is the",
- "starting position, an <r> is the roll actually made. Hence, white",
- "could have entered as 13/5 instead of 13-8.\n",
- " A player must move each roll of the dice separately. For example,",
- "if a player rolled 4 3, and wanted to move from 13 to 6, he could",
- "enter it as 13/4,9/3 or 13/3,10/4 or 13-10,10-6 or 13-9,9-6, but not",
- "13-6. The last two entries can be shortened to 13-10-6 and 13-9-6.",
- "If you want to move more than one piece from the same position, such",
- "as 13-10,13-9, you can abbreviate this using the <s>/<r> format as by",
- "entering more than one <r>, or 13/34. A player can use both forms for",
- "the same roll, e.g. 13/3,13-9, and separates individual moves by ei-",
- "ther a comma or a space. The letter 'b' represents the bar, and the",
- "letter 'h' represents a player's home. You could also enter the",
- "number that would be in the position of the bar, 25 or 0 as appropri-",
- "ate. Use a newline at the end of your moves for a turn.",
- "",
- " As you type in your move, if a character does not make sense under",
- "the above constrictions, a bell will sound instead of the character,",
- "and it will be ignored. You may kill lines and erase characters as",
- "you would normally, but don't be surprised if they look different than",
- "usual. Also, if you have entered one or more of your rolls, and you",
- "wish to see what the move looks like so far, type a 'r' to see what it",
- "looks like. This cannot be done in the middle of a move (e.g., after",
- "a '-' or '/'). After the printing board, the program will go back to",
- "inputting your move and you can backspace or kill just as if you had",
- "just typed in your input.\n",
- " Now you should be ready to begin the game. Good luck!",
- "",
- 0};
-
-
-int
-text (t)
-const char *const *t;
-
-{
- int i;
- const char *s, *a;
-
- fixtty (noech);
- while (*t != 0) {
- s = a = *t;
- for (i = 0; *a != '\0'; i--)
- a++;
- if (i) {
- writel (s);
- writec ('\n');
- } else {
- writel ("-->");
- fixtty (raw);
- while ((i = readc()) != ' ' && i != '\n');
- fixtty (noech);
- clear();
- }
- t++;
- }
- fixtty (raw);
-}
diff --git a/games/backgammon/backgammon/version.c b/games/backgammon/backgammon/version.c
deleted file mode 100644
index 12016e0f64d6..000000000000
--- a/games/backgammon/backgammon/version.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 1980, 1987, 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[] = "@(#)version.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-const char *const message[] = {
- "Last updated on Saturday, January 11, 1986.",
- 0
-};
diff --git a/games/backgammon/common_source/allow.c b/games/backgammon/common_source/allow.c
deleted file mode 100644
index 7c9f593b267f..000000000000
--- a/games/backgammon/common_source/allow.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)allow.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "back.h"
-
-movallow () {
-
- int i, m, iold;
- int r;
-
- if (d0)
- swap;
- m = (D0 == D1? 4: 2);
- for (i = 0; i < 4; i++)
- p[i] = bar;
- i = iold = 0;
- while (i < m) {
- if (*offptr == 15)
- break;
- h[i] = 0;
- if (board[bar]) {
- if (i == 1 || m == 4)
- g[i] = bar+cturn*D1;
- else
- g[i] = bar+cturn*D0;
- if (r = makmove(i)) {
- if (d0 || m == 4)
- break;
- swap;
- movback (i);
- if (i > iold)
- iold = i;
- for (i = 0; i < 4; i++)
- p[i] = bar;
- i = 0;
- } else
- i++;
- continue;
- }
- if ((p[i] += cturn) == home) {
- if (i > iold)
- iold = i;
- if (m == 2 && i) {
- movback(i);
- p[i--] = bar;
- if (p[i] != bar)
- continue;
- else
- break;
- }
- if (d0 || m == 4)
- break;
- swap;
- movback (i);
- for (i = 0; i < 4; i++)
- p[i] = bar;
- i = 0;
- continue;
- }
- if (i == 1 || m == 4)
- g[i] = p[i]+cturn*D1;
- else
- g[i] = p[i]+cturn*D0;
- if (g[i]*cturn > home) {
- if (*offptr >= 0)
- g[i] = home;
- else
- continue;
- }
- if (board[p[i]]*cturn > 0 && (r = makmove(i)) == 0)
- i++;
- }
- movback (i);
- return (iold > i? iold: i);
-}
diff --git a/games/backgammon/common_source/back.h b/games/backgammon/common_source/back.h
deleted file mode 100644
index 88ca9333178b..000000000000
--- a/games/backgammon/common_source/back.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 1980, 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.
- *
- * @(#)back.h 8.1 (Berkeley) 5/31/93
- */
-
-#include <sgtty.h>
-
-#define rnum(r) (random()%r)
-#define D0 dice[0]
-#define D1 dice[1]
-#define swap {D0 ^= D1; D1 ^= D0; D0 ^= D1; d0 = 1-d0;}
-
-/*
- *
- * Some numerical conventions:
- *
- * Arrays have white's value in [0], red in [1].
- * Numeric values which are one color or the other use
- * -1 for white, 1 for red.
- * Hence, white will be negative values, red positive one.
- * This makes a lot of sense since white is going in decending
- * order around the board, and red is ascending.
- *
- */
-
-extern const char EXEC[]; /* object for main program */
-extern const char TEACH[];/* object for tutorial program */
-
-extern int pnum; /* color of player:
- -1 = white
- 1 = red
- 0 = both
- 2 = not yet init'ed */
-extern char *args[16]; /* args passed to teachgammon and back */
-extern int acnt; /* number of args */
-extern int aflag; /* flag to ask for rules or instructions */
-extern int bflag; /* flag for automatic board printing */
-extern int cflag; /* case conversion flag */
-extern int hflag; /* flag for cleaning screen */
-extern int mflag; /* backgammon flag */
-extern int raflag; /* 'roll again' flag for recovered game */
-extern int rflag; /* recovered game flag */
-extern int tflag; /* cursor addressing flag */
-extern int rfl; /* saved value of rflag */
-extern int iroll; /* special flag for inputting rolls */
-extern int board[26]; /* board: negative values are white,
- positive are red */
-extern int dice[2]; /* value of dice */
-extern int mvlim; /* 'move limit': max. number of moves */
-extern int mvl; /* working copy of mvlim */
-extern int p[5]; /* starting position of moves */
-extern int g[5]; /* ending position of moves (goals) */
-extern int h[4]; /* flag for each move if a man was hit */
-extern int cturn; /* whose turn it currently is:
- -1 = white
- 1 = red
- 0 = just quitted
- -2 = white just lost
- 2 = red just lost */
-extern int d0; /* flag if dice have been reversed from
- original position */
-extern int table[6][6]; /* odds table for possible rolls */
-extern int rscore; /* red's score */
-extern int wscore; /* white's score */
-extern int gvalue; /* value of game (64 max.) */
-extern int dlast; /* who doubled last (0 = neither) */
-extern int bar; /* position of bar for current player */
-extern int home; /* position of home for current player */
-extern int off[2]; /* number of men off board */
-extern int *offptr; /* pointer to off for current player */
-extern int *offopp; /* pointer to off for opponent */
-extern int in[2]; /* number of men in inner table */
-extern int *inptr; /* pointer to in for current player */
-extern int *inopp; /* pointer to in for opponent */
-
-extern int ncin; /* number of characters in cin */
-extern char cin[100]; /* input line of current move
- (used for reconstructing input after
- a backspace) */
-
-extern const char *const color[];
- /* colors as strings */
-extern const char *const *colorptr; /* color of current player */
-extern const char *const *Colorptr; /* color of current player, capitalized */
-extern int colen; /* length of color of current player */
-
-extern struct sgttyb tty; /* tty information buffer */
-extern int old; /* original tty status */
-extern int noech; /* original tty status without echo */
-extern int raw; /* raw tty status, no echo */
-
-extern int curr; /* row position of cursor */
-extern int curc; /* column position of cursor */
-extern int begscr; /* 'beginning' of screen
- (not including board) */
-
-void getout(); /* function to exit backgammon cleanly */
diff --git a/games/backgammon/common_source/board.c b/games/backgammon/common_source/board.c
deleted file mode 100644
index 792b04207562..000000000000
--- a/games/backgammon/common_source/board.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)board.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <string.h>
-#include "back.h"
-
-static int i, j, k;
-static char ln[60];
-
-wrboard () {
- int l;
- static const char bl[] =
- "| | | |\n";
- static const char sv[] =
- "| | | | \n";
-
- fixtty (noech);
- clear();
-
- if (tflag) {
- fboard();
- goto lastline;
- }
-
- writel ("_____________________________________________________\n");
- writel (bl);
- strcpy (ln,bl);
- for (j = 1; j < 50; j += 4) {
- k = j/4+(j > 24? 12: 13);
- ln[j+1] = k%10+'0';
- ln[j] = k/10+'0';
- if (j == 21)
- j += 4;
- }
- writel (ln);
- for (i = 0; i < 5; i++) {
- strcpy (ln,sv);
- for (j = 1; j < 50; j += 4) {
- k = j/4+(j > 24? 12: 13);
- wrbsub ();
- if (j == 21)
- j += 4;
- }
- if (-board[25] > i)
- ln[26] = 'w';
- if (-board[25] > i+5)
- ln[25] = 'w';
- if (-board[25] > i+10)
- ln[27] = 'w';
- l = 53;
- if (off[1] > i || (off[1] < 0 && off[1]+15 > i)) {
- ln[54] = 'r';
- l = 55;
- }
- if (off[1] > i+5 || (off[1] < 0 && off[1]+15 > i+5)) {
- ln[55] = 'r';
- l = 56;
- }
- if (off[1] > i+10 || (off[1] < 0 && off[1]+15 > i+10)) {
- ln[56] = 'r';
- l = 57;
- }
- ln[l++] = '\n';
- ln[l] = '\0';
- writel (ln);
- }
- strcpy (ln,bl);
- ln[25] = 'B';
- ln[26] = 'A';
- ln[27] = 'R';
- writel (ln);
- strcpy (ln,sv);
- for (i = 4; i > -1; i--) {
- for (j = 1; j < 50; j += 4) {
- k = ((j > 24? 53: 49)-j)/4;
- wrbsub();
- if (j == 21)
- j += 4;
- }
- if (board[0] > i)
- ln[26] = 'r';
- if (board[0] > i+5)
- ln[25] = 'r';
- if (board[0] > i+10)
- ln[27] = 'r';
- l = 53;
- if (off[0] > i || (off[0] < 0 && off[0]+15 > i)) {
- ln[54] = 'w';
- l = 55;
- }
- if (off[0] > i+5 || (off[0] < 0 && off[0]+15 > i+5)) {
- ln[55] = 'w';
- l = 56;
- }
- if (off[0] > i+10 || (off[0] < 0 && off[0]+15 > i+10)) {
- ln[56] = 'w';
- l = 57;
- }
- ln[l++] = '\n';
- ln[l] = '\0';
- writel (ln);
- }
- strcpy (ln,bl);
- for (j = 1; j < 50; j += 4) {
- k = ((j > 24? 53: 49)-j)/4;
- ln[j+1] = k%10+'0';
- if (k > 9)
- ln[j] = k/10+'0';
- if (j == 21)
- j += 4;
- }
- writel (ln);
- writel ("|_______________________|___|_______________________|\n");
-
-lastline:
- gwrite ();
- if (tflag)
- curmove (18,0);
- else {
- writec ('\n');
- writec ('\n');
- }
- fixtty(raw);
-}
-
-wrbsub () {
- int m;
- char d;
-
- if (board[k] > 0) {
- m = board[k];
- d = 'r';
- } else {
- m = -board[k];
- d = 'w';
- }
- if (m>i)
- ln[j+1] = d;
- if (m>i+5)
- ln[j] = d;
- if (m>i+10)
- ln[j+2] = d;
-}
diff --git a/games/backgammon/common_source/check.c b/games/backgammon/common_source/check.c
deleted file mode 100644
index 70b9c62efed3..000000000000
--- a/games/backgammon/common_source/check.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)check.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "back.h"
-
-getmove () {
- int i, c;
-
- c = 0;
- for (;;) {
- i = checkmove(c);
-
- switch (i) {
- case -1:
- if (movokay(mvlim)) {
- if (tflag)
- curmove (20,0);
- else
- writec ('\n');
- for (i = 0; i < mvlim; i++)
- if (h[i])
- wrhit(g[i]);
- nexturn();
- if (*offopp == 15)
- cturn *= -2;
- if (tflag && pnum)
- bflag = pnum;
- return;
- }
-
- case -4:
- case 0:
- if (tflag)
- refresh();
- if (i != 0 && i != -4)
- break;
- if (tflag)
- curmove (20,0);
- else
- writec ('\n');
- writel (*Colorptr);
- if (i == -4)
- writel (" must make ");
- else
- writel (" can only make ");
- writec (mvlim+'0');
- writel (" move");
- if (mvlim > 1)
- writec ('s');
- writec ('.');
- writec ('\n');
- break;
-
- case -3:
- if (quit())
- return;
- }
-
- if (! tflag)
- proll ();
- else {
- curmove (cturn == -1? 18: 19,39);
- cline ();
- c = -1;
- }
- }
-}
-
-movokay (mv)
-int mv;
-
-{
- int i, m;
-
- if (d0)
- swap;
-
- for (i = 0; i < mv; i++) {
-
- if (p[i] == g[i]) {
- moverr (i);
- curmove (20,0);
- writel ("Attempt to move to same location.\n");
- return (0);
- }
-
- if (cturn*(g[i]-p[i]) < 0) {
- moverr (i);
- curmove (20,0);
- writel ("Backwards move.\n");
- return (0);
- }
-
- if (abs(board[bar]) && p[i] != bar) {
- moverr (i);
- curmove (20,0);
- writel ("Men still on bar.\n");
- return (0);
- }
-
- if ( (m = makmove(i)) ) {
- moverr (i);
- switch (m) {
-
- case 1:
- writel ("Move not rolled.\n");
- break;
-
- case 2:
- writel ("Bad starting position.\n");
- break;
-
- case 3:
- writel ("Destination occupied.\n");
- break;
-
- case 4:
- writel ("Can't remove men yet.\n");
- }
- return (0);
- }
- }
- return (1);
-}
diff --git a/games/backgammon/common_source/fancy.c b/games/backgammon/common_source/fancy.c
deleted file mode 100644
index e4aad246f7f1..000000000000
--- a/games/backgammon/common_source/fancy.c
+++ /dev/null
@@ -1,752 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)fancy.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <stdlib.h>
-#include <string.h>
-#include <termcap.h>
-#include "back.h"
-
-char PC; /* padding character */
-char *BC; /* backspace sequence */
-char *CD; /* clear to end of screen sequence */
-char *CE; /* clear to end of line sequence */
-char *CL; /* clear screen sequence */
-char *CM; /* cursor movement instructions */
-char *HO; /* home cursor sequence */
-char *MC; /* column cursor movement map */
-char *ML; /* row cursor movement map */
-char *ND; /* forward cursor sequence */
-char *UP; /* up cursor sequence */
-
-int lHO; /* length of HO */
-int lBC; /* length of BC */
-int lND; /* length of ND */
-int lUP; /* length of UP */
-int CO; /* number of columns */
-int LI; /* number of lines */
-int *linect; /* array of lengths of lines on screen
- (the actual screen is not stored) */
-
- /* two letter codes */
-char tcap[] = "bccdceclcmhomcmlndup";
- /* corresponding strings */
-char **tstr[] = { &BC, &CD, &CE, &CL, &CM, &HO, &MC, &ML, &ND, &UP };
-
-int buffnum; /* pointer to output buffer */
-
-char tbuf[1024]; /* buffer for decoded termcap entries */
-
-int oldb[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-
-int oldr;
-int oldw;
- /* "real" cursor positions, so
- * it knows when to reposition.
- * These are -1 if curr and curc
- * are accurate */
-int realr;
-int realc;
-
-int addbuf(int);
-
-fboard () {
- int i, j, l;
-
- curmove (0,0); /* do top line */
- for (i = 0; i < 53; i++)
- fancyc ('_');
-
- curmove (15,0); /* do botttom line */
- for (i = 0; i < 53; i++)
- fancyc ('_');
-
- l = 1; /* do vertical lines */
- for (i = 52; i > -1; i -= 28) {
- curmove ( (l == 1? 1: 15) ,i);
- fancyc ('|');
- for (j = 0; j < 14; j++) {
- curmove (curr+l,curc-1);
- fancyc ('|');
- }
- if (i == 24)
- i += 32;
- l = -l; /* alternate directions */
- }
-
- curmove (2,1); /* label positions 13-18 */
- for (i = 13; i < 18; i++) {
- fancyc ('1');
- fancyc ((i % 10)+'0');
- curmove (curr,curc+2);
- }
- fancyc ('1');
- fancyc ('8');
-
- curmove (2,29); /* label positions 19-24 */
- fancyc ('1');
- fancyc ('9');
- for (i = 20; i < 25; i++) {
- curmove (curr,curc+2);
- fancyc ('2');
- fancyc ((i % 10)+'0');
- }
-
- curmove (14,1); /* label positions 12-7 */
- fancyc ('1');
- fancyc ('2');
- for (i = 11; i > 6; i--) {
- curmove (curr,curc+2);
- fancyc (i > 9? '1': ' ');
- fancyc ((i % 10)+'0');
- }
-
- curmove (14,30); /* label positions 6-1 */
- fancyc ('6');
- for (i = 5; i > 0; i--) {
- curmove (curr,curc+3);
- fancyc (i+'0');
- }
-
- for (i = 12; i > 6; i--) /* print positions 12-7 */
- if (board[i])
- bsect (board[i],13,1+4*(12-i),-1);
-
- if (board[0]) /* print red men on bar */
- bsect (board[0],13,25,-1);
-
- for (i = 6; i > 0; i--) /* print positions 6-1 */
- if (board[i])
- bsect (board[i],13,29+4*(6-i),-1);
-
- l = (off[1] < 0? off[1]+15: off[1]); /* print white's home */
- bsect (l,3,54,1);
-
- curmove (8,25); /* print the word BAR */
- fancyc ('B');
- fancyc ('A');
- fancyc ('R');
-
- for (i = 13; i < 19; i++) /* print positions 13-18 */
- if (board[i])
- bsect (board[i],3,1+4*(i-13),1);
-
- if (board[25]) /* print white's men on bar */
- bsect (board[25],3,25,1);
-
- for (i = 19; i < 25; i++) /* print positions 19-24 */
- if (board[i])
- bsect (board[i],3,29+4*(i-19),1);
-
- l = (off[0] < 0? off[0]+15: off[0]); /* print red's home */
- bsect (-l,13,54,-1);
-
- for (i = 0; i < 26; i++) /* save board position
- * for refresh later */
- oldb[i] = board[i];
- oldr = (off[1] < 0? off[1]+15: off[1]);
- oldw = -(off[0] < 0? off[0]+15: off[0]);
-}
-
-/*
- * bsect (b,rpos,cpos,cnext)
- * Print the contents of a board position. "b" has the value of the
- * position, "rpos" is the row to start printing, "cpos" is the column to
- * start printing, and "cnext" is positive if the position starts at the top
- * and negative if it starts at the bottom. The value of "cpos" is checked
- * to see if the position is a player's home, since those are printed
- * differently.
- */
-
-bsect (b,rpos,cpos,cnext)
-int b; /* contents of position */
-int rpos; /* row of position */
-int cpos; /* column of position */
-int cnext; /* direction of position */
-
-{
- int j; /* index */
- int n; /* number of men on position */
- int bct; /* counter */
- int k; /* index */
- char pc; /* color of men on position */
-
- n = abs(b); /* initialize n and pc */
- pc = (b > 0? 'r': 'w');
-
- if (n < 6 && cpos < 54) /* position cursor at start */
- curmove (rpos,cpos+1);
- else
- curmove (rpos,cpos);
-
- for (j = 0; j < 5; j++) { /* print position row by row */
-
- for (k = 0; k < 15; k += 5) /* print men */
- if (n > j+k)
- fancyc (pc);
-
- if (j < 4) { /* figure how far to
- * back up for next
- * row */
- if (n < 6) { /* stop if none left */
- if (j+1 == n)
- break;
- bct = 1; /* single column */
- } else {
- if (n < 11) { /* two columns */
- if (cpos == 54) { /* home pos */
- if (j+5 >= n)
- bct = 1;
- else
- bct = 2;
- }
- if (cpos < 54) { /* not home */
- if (j+6 >= n)
- bct = 1;
- else
- bct = 2;
- }
- } else { /* three columns */
- if (j+10 >= n)
- bct = 2;
- else
- bct = 3;
- }
- }
- curmove (curr+cnext,curc-bct); /* reposition cursor */
- }
- }
-}
-
-refresh() {
- int i, r, c;
-
- r = curr; /* save current position */
- c = curc;
-
- for (i = 12; i > 6; i--) /* fix positions 12-7 */
- if (board[i] != oldb[i]) {
- fixpos (oldb[i],board[i],13,1+(12-i)*4,-1);
- oldb[i] = board[i];
- }
-
- if (board[0] != oldb[0]) { /* fix red men on bar */
- fixpos (oldb[0],board[0],13,25,-1);
- oldb[0] = board[0];
- }
-
- for (i = 6; i > 0; i--) /* fix positions 6-1 */
- if (board[i] != oldb[i]) {
- fixpos (oldb[i],board[i],13,29+(6-i)*4,-1);
- oldb[i] = board[i];
- }
-
- i = -(off[0] < 0? off[0]+15: off[0]); /* fix white's home */
- if (oldw != i) {
- fixpos (oldw,i,13,54,-1);
- oldw = i;
- }
-
- for (i = 13; i < 19; i++) /* fix positions 13-18 */
- if (board[i] != oldb[i]) {
- fixpos (oldb[i],board[i],3,1+(i-13)*4,1);
- oldb[i] = board[i];
- }
-
- if (board[25] != oldb[25]) { /* fix white men on bar */
- fixpos (oldb[25],board[25],3,25,1);
- oldb[25] = board[25];
- }
-
- for (i = 19; i < 25; i++) /* fix positions 19-24 */
- if (board[i] != oldb[i]) {
- fixpos (oldb[i],board[i],3,29+(i-19)*4,1);
- oldb[i] = board[i];
- }
-
- i = (off[1] < 0? off[1]+15: off[1]); /* fix red's home */
- if (oldr != i) {
- fixpos (oldr,i,3,54,1);
- oldr = i;
- }
-
- curmove (r,c); /* return to saved position */
- newpos();
- buflush();
-}
-
-fixpos (old,new,r,c,inc)
-int old, new, r, c, inc;
-
-{
- int o, n, nv;
- int ov, nc;
- char col;
-
- if (old*new >= 0) {
- ov = abs(old);
- nv = abs(new);
- col = (old+new > 0? 'r': 'w');
- o = (ov-1)/5;
- n = (nv-1)/5;
- if (o == n) {
- if (o == 2)
- nc = c+2;
- if (o == 1)
- nc = c < 54? c: c+1;
- if (o == 0)
- nc = c < 54? c+1: c;
- if (ov > nv)
- fixcol (r+inc*(nv-n*5),nc,abs(ov-nv),' ',inc);
- else
- fixcol (r+inc*(ov-o*5),nc,abs(ov-nv),col,inc);
- return;
- } else {
- if (c < 54) {
- if (o+n == 1) {
- if (n) {
- fixcol (r,c,abs(nv-5),col,inc);
- if (ov != 5)
- fixcol (r+inc*ov,c+1,abs(ov-5),col,inc);
- } else {
- fixcol (r,c,abs(ov-5),' ',inc);
- if (nv != 5)
- fixcol (r+inc*nv,c+1,abs(nv-5),' ',inc);
- }
- return;
- }
- if (n == 2) {
- if (ov != 10)
- fixcol (r+inc*(ov-5),c,abs(ov-10),col,inc);
- fixcol (r,c+2,abs(nv-10),col,inc);
- } else {
- if (nv != 10)
- fixcol (r+inc*(nv-5),c,abs(nv-10),' ',inc);
- fixcol (r,c+2,abs(ov-10),' ',inc);
- }
- return;
- }
- if (n > o) {
- fixcol (r+inc*(ov%5),c+o,abs(5*n-ov),col,inc);
- if (nv != 5*n)
- fixcol (r,c+n,abs(5*n-nv),col,inc);
- } else {
- fixcol (r+inc*(nv%5),c+n,abs(5*n-nv),' ',inc);
- if (ov != 5*o)
- fixcol (r,c+o,abs(5*o-ov),' ',inc);
- }
- return;
- }
- }
- nv = abs(new);
- fixcol (r,c+1,nv,new > 0? 'r': 'w',inc);
- if (abs(old) <= abs(new))
- return;
- fixcol (r+inc*new,c+1,abs(old+new),' ',inc);
-}
-
-fixcol (r,c,l,ch,inc)
-int l, ch, r, c, inc;
-
-{
- int i;
-
- curmove (r,c);
- fancyc (ch);
- for (i = 1; i < l; i++) {
- curmove (curr+inc,curc-1);
- fancyc (ch);
- }
-}
-
-curmove (r,c)
-int r, c;
-
-{
- if (curr == r && curc == c)
- return;
- if (realr == -1) {
- realr = curr;
- realc = curc;
- }
- curr = r;
- curc = c;
-}
-
-newpos () {
- int r; /* destination row */
- int c; /* destination column */
- int mode = -1; /* mode of movement */
-
- int count = 1000; /* character count */
- int i; /* index */
- int j; /* index */
- int n; /* temporary variable */
- char *m; /* string containing CM movement */
-
-
- if (realr == -1) /* see if already there */
- return;
-
- r = curr; /* set current and dest. positions */
- c = curc;
- curr = realr;
- curc = realc;
-
- /* double check position */
- if (curr == r && curc == c) {
- realr = realc = -1;
- return;
- }
-
- if (CM) { /* try CM to get there */
- mode = 0;
- m = (char *)tgoto (CM,c,r);
- count = strlen (m);
- }
-
- /* try HO and local movement */
- if (HO && (n = r+c*lND+lHO) < count) {
- mode = 1;
- count = n;
- }
-
- /* try various LF combinations */
- if (r >= curr) {
- /* CR, LF, and ND */
- if ((n = (r-curr)+c*lND+1) < count) {
- mode = 2;
- count = n;
- }
- /* LF, ND */
- if (c >= curc && (n = (r-curr)+(c-curc)*lND) < count) {
- mode = 3;
- count = n;
- }
- /* LF, BS */
- if (c < curc && (n = (r-curr)+(curc-c)*lBC) < count) {
- mode = 4;
- count = n;
- }
- }
-
- /* try corresponding UP combinations */
- if (r < curr) {
- /* CR, UP, and ND */
- if ((n = (curr-r)*lUP+c*lND+1) < count) {
- mode = 5;
- count = n;
- }
- /* UP and ND */
- if (c >= curc && (n = (curr-r)*lUP+(c-curc)*lND) < count) {
- mode = 6;
- count = n;
- }
- /* UP and BS */
- if (c < curc && (n = (curr-r)*lUP+(curc-c)*lBC) < count) {
- mode = 7;
- count = n;
- }
- }
-
- /* space over */
- if (curr == r && c > curc && linect[r] < curc && c-curc < count)
- mode = 8;
-
- switch (mode) {
-
- case -1: /* error! */
- write (2,"\r\nInternal cursor error.\r\n",26);
- getout();
-
- /* direct cursor motion */
- case 0:
- tputs (m,abs(curr-r),addbuf);
- break;
-
- /* relative to "home" */
- case 1:
- tputs (HO,r,addbuf);
- for (i = 0; i < r; i++)
- addbuf ('\012');
- for (i = 0; i < c; i++)
- tputs (ND,1,addbuf);
- break;
-
- /* CR and down and over */
- case 2:
- addbuf ('\015');
- for (i = 0; i < r-curr; i++)
- addbuf ('\012');
- for (i = 0; i < c; i++)
- tputs (ND,1,addbuf);
- break;
-
- /* down and over */
- case 3:
- for (i = 0; i < r-curr; i++)
- addbuf ('\012');
- for (i = 0; i < c-curc; i++)
- tputs (ND,1,addbuf);
- break;
-
- /* down and back */
- case 4:
- for (i = 0; i < r-curr; i++)
- addbuf ('\012');
- for (i = 0; i < curc-c; i++)
- addbuf ('\010');
- break;
-
- /* CR and up and over */
- case 5:
- addbuf ('\015');
- for (i = 0; i < curr-r; i++)
- tputs (UP,1,addbuf);
- for (i = 0; i < c; i++)
- tputs (ND,1,addbuf);
- break;
-
- /* up and over */
- case 6:
- for (i = 0; i < curr-r; i++)
- tputs (UP,1,addbuf);
- for (i = 0; i < c-curc; i++)
- tputs (ND,1,addbuf);
- break;
-
- /* up and back */
- case 7:
- for (i = 0; i < curr-r; i++)
- tputs (UP,1,addbuf);
- for (i = 0; i < curc-c; i++) {
- if (BC)
- tputs (BC,1,addbuf);
- else
- addbuf ('\010');
- }
- break;
-
- /* safe space */
- case 8:
- for (i = 0; i < c-curc; i++)
- addbuf (' ');
- }
-
- /* fix positions */
- curr = r;
- curc = c;
- realr = -1;
- realc = -1;
-}
-
-clear () {
- int i;
-
- /* double space if can't clear */
- if (CL == 0) {
- writel ("\n\n");
- return;
- }
-
- curr = curc = 0; /* fix position markers */
- realr = realc = -1;
- for (i = 0; i < 24; i++) /* clear line counts */
- linect[i] = -1;
- buffnum = -1; /* ignore leftover buffer contents */
- tputs (CL,CO,addbuf); /* put CL in buffer */
-}
-
-
-fancyc (c)
-char c; /* character to output */
-{
- int sp; /* counts spaces in a tab */
-
- if (c == '\007') { /* bells go in blindly */
- addbuf (c);
- return;
- }
-
- /* process tabs, use spaces if the
- * the tab should be erasing things,
- * otherwise use cursor movement
- * routines. Note this does not use
- * hardware tabs at all. */
- if (c == '\t') {
- sp = (curc+8) & (~ 7); /* compute spaces */
- /* check line length */
- if (linect[curr] >= curc || sp < 4) {
- for (; sp > curc; sp--)
- addbuf (' ');
- curc = sp; /* fix curc */
- } else
- curmove (curr,sp);
- return;
- }
-
- /* do newline be calling newline */
- if (c == '\n') {
- newline();
- return;
- }
-
- /* ignore any other control chars */
- if (c < ' ')
- return;
-
- /* if an erasing space or non-space,
- * just add it to buffer. Otherwise
- * use cursor movement routine, so that
- * multiple spaces will be grouped
- * together */
- if (c > ' ' || linect[curr] >= curc) {
- newpos (); /* make sure position correct */
- addbuf (c); /* add character to buffer */
- /* fix line length */
- if (c == ' ' && linect[curr] == curc)
- linect[curr]--;
- else if (linect[curr] < curc)
- linect[curr] = curc;
- curc++; /* fix curc */
- } else
- /* use cursor movement routine */
- curmove (curr,curc+1);
-}
-
-clend() {
- int i;
- char *s;
-
-
- if (CD) {
- tputs (CD,CO-curr,addbuf);
- for (i = curr; i < LI; i++)
- linect[i] = -1;
- return;
- }
-
- curmove (i = curr,0);
- cline();
- while (curr < LI-1) {
- curmove (curr+1,0);
- if (linect[curr] > -1)
- cline ();
- }
- curmove (i,0);
-}
-
-cline () {
- int i;
- int c;
- char *s;
-
- if (curc > linect[curr])
- return;
- newpos ();
- if (CE) {
- tputs (CE,1,addbuf);
- linect[curr] = curc-1;
- } else {
- c = curc-1;
- while (linect[curr] > c) {
- addbuf (' ');
- curc++;
- linect[curr]--;
- }
- curmove (curr,c+1);
- }
-}
-
-newline () {
- cline();
- if (curr == LI-1)
- curmove (begscr,0);
- else
- curmove (curr+1,0);
-}
-
-int
-getcaps (s)
-const char *s;
-
-{
- char *code; /* two letter code */
- char ***cap; /* pointer to cap string */
- char *bufp; /* pointer to cap buffer */
- char tentry[1024]; /* temporary uncoded caps buffer */
-
- tgetent (tentry, (char *)s); /* get uncoded termcap entry */
-
- LI = tgetnum ("li"); /* get number of lines */
- if (LI == -1)
- LI = 12;
- CO = tgetnum ("co"); /* get number of columns */
- if (CO == -1)
- CO = 65;
-
- bufp = tbuf; /* get padding character */
- tgetstr ("pc",&bufp);
- if (bufp != tbuf)
- PC = *tbuf;
- else
- PC = 0;
-
- bufp = tbuf; /* get string entries */
- cap = tstr;
- for (code = tcap; *code; code += 2)
- **cap++ = (char *)tgetstr (code,&bufp);
-
- /* get pertinent lengths */
- if (HO)
- lHO = strlen (HO);
- if (BC)
- lBC = strlen (BC);
- else
- lBC = 1;
- if (UP)
- lUP = strlen (UP);
- if (ND)
- lND = strlen (ND);
- if (LI < 24 || CO < 72 || !(CL && UP && ND))
- return (0);
- linect = (int *)calloc (LI+1,sizeof(int));
- return (1);
-}
diff --git a/games/backgammon/common_source/init.c b/games/backgammon/common_source/init.c
deleted file mode 100644
index 24ee2a0a936b..000000000000
--- a/games/backgammon/common_source/init.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)init.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <sys/cdefs.h>
-#include <termios.h>
-
-/*
- * variable initialization.
- */
-
- /* name of executable object programs */
-const char EXEC[] = "/usr/games/backgammon";
-const char TEACH[] = "/usr/games/teachgammon";
-
-int pnum = 2; /* color of player:
- -1 = white
- 1 = red
- 0 = both
- 2 = not yet init'ed */
-int acnt = 1; /* number of args */
-int aflag = 1; /* flag to ask for rules or instructions */
-int bflag = 0; /* flag for automatic board printing */
-int cflag = 0; /* case conversion flag */
-int hflag = 1; /* flag for cleaning screen */
-int mflag = 0; /* backgammon flag */
-int raflag = 0; /* 'roll again' flag for recovered game */
-int rflag = 0; /* recovered game flag */
-int tflag = 0; /* cursor addressing flag */
-int iroll = 0; /* special flag for inputting rolls */
-int rfl = 0;
-
-const char *const color[] = {"White","Red","white","red"};
-
-const char *const *Colorptr;
-const char *const *colorptr;
-int *inopp;
-int *inptr;
-int *offopp;
-int *offptr;
-char args[100];
-int bar;
-int begscr;
-int board[26];
-char cin[100];
-int colen;
-int cturn;
-int curc;
-int curr;
-int d0;
-int dice[2];
-int dlast;
-int g[5];
-int gvalue;
-int h[4];
-int home;
-int in[2];
-int mvl;
-int mvlim;
-int ncin;
-int off[2];
-int p[5];
-int rscore;
-int table[6][6];
-int wscore;
-struct termios tty, old, noech, raw;
diff --git a/games/backgammon/common_source/odds.c b/games/backgammon/common_source/odds.c
deleted file mode 100644
index f840376d8319..000000000000
--- a/games/backgammon/common_source/odds.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)odds.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "back.h"
-
-odds (r1,r2,val)
-int r1;
-int r2, val;
-{
- int i, j;
-
- if (r1 == 0) {
- for (i = 0; i < 6; i++)
- for (j = 0; j < 6; j++)
- table[i][j] = 0;
- return;
- } else {
- r1--;
- if (r2-- == 0)
- for (i = 0; i < 6; i++) {
- table[i][r1] += val;
- table[r1][i] += val;
- }
- else {
- table[r2][r1] += val;
- table[r1][r2] += val;
- }
- }
-}
-
-count () {
- int i;
- int j;
- int total;
-
- total = 0;
- for (i = 0; i < 6; i++)
- for (j = 0; j < 6; j++)
- total += table[i][j];
- return (total);
-}
-
-canhit (i,c)
-int i, c;
-
-{
- int j, k, b;
- int a, d, diff, place, addon, menstuck;
-
- if (c == 0)
- odds (0,0,0);
- if (board[i] > 0) {
- a = -1;
- b = 25;
- } else {
- a = 1;
- b = 0;
- }
- place = abs (25-b-i);
- menstuck = abs (board[b]);
- for (j = b; j != i; j += a) {
- if (board[j]*a > 0) {
- diff = abs(j-i);
- addon = place+((board[j]*a > 2 || j == b)? 5: 0);
- if ((j == b && menstuck == 1) &&
- (j != b && menstuck == 0))
- for (k = 1; k < diff; k++)
- if (k < 7 && diff-k < 7 &&
- (board[i+a*k]*a >= 0 ||
- board[i+a*(diff-k)] >= 0))
- odds (k,diff-k,addon);
- if ((j == b || menstuck < 2) && diff < 7)
- odds (diff,0,addon);
- }
- if (j == b && menstuck > 1)
- break;
- }
- return (count());
-}
diff --git a/games/backgammon/common_source/one.c b/games/backgammon/common_source/one.c
deleted file mode 100644
index e94c183f0d81..000000000000
--- a/games/backgammon/common_source/one.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)one.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "back.h"
-
-makmove (i)
-int i;
-
-{
- int n, d;
- int max;
-
- d = d0;
- n = abs(g[i]-p[i]);
- max = (*offptr < 0? 7: last());
- if (board[p[i]]*cturn <= 0)
- return (checkd(d)+2);
- if (g[i] != home && board[g[i]]*cturn < -1)
- return (checkd(d)+3);
- if (i || D0 == D1) {
- if (n == max? D1 < n: D1 != n)
- return (checkd(d)+1);
- } else {
- if (n == max? D0 < n && D1 < n: D0 != n && D1 != n)
- return (checkd(d)+1);
- if (n == max? D0 < n: D0 != n) {
- if (d0)
- return (checkd(d)+1);
- swap;
- }
- }
- if (g[i] == home && *offptr < 0)
- return (checkd(d)+4);
- h[i] = 0;
- board[p[i]] -= cturn;
- if (g[i] != home) {
- if (board[g[i]] == -cturn) {
- board[home] -= cturn;
- board[g[i]] = 0;
- h[i] = 1;
- if (abs(bar-g[i]) < 7) {
- (*inopp)--;
- if (*offopp >= 0)
- *offopp -= 15;
- }
- }
- board[g[i]] += cturn;
- if (abs(home-g[i]) < 7 && abs(home-p[i]) > 6) {
- (*inptr)++;
- if (*inptr+*offptr == 0)
- *offptr += 15;
- }
- } else {
- (*offptr)++;
- (*inptr)--;
- }
- return (0);
-}
-
-moverr (i)
-int i;
-
-{
- int j;
-
- if (tflag)
- curmove (20,0);
- else
- writec ('\n');
- writel ("Error: ");
- for (j = 0; j <= i; j++) {
- wrint (p[j]);
- writec ('-');
- wrint (g[j]);
- if (j < i)
- writec (',');
- }
- writel ("... ");
- movback (i);
-}
-
-
-checkd (d)
-int d;
-
-{
- if (d0 != d)
- swap;
- return (0);
-}
-
-last () {
- int i;
-
- for (i = home-6*cturn; i != home; i += cturn)
- if (board[i]*cturn > 0)
- return (abs(home-i));
-}
-
-movback (i)
-int i;
-
-{
- int j;
-
- for (j = i-1; j >= 0; j--)
- backone(j);
-}
-
-backone (i)
-int i;
-
-{
- board[p[i]] += cturn;
- if (g[i] != home) {
- board[g[i]] -= cturn;
- if (abs(g[i]-home) < 7 && abs(p[i]-home) > 6) {
- (*inptr)--;
- if (*inptr+*offptr < 15 && *offptr >= 0)
- *offptr -= 15;
- }
- } else {
- (*offptr)--;
- (*inptr)++;
- }
- if (h[i]) {
- board[home] += cturn;
- board[g[i]] = -cturn;
- if (abs(bar-g[i]) < 7) {
- (*inopp)++;
- if (*inopp+*offopp == 0)
- *offopp += 15;
- }
- }
-}
diff --git a/games/backgammon/common_source/save.c b/games/backgammon/common_source/save.c
deleted file mode 100644
index fe3475d99a1d..000000000000
--- a/games/backgammon/common_source/save.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)save.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <fcntl.h>
-#include <errno.h>
-#include "back.h"
-
-static const char confirm[] = "Are you sure you want to leave now?";
-static const char prompt[] = "Enter a file name: ";
-static const char exist1[] = "The file '";
-static const char exist2[] =
- "' already exists.\nAre you sure you want to use this file?";
-static const char cantuse[] = "\nCan't use ";
-static const char saved[] = "This game has been saved on the file '";
-static const char type[] = "'.\nType \"backgammon ";
-static const char rec[] = "\" to recover your game.\n\n";
-static const char cantrec[] = "Can't recover file: ";
-
-save (n)
-int n;
-
-{
- int fdesc;
- char *fs;
- char fname[50];
-
- if (n) {
- if (tflag) {
- curmove (20,0);
- clend();
- } else
- writec ('\n');
- writel (confirm);
- if (! yorn(0))
- return;
- }
- cflag = 1;
- for (;;) {
- writel (prompt);
- fs = fname;
- while ((*fs = readc()) != '\n') {
- if (*fs == tty.sg_erase) {
- if (fs > fname) {
- fs--;
- if (tflag)
- curmove (curr,curc-1);
- else
- writec (*fs);
- } else
- writec ('\007');
- continue;
- }
- writec (*fs++);
- }
- *fs = '\0';
- if ((fdesc = open(fname,O_RDWR)) == -1 && errno == ENOENT) {
- if ((fdesc = creat (fname,0600)) != -1)
- break;
- }
- if (fdesc != -1) {
- if (tflag) {
- curmove (18,0);
- clend();
- } else
- writec ('\n');
- writel (exist1);
- writel (fname);
- writel (exist2);
- cflag = 0;
- close (fdesc);
- if (yorn (0)) {
- unlink (fname);
- fdesc = creat (fname,0700);
- break;
- } else {
- cflag = 1;
- continue;
- }
- }
- writel (cantuse);
- writel (fname);
- writel (".\n");
- close (fdesc);
- cflag = 1;
- }
- write (fdesc,board,sizeof board);
- write (fdesc,off,sizeof off);
- write (fdesc,in,sizeof in);
- write (fdesc,dice,sizeof dice);
- write (fdesc,&cturn,sizeof cturn);
- write (fdesc,&dlast,sizeof dlast);
- write (fdesc,&pnum,sizeof pnum);
- write (fdesc,&rscore,sizeof rscore);
- write (fdesc,&wscore,sizeof wscore);
- write (fdesc,&gvalue,sizeof gvalue);
- write (fdesc,&raflag,sizeof raflag);
- close (fdesc);
- if (tflag)
- curmove (18,0);
- writel (saved);
- writel (fname);
- writel (type);
- writel (fname);
- writel (rec);
- if (tflag)
- clend();
- getout ();
-}
-
-int
-recover (s)
-const char *s;
-
-{
- int i;
- int fdesc;
-
- if ((fdesc = open (s,O_RDONLY)) == -1)
- norec (s);
- read (fdesc,board,sizeof board);
- read (fdesc,off,sizeof off);
- read (fdesc,in,sizeof in);
- read (fdesc,dice,sizeof dice);
- read (fdesc,&cturn,sizeof cturn);
- read (fdesc,&dlast,sizeof dlast);
- read (fdesc,&pnum,sizeof pnum);
- read (fdesc,&rscore,sizeof rscore);
- read (fdesc,&wscore,sizeof wscore);
- read (fdesc,&gvalue,sizeof gvalue);
- read (fdesc,&raflag,sizeof raflag);
- close (fdesc);
- rflag = 1;
-}
-
-int
-norec (s)
-const char *s;
-
-{
- const char *c;
-
- tflag = 0;
- writel (cantrec);
- c = s;
- while (*c != '\0')
- writec (*c++);
- getout ();
-}
diff --git a/games/backgammon/common_source/subs.c b/games/backgammon/common_source/subs.c
deleted file mode 100644
index 3a1c5998be5f..000000000000
--- a/games/backgammon/common_source/subs.c
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)subs.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "back.h"
-
-int buffnum;
-char outbuff[BUFSIZ];
-
-static const char plred[] = "Player is red, computer is white.";
-static const char plwhite[] = "Player is white, computer is red.";
-static const char nocomp[] = "(No computer play.)";
-
-const char *const descr[] = {
- "usage: backgammon [-h n r w b pr pw pb tterm sfile]\n",
- "\t-h\tgets this list\n\t-n\tdon't ask for rules or instructions",
- "\t-r\tplayer is red (implies -n)\n\t-w\tplayer is white (implies -n)",
- "\t-b\ttwo players, red and white (implies -n)",
- "\t-pr\tprint the board before red's turn",
- "\t-pw\tprint the board before white's turn",
- "\t-pb\tprint the board before both player's turn",
- "\t-tterm\tterminal is a term",
- "\t-sfile\trecover saved game from file",
- 0
-};
-
-errexit (s)
-char *s;
-{
- write (2,"\n",1);
- perror (s);
- getout();
-}
-
-int addbuf (c)
-int c;
-
-{
- buffnum++;
- if (buffnum == BUFSIZ) {
- if (write(1,outbuff,BUFSIZ) != BUFSIZ)
- errexit ("addbuf (write):");
- buffnum = 0;
- }
- outbuff[buffnum] = c;
- return (0);
-}
-
-buflush () {
- if (buffnum < 0)
- return;
- buffnum++;
- if (write (1,outbuff,buffnum) != buffnum)
- errexit ("buflush (write):");
- buffnum = -1;
-}
-
-readc () {
- char c;
-
- if (tflag) {
- cline();
- newpos();
- }
- buflush();
- if (read(0,&c,1) != 1)
- errexit ("readc");
-#ifdef WHY_IS_THIS_HARDWIRED_IN_HERE
- if (c == '\177')
- getout();
-#endif
- if (c == '\033' || c == '\015')
- return ('\n');
- if (cflag)
- return (c);
- if (c == '\014')
- return ('R');
- if (c >= 'a' && c <= 'z')
- return (c & 0137);
- return (c);
-}
-
-writec (c)
-char c;
-{
- if (tflag)
- fancyc (c);
- else
- addbuf (c);
-}
-
-void
-writel (l)
-const char *l;
-{
-#ifdef DEBUG
- const char *s;
-
- if (trace == NULL)
- trace = fopen ("bgtrace","w");
-
- fprintf (trace,"writel: \"");
- for (s = l; *s; s++) {
- if (*s < ' ' || *s == '\177')
- fprintf (trace,"^%c",(*s)^0100);
- else
- putc (*s,trace);
- }
- fprintf (trace,"\"\n");
- fflush (trace);
-#endif
-
- while (*l)
- writec (*l++);
-}
-
-proll () {
- if (d0)
- swap;
- if (cturn == 1)
- writel ("Red's roll: ");
- else
- writel ("White's roll: ");
- writec (D0+'0');
- writec ('\040');
- writec (D1+'0');
- if (tflag)
- cline();
-}
-
-wrint (n)
-int n;
-{
- int i, j, t;
-
- for (i = 4; i > 0; i--) {
- t = 1;
- for (j = 0; j<i; j++)
- t *= 10;
- if (n > t-1)
- writec ((n/t)%10+'0');
- }
- writec (n%10+'0');
-}
-
-gwrite() {
- int r, c;
-
- if (tflag) {
- r = curr;
- c = curc;
- curmove (16,0);
- }
-
- if (gvalue > 1) {
- writel ("Game value: ");
- wrint (gvalue);
- writel (". ");
- if (dlast == -1)
- writel (color[0]);
- else
- writel (color[1]);
- writel (" doubled last.");
- } else {
- switch (pnum) {
- case -1: /* player is red */
- writel (plred);
- break;
- case 0: /* player is both colors */
- writel (nocomp);
- break;
- case 1: /* player is white */
- writel (plwhite);
- }
- }
-
- if (rscore || wscore) {
- writel (" ");
- wrscore();
- }
-
- if (tflag) {
- cline();
- curmove (r,c);
- }
-}
-
-quit () {
- int i;
-
- if (tflag) {
- curmove (20,0);
- clend();
- } else
- writec ('\n');
- writel ("Are you sure you want to quit?");
- if (yorn (0)) {
- if (rfl) {
- writel ("Would you like to save this game?");
- if (yorn(0))
- save(0);
- }
- cturn = 0;
- return (1);
- }
- return (0);
-}
-
-yorn (special)
-char special; /* special response */
-{
- char c;
- int i;
-
- i = 1;
- while ( (c = readc()) != 'Y' && c != 'N') {
- if (special && c == special)
- return (2);
- if (i) {
- if (special) {
- writel (" (Y, N, or ");
- writec (special);
- writec (')');
- } else
- writel (" (Y or N)");
- i = 0;
- } else
- writec ('\007');
- }
- if (c == 'Y')
- writel (" Yes.\n");
- else
- writel (" No.\n");
- if (tflag)
- buflush();
- return (c == 'Y');
-}
-
-wrhit (i)
-int i;
-{
- writel ("Blot hit on ");
- wrint (i);
- writec ('.');
- writec ('\n');
-}
-
-nexturn () {
- int c;
-
- cturn = -cturn;
- c = cturn/abs(cturn);
- home = bar;
- bar = 25-bar;
- offptr += c;
- offopp -= c;
- inptr += c;
- inopp -= c;
- Colorptr += c;
- colorptr += c;
-}
-
-getarg (argc, argv)
-int argc;
-char **argv;
-
-{
- char ch;
- extern int optind;
- extern char *optarg;
- int i;
-
- /* process arguments here. dashes are ignored, nbrw are ignored
- if the game is being recovered */
-
- while ((ch = getopt (argc, argv, "nbrwp:t:s:h")) != -1) {
- switch (ch) {
-
- /* don't ask if rules or instructions needed */
- case 'n':
- if (rflag)
- break;
- aflag = 0;
- args[acnt++] = strdup ("-n");
- break;
-
- /* player is both red and white */
- case 'b':
- if (rflag)
- break;
- pnum = 0;
- aflag = 0;
- args[acnt++] = strdup ("-b");
- break;
-
- /* player is red */
- case 'r':
- if (rflag)
- break;
- pnum = -1;
- aflag = 0;
- args[acnt++] = strdup ("-r");
- break;
-
- /* player is white */
- case 'w':
- if (rflag)
- break;
- pnum = 1;
- aflag = 0;
- args[acnt++] = strdup ("-w");
- break;
-
- /* print board after move according to following character */
- case 'p':
- if (optarg[0] != 'r' && optarg[0] != 'w' && optarg[0] != 'b')
- break;
- args[acnt] = strdup ("-p ");
- args[acnt++][2] = optarg[0];
- if (optarg[0] == 'r')
- bflag = 1;
- if (optarg[0] == 'w')
- bflag = -1;
- if (optarg[0] == 'b')
- bflag = 0;
- break;
-
- case 't':
- tflag = getcaps (optarg);
- break;
-
- case 's':
- /* recover file */
- recover (optarg);
- break;
- case 'h':
- for (i = 0; descr[i] != 0; i++)
- puts (descr[i]);
- getout();
- }
- }
- argc -= optind;
- argv += optind;
- if ( argc && argv[0][0] != '\0' )
- recover(argv[0]);
-}
-
-init () {
- int i;
- for (i = 0; i < 26;)
- board[i++] = 0;
- board[1] = 2;
- board[6] = board[13] = -5;
- board[8] = -3;
- board[12] = board[19] = 5;
- board[17] = 3;
- board[24] = -2;
- off[0] = off[1] = -15;
- in[0] = in[1] = 5;
- gvalue = 1;
- dlast = 0;
-}
-
-wrscore () {
- writel ("Score: ");
- writel (color[1]);
- writec (' ');
- wrint (rscore);
- writel (", ");
- writel (color[0]);
- writec (' ');
- wrint (wscore);
-}
-
-fixtty (mode)
-int mode;
-{
- if (tflag)
- newpos();
- buflush();
- tty.sg_flags = mode;
- if (stty (0,&tty) < 0)
- errexit("fixtty");
-}
-
-void
-getout () {
- /* go to bottom of screen */
- if (tflag) {
- curmove (23,0);
- cline();
- } else
- writec ('\n');
-
- /* fix terminal status */
- fixtty (old);
- exit(0);
-}
-roll () {
- char c;
- int row;
- int col;
-
- if (iroll) {
- if (tflag) {
- row = curr;
- col = curc;
- curmove (17,0);
- } else
- writec ('\n');
- writel ("ROLL: ");
- c = readc();
- if (c != '\n') {
- while (c < '1' || c > '6')
- c = readc();
- D0 = c-'0';
- writec (' ');
- writec (c);
- c = readc();
- while (c < '1' || c > '6')
- c = readc();
- D1 = c-'0';
- writec (' ');
- writec (c);
- if (tflag) {
- curmove (17,0);
- cline();
- curmove (row,col);
- } else
- writec ('\n');
- return;
- }
- if (tflag) {
- curmove (17,0);
- cline();
- curmove (row,col);
- } else
- writec ('\n');
- }
- D0 = rnum(6)+1;
- D1 = rnum(6)+1;
- d0 = 0;
-}
diff --git a/games/backgammon/common_source/table.c b/games/backgammon/common_source/table.c
deleted file mode 100644
index 572cba30eab0..000000000000
--- a/games/backgammon/common_source/table.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)table.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "back.h"
-
-const char *const help2[] = {
- " Enter moves as <s>-<f> or <s>/<r> where <s> is the starting",
- "position, <f> is the finishing position, and <r> is the roll.",
- "Remember, each die roll must be moved separately.",
- 0
-};
-
-struct state {
- char ch;
- int fcode;
- int newst;
-};
-
-static const struct state atmata[] = {
-
- 'R', 1, 0, '?', 7, 0, 'Q', 0, -3, 'B', 8, 25,
- '9', 2, 25, '8', 2, 25, '7', 2, 25, '6', 2, 25,
- '5', 2, 25, '4', 2, 25, '3', 2, 25, '2', 2, 19,
- '1', 2, 15, '0', 2, 25, '.', 0, 0, '9', 2, 25,
- '8', 2, 25, '7', 2, 25, '6', 2, 25, '5', 2, 25,
-
- '4', 2, 25, '3', 2, 25, '2', 2, 25, '1', 2, 25,
- '0', 2, 25, '/', 0, 32, '-', 0, 39, '.', 0, 0,
- '/', 5, 32, ' ', 6, 3, ',', 6, 3, '\n', 0, -1,
- '6', 3, 28, '5', 3, 28, '4', 3, 28, '3', 3, 28,
- '2', 3, 28, '1', 3, 28, '.', 0, 0, 'H', 9, 61,
-
- '9', 4, 61, '8', 4, 61, '7', 4, 61, '6', 4, 61,
- '5', 4, 61, '4', 4, 61, '3', 4, 61, '2', 4, 53,
- '1', 4, 51, '0', 4, 61, '.', 0, 0, '9', 4, 61,
- '8', 4, 61, '7', 4, 61, '6', 4, 61, '5', 4, 61,
- '4', 4, 61, '3', 4, 61, '2', 4, 61, '1', 4, 61,
-
- '0', 4, 61, ' ', 6, 3, ',', 6, 3, '-', 5, 39,
- '\n', 0, -1, '.', 0, 0
-};
-
-checkmove (ist)
-
-int ist;
-
-{
- int j, n;
- char c;
- char a;
-
-domove:
- if (ist == 0) {
- if (tflag)
- curmove (curr,32);
- else
- writel ("\t\t");
- writel ("Move: ");
- }
- ist = mvl = ncin = 0;
- for (j = 0; j < 5; j++)
- p[j] = g[j] = -1;
-
-dochar:
- c = readc();
-
- if (c == 'S') {
- raflag = 0;
- save (1);
- if (tflag) {
- curmove (cturn == -1? 18: 19,39);
- ist = -1;
- goto domove;
- } else {
- proll ();
- ist = 0;
- goto domove;
- }
- }
-
- if (c == tty.sg_erase && ncin > 0) {
- if (tflag)
- curmove (curr,curc-1);
- else {
- if (tty.sg_erase == '\010')
- writel ("\010 \010");
- else
- writec (cin[ncin-1]);
- }
- ncin--;
- n = rsetbrd();
- if (n == 0) {
- n = -1;
- if (tflag)
- refresh();
- }
- if ((ist = n) > 0)
- goto dochar;
- goto domove;
- }
-
- if (c == tty.sg_kill && ncin > 0) {
- if (tflag) {
- refresh();
- curmove (curr,39);
- ist = -1;
- goto domove;
- } else if (tty.sg_erase == '\010') {
- for (j = 0; j < ncin; j++)
- writel ("\010 \010");
- ist = -1;
- goto domove;
- } else {
- writec ('\\');
- writec ('\n');
- proll ();
- ist = 0;
- goto domove;
- }
- }
-
- n = dotable(c,ist);
- if (n >= 0) {
- cin[ncin++] = c;
- if (n > 2)
- if ((! tflag) || c != '\n')
- writec (c);
- ist = n;
- if (n)
- goto dochar;
- else
- goto domove;
- }
-
- if (n == -1 && mvl >= mvlim)
- return(0);
- if (n == -1 && mvl < mvlim-1)
- return(-4);
-
- if (n == -6) {
- if (! tflag) {
- if (movokay(mvl+1)) {
- wrboard();
- movback (mvl+1);
- }
- proll ();
- writel ("\t\tMove: ");
- for (j = 0; j < ncin;)
- writec (cin[j++]);
- } else {
- if (movokay(mvl+1)) {
- refresh();
- movback (mvl+1);
- } else
- curmove (cturn == -1? 18:19,ncin+39);
- }
- ist = n = rsetbrd();
- goto dochar;
- }
-
- if (n != -5)
- return(n);
- writec ('\007');
- goto dochar;
-}
-
-dotable (c,i)
-char c;
-int i;
-
-{
- int a, j;
- int test;
-
- test = (c == 'R');
-
- while ( (a = atmata[i].ch) != '.') {
- if (a == c || (test && a == '\n')) {
- switch (atmata[i].fcode) {
-
- case 1:
- wrboard();
- if (tflag) {
- curmove (cturn == -1? 18: 19,0);
- proll ();
- writel ("\t\t");
- } else
- proll ();
- break;
-
- case 2:
- if (p[mvl] == -1)
- p[mvl] = c-'0';
- else
- p[mvl] = p[mvl]*10+c-'0';
- break;
-
- case 3:
- if (g[mvl] != -1) {
- if (mvl < mvlim)
- mvl++;
- p[mvl] = p[mvl-1];
- }
- g[mvl] = p[mvl]+cturn*(c-'0');
- if (g[mvl] < 0)
- g[mvl] = 0;
- if (g[mvl] > 25)
- g[mvl] = 25;
- break;
-
- case 4:
- if (g[mvl] == -1)
- g[mvl] = c-'0';
- else
- g[mvl] = g[mvl]*10+c-'0';
- break;
-
- case 5:
- if (mvl < mvlim)
- mvl++;
- p[mvl] = g[mvl-1];
- break;
-
- case 6:
- if (mvl < mvlim)
- mvl++;
- break;
-
- case 7:
- if (tflag)
- curmove (20,0);
- else
- writec ('\n');
- text (help2);
- if (tflag) {
- curmove (cturn == -1? 18: 19,39);
- } else {
- writec ('\n');
- proll();
- writel ("\t\tMove: ");
- }
- break;
-
- case 8:
- p[mvl] = bar;
- break;
-
- case 9:
- g[mvl] = home;
- }
-
- if (! test || a != '\n')
- return (atmata[i].newst);
- else
- return (-6);
- }
-
- i++;
- }
-
- return (-5);
-}
-
-rsetbrd () {
- int i, j, n;
-
- n = 0;
- mvl = 0;
- for (i = 0; i < 4; i++)
- p[i] = g[i] = -1;
- for (j = 0; j < ncin; j++)
- n = dotable (cin[j],n);
- return (n);
-}
diff --git a/games/backgammon/teachgammon/Makefile b/games/backgammon/teachgammon/Makefile
deleted file mode 100644
index 56ceb882dbbb..000000000000
--- a/games/backgammon/teachgammon/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 5/31/93
-
-PROG= teachgammon
-CFLAGS+=-DV7 -I${.CURDIR}/../common_source
-SRCS= allow.c board.c check.c data.c fancy.c init.c odds.c one.c save.c \
- subs.c table.c teach.c ttext1.c ttext2.c tutor.c
-DPADD= ${LIBTERMCAP} ${LIBCOMPAT}
-LDADD= -ltermcap -lcompat
-HIDEGAME=hidegame
-NOMAN= noman
-
-.PATH: ${.CURDIR}/../common_source
-
-.include "../../Makefile.inc"
-.include <bsd.prog.mk>
diff --git a/games/backgammon/teachgammon/data.c b/games/backgammon/teachgammon/data.c
deleted file mode 100644
index 4f9151a2aabc..000000000000
--- a/games/backgammon/teachgammon/data.c
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)data.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "tutor.h"
-
-int maxmoves = 23;
-
-const char *const text0[] = {
- "To start the game, I roll a 3, and you roll a 1. This means",
- "that I get to start first. I move 8-5,6-5 since this makes a",
- "new point and helps to trap your back men on 1. You should be",
- "able to do a similar move with your roll.",
- 0
-};
-
-const char *const text1[] = {
- "Now you shall see a move using doubles. I just rolled double",
- "5's. I will move two men from position 13 to position 3. The",
- "notation for this is 13-8,13-8,8-3,8-3. You will also roll dou-",
- "bles, but you will be able to make a much stronger move.",
- 0
-};
-
-const char *const text2[] = {
- "Excellent! As you can see, you are beginning to develop a wall",
- "which is trapping my men on position 24. Also, moving your back",
- "men forward not only improves your board position safely, but it",
- "thwarts my effort to make a wall.",
- "",
- "My roll now is 5 6. Normally, I would use that roll to move from",
- "position 24 to position 13 (24-18-13), but your new point prevents",
- "that. Instead, I am forced to move from 13 to 2, where my man is",
- "open but cannot be hit.",
- 0
-};
-
-const char *const text3[] = {
- "As you can see, although you left a man open, it is a rela-",
- "tively safe move to an advantageous position, which might help",
- "you make a point later. Only two rolls (4 5 or 5 4) will allow",
- "me to hit you. With an unprecedented amount of luck, I happen",
- "to roll a 4 5 and hit you as just mentioned.",
- 0
-};
-
-const char *const text4[] = {
- "You're pretty lucky yourself, you know. I follow by rolling 2 3",
- "and moving 25-22,24-22, forming a new point.",
- 0
-};
-
-const char *const text5[] = {
- "Not a spectacular move, but a safe one. I follow by rolling 6 1.",
- "I decide to use this roll to move 22-16,16-15. It leaves me with",
- "one man still open, but the blot is farther back on the board, and",
- "would suffer less of a loss by being hit.",
- 0
-};
-
-const char *const text6[] = {
- "By moving your two men from 17 to 20, you lessen my chance of",
- "getting my man off the board. In fact, the odds are 5 to 4",
- "against me getting off. I roll with the odds and helplessly",
- "receive a 3 5.",
- 0
-};
-
-const char *const text7[] = {
- "Note that the blot on 7 cannot be hit unless I get off the bar",
- "and have a 1 or a 6 left over, and doing so will leave two of",
- "my men open. Also, the blot on 16 cannot be hit at all! With",
- "a sigh of frustration, I roll double 6's and remain immobile.",
- 0
-};
-
-const char *const text8[] = {
- "See, you did not get hit and, you got to 'cover up' your open men.",
- "Quite an accomplishment. Finally, I get off the bar by rolling",
- "6 2 and moving 25-23,23-17.",
- 0
-};
-
-const char *const text9[] = {
- "My venture off the bar did not last long. However, I got lucky",
- "and rolled double 1's, allowing me to move 25-24,24-23,15-14,15-14.",
- 0
-};
-
-const char *const text10[] = {
- "You are improving your position greatly and safely, and are well",
- "on the way to winning the game. I roll a 6 2 and squeak past",
- "your back man. Now the game becomes a race to the finish.",
- 0
-};
-
-const char *const text11[] = {
- "Now that it is merely a race, you are trying to get as many men",
- "as possible into the inner table, so you can start removing them.",
- "I roll a 3 4 and move my two men farthest back to position 11",
- "(15-11,14-11).",
- 0
-};
-
-const char *const text12[] = {
- "The race is still on, and you have seem to be doing all right.",
- "I roll 6 1 and move 14-8,13-12.",
- 0
-};
-
-const char *const text13[] = {
- "Notice that you get to remove men the instant you have all of",
- "them at your inner table, even if it is the middle of a turn.",
- "I roll 1 2 and move 13-11,12-11.",
- 0
-};
-
-const char *const text14[] = {
- "Although you could have removed a man, this move illustrates two",
- "points: 1) You never have to remove men, and 2) You should try",
- "to spread out your men on your inner table. Since you have one",
- "man on each position, you should be able to remove at least two",
- "men next turn. I roll 2 5 and move 8-6,11-6.",
- 0
-};
-
-const char *const text15[] = {
- "This time you were able to remove men. I roll 3 4 and move",
- "11-7,11-8. The race continues.",
- 0
-};
-
-const char *const text16[] = {
- "More holes are opening up in your inner table, but you are",
- "still very much ahead. If we were doubling, you would have",
- "doubled long ago. I roll 2 6 and move 8-6,11-5.",
- 0
-};
-
-const char *const text17[] = {
- "It pays to spread out your men. I roll 3 5 and move 7-4,8-3.",
- 0
-};
-
-const char *const text18[] = {
- "You can only remove some men, but you spread out more and",
- "more, in order to be able to remove men more efficiently.",
- "I roll double 3's, which help, but not that much. I move",
- "8-5,3-0,3-0,3-0.",
- 0
-};
-
-const char *const text19[] = {
- "I roll 1 4 and move 5-4,4-0.",
- 0
-};
-
-const char *const text20[] = {
- "You are now nicely spread out to win a game. I roll 5 6 and",
- "move 5-0,6-0.",
- 0
-};
-
-const char *const text21[] = {
- "Any minute now. Just a few short steps from victory. I roll",
- "2 4 and move 6-4,4-0.",
- 0
-};
-
-const char *const text22[] = {
- "It looks pretty hopeless for me, but I play on, rolling 1 3 and",
- "moving 4-3,3-0.",
- 0
-};
-
-const char *const text23[] = {
- "Congratulations! You just won a game of backgammon against the",
- "computer! You will now be able to play a game, but remember,",
- "when you start playing, that doubling will be enabled, which",
- "will add another factor to the game... Good luck!!",
- "",
- 0
-};
-
-const struct situatn test[] = {
- {
- {0,2,0,0,0,0,-5,0,-3,0,0,0,5,-5,0,0,0,3,0,5,0,0,0,0,-2,0},
- 3, 1, {8,6,0,0}, {5,5,0,0}, 4, 2, text0
- },
- {
- {0,2,0,0,0,-2,-4,0,-2,0,0,0,5,-5,0,0,0,2,0,4,0,2,0,0,-2,0},
- 5, 5, {13,13,8,8}, {8,8,3,3}, 6, 6, text1
- },
- {
- {0,0,0,-2,0,-2,-4,2,-2,0,0,0,3,-3,0,0,0,2,2,4,0,2,0,0,-2,0},
- 6, 5, {13,8,0,0}, {8,2,0,0}, 1, 2, text2
- },
- {
- {0,0,-1,-2,0,-2,-4,2,-2,0,0,0,2,-2,0,1,0,2,2,4,0,2,0,0,-2,0},
- 4, 5, {24,20,0,0}, {20,15,0,0}, 2, 5, text3
- },
- {
- {0,0,0,-2,0,-2,-4,3,-2,0,0,0,2,-2,0,-1,0,2,2,4,0,2,0,0,-1,-1},
- 2, 3, {25,24,0,0}, {22,22,0,0}, 4, 1, text4
- },
- {
- {0,0,0,-2,0,-2,-4,2,-2,0,0,0,3,-2,0,-1,0,2,2,4,0,2,-2,0,0,0},
- 6, 1, {22,16,0,0}, {16,15,0,0}, 3, 3, text5
- },
- {
- {0,0,0,-2,0,-2,-4,2,-2,0,0,0,3,-2,0,-2,0,0,2,2,2,2,2,0,0,-1},
- 3, 5, {0,0,0,0}, {0,0,0,0}, 5, 4, text6
- },
- {
- {0,0,0,-2,0,-2,-4,1,-2,0,0,0,3,-2,0,-2,1,0,2,2,2,2,2,0,0,-1},
- 6, 6, {0,0,0,0}, {0,0,0,0}, 3, 6, text7
- },
- {
- {0,0,0,-2,0,-2,-4,0,-2,0,0,0,3,-2,0,-2,2,0,2,2,2,2,2,0,0,-1},
- 2, 6, {25,23,0,0}, {23,17,0,0}, 5, 1, text8
- },
- {
- {0,0,0,-2,0,-2,-4,0,-2,0,0,0,2,-2,0,-2,2,0,3,2,2,2,2,0,0,-1},
- 1, 1, {25,24,15,15}, {24,23,14,14}, 4, 6, text9
- },
- {
- {0,0,0,-2,0,-2,-4,0,-2,0,0,0,0,-2,-2,0,3,0,4,2,2,2,2,-1,0,0},
- 6, 2, {23,17,0,0}, {17,15,0,0}, 1, 3, text10
- },
- {
- {0,0,0,-2,0,-2,-4,0,-2,0,0,0,0,-2,-2,-1,2,0,3,4,2,2,2,0,0,0},
- 4, 3, {15,14,0,0}, {11,11,0,0}, 5, 3, text11
- },
- {
- {0,0,0,-2,0,-2,-4,0,-2,0,0,-2,0,-2,-1,0,0,0,3,5,2,3,2,0,0,0},
- 6, 1, {14,13,0,0}, {8,12,0,0}, 4, 4, text12
- },
- {
- {0,0,0,-2,0,-2,-4,0,-3,0,0,-2,-1,-1,0,0,0,0,0,5,2,2,5,0,0,0},
- 2, 1, {13,12,0,0}, {11,11,0,0}, 2, 1, text13
- },
- {
- {0,0,0,-2,0,-2,-4,0,-3,0,0,-4,0,0,0,0,0,0,0,5,2,2,3,1,1,0},
- 2, 5, {8,11,0,0}, {6,6,0,0}, 6, 3, text14
- },
- {
- {0,0,0,-2,0,-2,-6,0,-2,0,0,-3,0,0,0,0,0,0,0,4,2,2,2,1,1,0},
- 4, 3, {11,11,0,0}, {7,8,0,0}, 2, 5, text15
- },
- {
- {0,0,0,-2,0,-2,-6,-1,-3,0,0,-1,0,0,0,0,0,0,0,4,1,2,2,0,1,0},
- 2, 6, {8,11,0,0}, {6,5,0,0}, 6, 1, text16
- },
- {
- {0,0,0,-2,0,-3,-7,-1,-2,0,0,0,0,0,0,0,0,0,0,3,1,2,2,0,0,0},
- 5, 3, {8,7,0,0}, {3,4,0,0}, 5, 2, text17
- },
- {
- {0,0,0,-3,-1,-3,-7,0,-1,0,0,0,0,0,0,0,0,0,0,3,0,1,2,1,0,0},
- 3, 3, {8,3,3,3}, {5,0,0,0}, 1, 6, text18
- },
- {
- {0,0,0,0,-1,-4,-7,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,1,0,0},
- 1, 4, {4,5,0,0}, {0,4,0,0}, 2, 3, text19
- },
- {
- {0,0,0,0,-1,-3,-7,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0},
- 5, 6, {6,5,0,0}, {0,0,0,0}, 1, 4, text20
- },
- {
- {0,0,0,0,-1,-2,-6,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0},
- 2, 4, {4,6,0,0}, {0,4,0,0}, 6, 2, text21
- },
- {
- {0,0,0,0,-1,-2,-5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0},
- 3, 1, {4,3,0,0}, {3,0,0,0}, 4, 3, text22
- },
- {
- {0,0,0,0,0,-2,-5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
- 0, 0, {0,0,0,0}, {0,0,0,0}, 0, 0, text23
- }
-};
diff --git a/games/backgammon/teachgammon/teach.c b/games/backgammon/teachgammon/teach.c
deleted file mode 100644
index f8dc85e0177f..000000000000
--- a/games/backgammon/teachgammon/teach.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (c) 1980, 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 const char 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[] = "@(#)teach.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <string.h>
-#include <sys/types.h>
-#include <termcap.h>
-#include <unistd.h>
-#include <signal.h>
-#include "back.h"
-
-extern char *hello[];
-extern char *list[];
-extern char *intro1[];
-extern char *intro2[];
-extern char *moves[];
-extern char *remove[];
-extern char *hits[];
-extern char *endgame[];
-extern char *doubl[];
-extern char *stragy[];
-extern char *prog[];
-extern char *lastch[];
-
-const char *const helpm[] = {
- "\nEnter a space or newline to roll, or",
- " b to display the board",
- " d to double",
- " q to quit\n",
- 0
-};
-
-const char *const contin[] = {
- "",
- 0
-};
-
-main (argc,argv)
-int argc;
-char **argv;
-
-{
- int i;
-
- /* revoke privs */
- setgid(getgid());
-
- acnt = 1;
- signal (SIGINT,getout);
- if (gtty (0,&tty) == -1) /* get old tty mode */
- errexit ("teachgammon(gtty)");
- old = tty.sg_flags;
-#ifdef V7
- raw = ((noech = old & ~ECHO) | CBREAK); /* set up modes */
-#else
- raw = ((noech = old & ~ECHO) | RAW); /* set up modes */
-#endif
- ospeed = tty.sg_ospeed; /* for termlib */
- tflag = getcaps (getenv ("TERM"));
- getarg (argc, argv);
- if (tflag) {
- noech &= ~(CRMOD|XTABS);
- raw &= ~(CRMOD|XTABS);
- clear();
- }
- text (hello);
- text (list);
- i = text (contin);
- if (i == 0)
- i = 2;
- init();
- while (i)
- switch (i) {
-
- case 1:
- leave();
-
- case 2:
- if (i = text(intro1))
- break;
- wrboard();
- if (i = text(intro2))
- break;
-
- case 3:
- if (i = text(moves))
- break;
-
- case 4:
- if (i = text(remove))
- break;
-
- case 5:
- if (i = text(hits))
- break;
-
- case 6:
- if (i = text(endgame))
- break;
-
- case 7:
- if (i = text(doubl))
- break;
-
- case 8:
- if (i = text(stragy))
- break;
-
- case 9:
- if (i = text(prog))
- break;
-
- case 10:
- if (i = text(lastch))
- break;
- }
- tutor();
-}
-
-leave() {
- int i;
- if (tflag)
- clear();
- else
- writec ('\n');
- fixtty(old);
- args[0] = strdup("backgammon");
- args[acnt++] = strdup("-n");
- args[acnt] = 0;
- execv (EXEC,args);
- for (i = 0; i < acnt; i++)
- free (args[i]);
- writel ("Help! Backgammon program is missing\007!!\n");
- exit (-1);
-}
diff --git a/games/backgammon/teachgammon/ttext1.c b/games/backgammon/teachgammon/ttext1.c
deleted file mode 100644
index 89cb306e626d..000000000000
--- a/games/backgammon/teachgammon/ttext1.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)ttext1.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "back.h"
-
-const char *opts = " QIMRHEDSPT";
-const char *prompt = "-->";
-
-const char *const list[] = {
- "\n\n\tI\tIntroduction to Backgammon",
- "\tM\tMoves and Points",
- "\tR\tRemoving Men from the Board",
- "\tH\tHitting Blots",
- "\tE\tEnding the Game and Scoring",
- "\tD\tDoubling",
- "\tS\tStrategy",
- "\tP\tThe Program and How to Use It",
- "\nalso, you can type:",
- "\t?\tto get this list",
- "\tQ\tto go start playing",
- "\tT\tto go straight to the tutorial",
- 0
-};
-
-const char *const hello[] = {
- "\n\032 These rules consist of text describing how to play Backgammon",
- "followed by a tutorial session where you play a practice game",
- "against the computer. When using this program, think carefuly",
- "before typing, since it reacts as soon as you type something. In",
- "addition, the program presents text output, such as these rules,",
- "in small blocks that will not roll off the top of the screen.",
- "Frequently, you will see the characters '-->' indicating that the",
- "program is waiting for you to finish reading, and will continue",
- "printing when you type a space or newline. Also, the rules are",
- "divided into sections, and although you should read them in or-",
- "der, you can go directly to any of them by typing one of the fol-",
- "lowing letters:",
- "(Remember to hit a space or a newline to continue.)",
- "",
- 0
-};
-
-const char *const intro1[] = {
- "\nIntroduction:",
- "\n Backgammon is a game involving the skill of two players and",
- "the luck of two dice. There are two players, red and white, and",
- "each player gets fifteen men. The object of the game is to re-",
- "move all your men from the board before the opponent does. The",
- "board consists of twenty-four positions, a 'bar' and a 'home' for",
- "each player. It looks like this:",
- "",
- 0};
-
-const char *const intro2[] = {
- "",
- "\n Although not indicated on the board, the players' homes are",
- "located just to the right of the board. A player's men are placed",
- "there when they are removed from the board. The board you just",
- "saw was in it's initial position. All games start with the board",
- "looking like this. Notice that red's pieces are represented by the",
- "letter 'r' and white's pieces are represented by the letter 'w'.",
- "Also, a position may have zero or more pieces on it, e.g. posi-",
- "tion 12 has five red pieces on it, while position 11 does not",
- "have any pieces of either color.",
- "",
- 0};
-
-const char *const moves[] = {
- "\nMoves and Points:",
- "\n Moves are made along the positions on the board according to",
- "their numbers. Red moves in the positive direction (clockwise",
- "from 1 to 24), and white moves in the negative direction (coun-",
- "terclockwise from 24 to 1).",
- "\n A turn consists of rolling the dice, and moving the number of",
- "positions indicated on each die. The two numbers can be used to",
- "move one man the sum of the two rolls, or two men the number on",
- "each individual die. For example, if red rolled 6 3 at the start",
- "of the game, he might move a man from 1 to 7 to 10, using both",
- "dice for one man, or he might move two men from position 12, one",
- "to 15 and one to 18. (Red did not have to choose two men start-",
- "ing from the same position.) In addition, doubles are treated",
- "specially in backgammon. When a player rolls doubles, he gets to",
- "move as if he had four dice instead of two. For instance, if you",
- "rolled double 2's, you could move one man eight positions, four",
- "men two positions each, or any permutation in between.",
- "",
- "\n However, there are certain limitations, called 'points.' A",
- "player has a point when he has two or more men on the same posi-",
- "tion. This gives him custody of that position, and his opponent",
- "cannot place his men there, even if passing through on the way to",
- "another position. When a player has six points in a row, it is",
- "called a 'wall,' since any of his opponent's men behind the wall",
- "cannot pass it and are trapped, at least for the moment. Notice",
- "that this could mean that a player could not use part or all of",
- "his roll. However, he must use as much of his roll as possible.",
- "",
- 0};
-
-const char *const remove[] = {
- "\nRemoving Men from the Board:",
- "\n The most important part of the game is removing men, since",
- "that is how you win the game. Once a man is removed, he stays",
- "off the board for the duration of the game. However, a player",
- "cannot remove men until all his men are on his 'inner table,' or",
- "the last six positions of the board (19-24 for red, 6-1 for",
- "white).",
- "\n To get off the board, a player must roll the exact number to",
- "get his man one position past the last position on the board, or",
- "his 'home.' Hence, if red wanted to remove a man from position",
- "23, he would have to roll a 2, anything else would be used for",
- "another man, or for another purpose. However, there is one ex-",
- "ception. If the player rolling has no men far enough to move the",
- "roll made, he may move his farthest man off the board. For exam-",
- "ple, if red's farthest man back was on position 21, he could re-",
- "move men from that position if he rolled a 5 or a 6, as well as a",
- "4. Since he does not have men on 20 (where he could use a 5) or",
- "on 19 (where he could use a 6), he can use these rolls for posi-",
- "tion 21. A player never has to remove men, but he must make as",
- "many moves as possible.",
- "",
- 0};
-
-const char *const hits[] = {
- "\nHitting Blots:",
- "\n Although two men on a position form an impenetrable point, a",
- "lone man is not so secure. Such a man is called a 'blot' and has",
- "the potential of getting hit by an opposing man. When a player's",
- "blot is hit, he is placed on the bar, and the first thing that",
- "player must do is move the man off the bar. Such moves are",
- "counted as if the bar is one position behind the first position",
- "on the board. Thus if red has a man on the bar and rolls 2 3, he",
- "must move the man on the bar to position 2 or 3 before moving any",
- "other man. If white had points on positions 2 and 3, then red",
- "would forfeit his turn. Being on the bar is a very bad position,",
- "for often a player can lose many turns trying to move off the",
- "bar, as well as being set back the full distance of the board.",
- "",
- 0};
-
-const char *const endgame[] = {
- "\nEnding the Game and Scoring:",
- "\n Winning a game usually wins one point, the normal value of a",
- "game. However, if the losing player has not removed any men yet,",
- "then the winning player wins double the game value, called a",
- "'gammon.' If the losing player has a player on the bar or on the",
- "winner's inner table, then the winner gets triple the game value,",
- "which is called a 'backgammon.' (So that's where the name comes",
- "from!)",
- "",
- 0};
diff --git a/games/backgammon/teachgammon/ttext2.c b/games/backgammon/teachgammon/ttext2.c
deleted file mode 100644
index d64659ef3e06..000000000000
--- a/games/backgammon/teachgammon/ttext2.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)ttext2.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "back.h"
-
-extern const char *const list[];
-char *prompt, *opts;
-
-const char *const doubl[] = {
- "\nDoubling:",
- "\n If a player thinks he is in a good position, he may double the",
- "value of the game. However, his opponent may not accept the pro-",
- "posal and forfeit the game before the price gets too high. A",
- "player must double before he rolls, and once his double has been",
- "accepted, he cannot double again, until his opponent has doubled.",
- "Thus, unless the game swings back and forth in advantage between",
- "the two players a great deal, the value of the game should be",
- "low. At any rate, the value of the game will never go above 64,",
- "or six doubles. However, if a player wins a backgammon at 64",
- "points, he wins 192 points!",
- "",
- 0};
-
-const char *const stragy[] = {
- "\nStrategy:",
- "\n Some general hints when playing: Try not to leave men open",
- "unless absolutely necessary. Also, it is good to make as many",
- "points as possible. Often, two men from different positions can",
- "be brought together to form a new point. Although walls (six",
- "points in a row) are difficult to form, many points nestled close-",
- "ly together produce a formidable barrier. Also, while it is good",
- "to move back men forward, doing so lessens the opportunity for you",
- "to hit men. Finally, remember that once the two player's have",
- "passed each other on the board, there is no chance of either team",
- "being hit, so the game reduces to a race off the board. Addi-",
- "tional hints on strategy are presented in the practice game.",
- "",
- 0};
-
-const char *const prog[] = {
- "\nThe Program and How It Works:",
- "\n A general rule of thumb is when you don't know what to do,",
- "type a question mark, and you should get some help. When it is",
- "your turn, only your color will be printed out, with nothing",
- "after it. You may double by typing a 'd', but if you type a",
- "space or newline, you will get your roll. (Remember, you must",
- "double before you roll.) Also, typing a 'r' will reprint the",
- "board, and a 'q' will quit the game. The program will type",
- "'Move:' when it wants your move, and you may indicate each die's",
- "move with <s>-<f>, where <s> is the starting position and <f> is",
- "the finishing position, or <s>/<r> where <r> is the roll made.",
- "<s>-<f1>-<f2> is short for <s>-<f1>,<f1>-<f2> and <s>/<r1><r2> is",
- "short for <s>/<r1>,<s>/<r2>. Moves may be separated by a comma",
- "or a space.",
- "",
- "\n While typing, any input which does not make sense will not be",
- "echoed, and a bell will sound instead. Also, backspacing and",
- "killing lines will echo differently than normal. You may examine",
- "the board by typing a 'r' if you have made a partial move, or be-",
- "fore you type a newline, to see what the board looks like. You",
- "must end your move with a newline. If you cannot double, your",
- "roll will always be printed, and you will not be given the oppor-",
- "tunity to double. Home and bar are represented by the appropri-",
- "ate number, 0 or 25 as the case may be, or by the letters 'h' or",
- "'b' as appropriate. You may also type 'r' or 'q' when the program",
- "types 'Move:', which has the same effect as above. Finally, you",
- "will get to decide if you want to play red or white (or both if you",
- "want to play a friend) at the beginning of the session, and you",
- "will not get to change your mind later, since the computer keeps",
- "score.",
- "",
- 0};
-
-const char *const lastch[] = {
- "\nTutorial (Practice Game):",
- "\n This tutorial, for simplicity's sake, will let you play one",
- "predetermined game. All the rolls have been pre-arranged, and",
- "only one response will let you advance to the next move.",
- "Although a given roll will may have several legal moves, the tu-",
- "torial will only accept one (not including the same moves in a",
- "different order), claiming that that move is 'best.' Obviously,",
- "a subjective statement. At any rate, be patient with it and have",
- "fun learning about backgammon. Also, to speed things up a lit-",
- "tle, doubling will not take place in the tutorial, so you will",
- "never get that opportunity, and quitting only leaves the tutori-",
- "al, not the game. You will still be able to play backgammon",
- "after quitting.",
- "\n This is your last chance to look over the rules before the tu-",
- "torial starts.",
- "",
- 0};
-
-int
-text (txt)
-const char *const *txt;
-
-{
- const char *const *begin;
- const char *a;
- char b;
- const char *c;
- int i;
-
- fixtty (noech);
- begin = txt;
- while (*txt) {
- a = *(txt++);
- if (*a != '\0') {
- c = a;
- for (i = 0; *(c++) != '\0'; i--);
- writel (a);
- writec ('\n');
- } else {
- fixtty (raw);
- writel (prompt);
- for (;;) {
- if ((b = readc()) == '?') {
- if (tflag) {
- if (begscr) {
- curmove (18,0);
- clend();
- } else
- clear();
- } else
- writec ('\n');
- text (list);
- writel (prompt);
- continue;
- }
- i = 0;
- if (b == '\n')
- break;
- while (i < 11) {
- if (b == opts[i])
- break;
- i++;
- }
- if (i == 11)
- writec ('\007');
- else
- break;
- }
- if (tflag) {
- if (begscr) {
- curmove (18,0);
- clend();
- } else
- clear();
- } else
- writec ('\n');
- if (i)
- return(i);
- fixtty (noech);
- if (tflag)
- curmove (curr,0);
- begin = txt;
- }
- }
- fixtty (raw);
- return (0);
-}
diff --git a/games/backgammon/teachgammon/tutor.c b/games/backgammon/teachgammon/tutor.c
deleted file mode 100644
index 68124ced1ae0..000000000000
--- a/games/backgammon/teachgammon/tutor.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 1980, 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[] = "@(#)tutor.c 8.1 (Berkeley) 5/31/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "back.h"
-#include "tutor.h"
-
-extern int maxmoves;
-extern const char *const finis[];
-
-extern const struct situatn test[];
-
-static const char better[] = "That is a legal move, but there is a better one.\n";
-
-void
-tutor () {
- int i, j;
-
- i = 0;
- begscr = 18;
- cturn = -1;
- home = 0;
- bar = 25;
- inptr = &in[0];
- inopp = &in[1];
- offptr = &off[0];
- offopp = &off[1];
- Colorptr = &color[0];
- colorptr = &color[2];
- colen = 5;
- wrboard();
-
- while (1) {
- if (! brdeq(test[i].brd,board)) {
- if (tflag && curr == 23)
- curmove (18,0);
- writel (better);
- nexturn();
- movback (mvlim);
- if (tflag) {
- refresh();
- clrest ();
- }
- if ((! tflag) || curr == 19) {
- proll();
- writec ('\t');
- }
- else
- curmove (curr > 19? curr-2: curr+4,25);
- getmove();
- if (cturn == 0)
- leave();
- continue;
- }
- if (tflag)
- curmove (18,0);
- text (*test[i].com);
- if (! tflag)
- writec ('\n');
- if (i == maxmoves)
- break;
- D0 = test[i].roll1;
- D1 = test[i].roll2;
- d0 = 0;
- mvlim = 0;
- for (j = 0; j < 4; j++) {
- if (test[i].mp[j] == test[i].mg[j])
- break;
- p[j] = test[i].mp[j];
- g[j] = test[i].mg[j];
- mvlim++;
- }
- if (mvlim)
- for (j = 0; j < mvlim; j++)
- if (makmove(j))
- writel ("AARGH!!!\n");
- if (tflag)
- refresh();
- nexturn();
- D0 = test[i].new1;
- D1 = test[i].new2;
- d0 = 0;
- i++;
- mvlim = movallow();
- if (mvlim) {
- if (tflag)
- clrest();
- proll();
- writec('\t');
- getmove();
- if (tflag)
- refresh();
- if (cturn == 0)
- leave();
- }
- }
- leave();
-}
-
-clrest () {
- int r, c, j;
-
- r = curr;
- c = curc;
- for (j = r+1; j < 24; j++) {
- curmove (j,0);
- cline();
- }
- curmove (r,c);
-}
-
-int
-brdeq (b1,b2)
-const int *b1, *b2;
-
-{
- const int *e;
-
- e = b1+26;
- while (b1 < e)
- if (*b1++ != *b2++)
- return(0);
- return(1);
-}
diff --git a/games/backgammon/teachgammon/tutor.h b/games/backgammon/teachgammon/tutor.h
deleted file mode 100644
index 8b20e3367f3b..000000000000
--- a/games/backgammon/teachgammon/tutor.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 1980, 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.
- *
- * @(#)tutor.h 8.1 (Berkeley) 5/31/93
- */
-
-struct situatn {
- int brd[26];
- int roll1;
- int roll2;
- int mp[4];
- int mg[4];
- int new1;
- int new2;
- const char *const (*com[8]);
-};
-
-extern const char *const doubl[];
-extern const char *const endgame[];
-extern const char *const finis[];
-extern const char *const hello[];
-extern const char *const hits[];
-extern const char *const intro1[];
-extern const char *const intro2[];
-extern const char *const lastch[];
-extern const char *const list[];
-extern int maxmoves;
-extern const char *const moves[];
-extern const char *const opts;
-extern const char *const prog[];
-extern const char *const prompt;
-extern const char *const removepiece[];
-extern const char *const stragy[];
-extern const struct situatn test[];