summaryrefslogtreecommitdiffstats
path: root/backgammon/backgammon
diff options
context:
space:
mode:
authordholland <dholland@NetBSD.org>2012-10-13 19:19:38 +0000
committerdholland <dholland@NetBSD.org>2012-10-13 19:19:38 +0000
commit83f2ef7227030c4b88ec1006e49d9304aa6f7be0 (patch)
tree0f69865c3aa850090b15e95a6ae7a6d599c95e11 /backgammon/backgammon
parentf70c1c7e831fd972c1f452e87709f5fe158e6f4d (diff)
downloadbsdgames-darwin-83f2ef7227030c4b88ec1006e49d9304aa6f7be0.tar.gz
bsdgames-darwin-83f2ef7227030c4b88ec1006e49d9304aa6f7be0.tar.zst
bsdgames-darwin-83f2ef7227030c4b88ec1006e49d9304aa6f7be0.zip
Pass the move info around instead of using it as a global.
Diffstat (limited to 'backgammon/backgammon')
-rw-r--r--backgammon/backgammon/backlocal.h4
-rw-r--r--backgammon/backgammon/main.c47
-rw-r--r--backgammon/backgammon/move.c17
3 files changed, 35 insertions, 33 deletions
diff --git a/backgammon/backgammon/backlocal.h b/backgammon/backgammon/backlocal.h
index ae9a78b4..4a238b04 100644
--- a/backgammon/backgammon/backlocal.h
+++ b/backgammon/backgammon/backlocal.h
@@ -1,4 +1,4 @@
-/* $NetBSD: backlocal.h,v 1.4 2009/08/12 05:17:57 dholland Exp $ */
+/* $NetBSD: backlocal.h,v 1.5 2012/10/13 19:19:38 dholland Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -32,5 +32,5 @@
void dble(void);
int dblgood(void);
int freemen(int);
-void move(int);
+void move(struct move *, int);
int trapped(int, int);
diff --git a/backgammon/backgammon/main.c b/backgammon/backgammon/main.c
index d34636fd..8e38ce82 100644
--- a/backgammon/backgammon/main.c
+++ b/backgammon/backgammon/main.c
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.29 2012/10/13 18:44:14 dholland Exp $ */
+/* $NetBSD: main.c,v 1.30 2012/10/13 19:19:38 dholland Exp $ */
/*
* Copyright (c) 1980, 1993
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 1993\
#if 0
static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: main.c,v 1.29 2012/10/13 18:44:14 dholland Exp $");
+__RCSID("$NetBSD: main.c,v 1.30 2012/10/13 19:19:38 dholland Exp $");
#endif
#endif /* not lint */
@@ -94,7 +94,7 @@ main(int argc __unused, char **argv)
int l; /* non-descript index */
char c; /* non-descript character storage */
time_t t; /* time for random num generator */
- struct move *mm = &gm;
+ struct move mmstore, *mm;
/* revoke setgid privileges */
setgid(getgid());
@@ -118,12 +118,15 @@ main(int argc __unused, char **argv)
t = time(NULL);
srandom(t); /* 'random' seed */
+ /* need this now beceause getarg() may try to load a game */
+ mm = &mmstore;
+ move_init(mm);
#ifdef V7
while (*++argv != 0) /* process arguments */
#else
while (*++argv != -1) /* process arguments */
#endif
- getarg(&argv);
+ getarg(mm, &argv);
args[acnt] = '\0';
if (tflag) { /* clear screen */
noech.c_oflag &= ~(ONLCR | OXTABS);
@@ -240,14 +243,14 @@ main(int argc __unused, char **argv)
for (;;) { /* begin game! */
/* initial roll if needed */
if ((!rflag) || raflag)
- roll();
+ roll(mm);
/* perform ritual of first roll */
if (!rflag) {
if (tflag)
curmove(17, 0);
while (mm->D0 == mm->D1) /* no doubles */
- roll();
+ roll(mm);
/* print rolls */
writel(rollr);
@@ -291,14 +294,14 @@ main(int argc __unused, char **argv)
/* do first move (special case) */
if (!(rflag && raflag)) {
if (cturn == pnum) /* computer's move */
- move(0);
+ move(mm, 0);
else { /* player's move */
- mm->mvlim = movallow();
+ mm->mvlim = movallow(mm);
/* reprint roll */
if (tflag)
curmove(cturn == -1 ? 18 : 19, 0);
- proll();
- getmove(); /* get player's move */
+ proll(mm);
+ getmove(mm); /* get player's move */
}
}
if (tflag) {
@@ -323,7 +326,7 @@ main(int argc __unused, char **argv)
/* do computer's move */
if (cturn == pnum) {
- move(1);
+ move(mm, 1);
/* see if double refused */
if (cturn == -2 || cturn == 2)
@@ -363,12 +366,12 @@ main(int argc __unused, char **argv)
/* save game */
case 'S':
raflag = 1;
- save(1);
+ save(mm, 1);
break;
/* quit */
case 'Q':
- quit();
+ quit(mm);
break;
/* double */
@@ -379,7 +382,7 @@ main(int argc __unused, char **argv)
/* roll */
case ' ':
case '\n':
- roll();
+ roll(mm);
writel(" rolls ");
writec(mm->D0 + '0');
writec(' ');
@@ -387,7 +390,7 @@ main(int argc __unused, char **argv)
writel(". ");
/* see if he can move */
- if ((mm->mvlim = movallow()) == 0) {
+ if ((mm->mvlim = movallow(mm)) == 0) {
/* can't move */
writel(toobad1);
@@ -403,7 +406,7 @@ main(int argc __unused, char **argv)
break;
}
/* get move */
- getmove();
+ getmove(mm);
/* okay to clean screen */
hflag = 1;
@@ -430,13 +433,13 @@ main(int argc __unused, char **argv)
} else {/* couldn't double */
/* print roll */
- roll();
+ roll(mm);
if (tflag)
curmove(cturn == -1 ? 18 : 19, 0);
- proll();
+ proll(mm);
/* can he move? */
- if ((mm->mvlim = movallow()) == 0) {
+ if ((mm->mvlim = movallow(mm)) == 0) {
/* he can't */
writel(toobad2);
@@ -448,7 +451,7 @@ main(int argc __unused, char **argv)
continue;
}
/* get move */
- getmove();
+ getmove(mm);
}
}
@@ -508,7 +511,7 @@ main(int argc __unused, char **argv)
if (i == 2) {
writel(" Save.\n");
cturn = 0;
- save(0);
+ save(mm, 0);
}
/* yes, reset game */
wrboard();
@@ -521,7 +524,7 @@ main(int argc __unused, char **argv)
/* re-initialize for recovery */
init();
cturn = 0;
- save(0);
+ save(mm, 0);
}
}
/* leave peacefully */
diff --git a/backgammon/backgammon/move.c b/backgammon/backgammon/move.c
index 6e1d4ce7..8a87fa00 100644
--- a/backgammon/backgammon/move.c
+++ b/backgammon/backgammon/move.c
@@ -1,4 +1,4 @@
-/* $NetBSD: move.c,v 1.11 2012/10/13 18:44:14 dholland Exp $ */
+/* $NetBSD: move.c,v 1.12 2012/10/13 19:19:38 dholland Exp $ */
/*
* Copyright (c) 1980, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)move.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: move.c,v 1.11 2012/10/13 18:44:14 dholland Exp $");
+__RCSID("$NetBSD: move.c,v 1.12 2012/10/13 19:19:38 dholland Exp $");
#endif
#endif /* not lint */
@@ -100,11 +100,10 @@ static int movegood(void);
/* zero if first move */
void
-move(int okay)
+move(struct move *mm, int okay)
{
int i; /* index */
int l; /* last man */
- struct move *mm = &gm;
l = 0;
if (okay) {
@@ -116,7 +115,7 @@ move(int okay)
if (cturn != 1 && cturn != -1)
return;
}
- roll();
+ roll(mm);
}
race = 0;
for (i = 0; i < 26; i++) {
@@ -144,7 +143,7 @@ move(int okay)
fixtty(&noech);
/* find out how many moves */
- mm->mvlim = movallow();
+ mm->mvlim = movallow(mm);
if (mm->mvlim == 0) {
writel(" but cannot use it.\n");
nexturn();
@@ -167,7 +166,7 @@ move(int okay)
wrint(mm->p[i] = cp[i]);
writec('-');
wrint(mm->g[i] = cg[i]);
- makmove(i);
+ makmove(mm, i);
}
writec('.');
@@ -227,12 +226,12 @@ trymove(struct move *mm, int mvnum, int swapped)
mm->g[mvnum] = home;
}
/* try to move */
- if (makmove(mvnum))
+ if (makmove(mm, mvnum))
continue;
else
trymove(mm, mvnum + 1, 2);
/* undo move to try another */
- backone(mvnum);
+ backone(mm, mvnum);
}
/* swap dice and try again */