summaryrefslogtreecommitdiffstats
path: root/battlestar
diff options
context:
space:
mode:
authorjsm <jsm@NetBSD.org>2000-09-25 14:08:08 +0000
committerjsm <jsm@NetBSD.org>2000-09-25 14:08:08 +0000
commitb70cf02d334c9377130caff93e07b0afbc39189a (patch)
tree671edd6f4a6f2e1e5b79cdf2660f0e111f3ba1d3 /battlestar
parent8c9fde9e88ab1979b6e44b73721761d5a3ff5236 (diff)
downloadbsdgames-darwin-b70cf02d334c9377130caff93e07b0afbc39189a.tar.gz
bsdgames-darwin-b70cf02d334c9377130caff93e07b0afbc39189a.tar.zst
bsdgames-darwin-b70cf02d334c9377130caff93e07b0afbc39189a.zip
Add OBJ_AN flag to objflags so as to use "a" or "an" appropriately in
messages; avoids "a amulet", "a Elf". Define and use macros to use "a", "an", "the", "is", "are" appropriately. Partly based on OpenBSD.
Diffstat (limited to 'battlestar')
-rw-r--r--battlestar/com2.c15
-rw-r--r--battlestar/com4.c22
-rw-r--r--battlestar/extern.h11
-rw-r--r--battlestar/globals.c20
4 files changed, 38 insertions, 30 deletions
diff --git a/battlestar/com2.c b/battlestar/com2.c
index 5aa0c0dd..ce8b21a7 100644
--- a/battlestar/com2.c
+++ b/battlestar/com2.c
@@ -1,4 +1,4 @@
-/* $NetBSD: com2.c,v 1.19 2000/09/25 00:28:54 jsm Exp $ */
+/* $NetBSD: com2.c,v 1.20 2000/09/25 14:08:08 jsm Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)com2.c 8.2 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: com2.c,v 1.19 2000/09/25 00:28:54 jsm Exp $");
+__RCSID("$NetBSD: com2.c,v 1.20 2000/09/25 14:08:08 jsm Exp $");
#endif
#endif /* not lint */
@@ -63,7 +63,8 @@ wearit()
return (firstnumber);
default:
- printf("You can't wear%s%s!\n", (is_plural_object(value) ? " " : " a "), objsht[value]);
+ printf("You can't wear %s%s!\n",
+ A_OR_AN_OR_BLANK(value), objsht[value]);
return (firstnumber);
case KNIFE:
@@ -91,9 +92,8 @@ wearit()
carrying -= objwt[value];
encumber -= objcumber[value];
ourtime++;
- printf("You are now wearing %s %s.\n",
- (is_plural_object(value) ? "the"
- : "a"), objsht[value]);
+ printf("You are now wearing %s%s.\n",
+ A_OR_AN_OR_THE(value), objsht[value]);
} else
if (testbit(wear, value))
printf("You are already wearing the %s.\n",
@@ -199,7 +199,8 @@ murder()
wordvalue[wordnumber] == EVERYTHING)
puts("You can't kill that!");
else
- printf("You can't kill the %s!\n",
+ printf("You can't kill %s%s!\n",
+ A_OR_AN_OR_BLANK(wordvalue[wordnumber]),
objsht[wordvalue[wordnumber]]);
break;
}
diff --git a/battlestar/com4.c b/battlestar/com4.c
index b73e3d61..467e2906 100644
--- a/battlestar/com4.c
+++ b/battlestar/com4.c
@@ -1,4 +1,4 @@
-/* $NetBSD: com4.c,v 1.17 2000/09/24 09:46:57 jsm Exp $ */
+/* $NetBSD: com4.c,v 1.18 2000/09/25 14:08:08 jsm Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)com4.c 8.2 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: com4.c,v 1.17 2000/09/24 09:46:57 jsm Exp $");
+__RCSID("$NetBSD: com4.c,v 1.18 2000/09/25 14:08:08 jsm Exp $");
#endif
#endif /* not lint */
@@ -75,18 +75,17 @@ take(from)
if (value == MEDALION)
win--;
} else if (testbit(inven, value))
- printf("You're already holding%s%s.\n",
- (is_plural_object(value) ? " " : " a "),
+ printf("You're already holding %s%s.\n",
+ A_OR_AN_OR_BLANK(value),
objsht[value]);
else if (!testbit(from, value))
printf("I don't see any %s around here.\n", objsht[value]);
else if (!heavy)
- printf("The %s %s too heavy.\n", objsht[value],
- (is_plural_object(value) ? "are" : "is"));
+ printf("The %s %stoo heavy.\n", objsht[value],
+ IS_OR_ARE(value));
else
- printf("The %s %s too cumbersome to hold.\n",
- objsht[value],
- (is_plural_object(value) ? "are" : "is"));
+ printf("The %s %stoo cumbersome to hold.\n",
+ objsht[value], IS_OR_ARE(value));
if (wordnumber < wordcount - 1 && wordvalue[++wordnumber] == AND)
wordnumber++;
else
@@ -384,9 +383,8 @@ eat()
return (firstnumber);
default:
- printf("You can't eat%s%s!\n",
- is_plural_object(value) ? " " : " a ",
- objsht[value]);
+ printf("You can't eat %s%s!\n",
+ A_OR_AN_OR_BLANK(value), objsht[value]);
return (firstnumber);
case PAPAYAS:
diff --git a/battlestar/extern.h b/battlestar/extern.h
index e03cdd39..0982ec16 100644
--- a/battlestar/extern.h
+++ b/battlestar/extern.h
@@ -1,4 +1,4 @@
-/* $NetBSD: extern.h,v 1.25 2000/09/24 14:11:09 jsm Exp $ */
+/* $NetBSD: extern.h,v 1.26 2000/09/25 14:08:08 jsm Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -229,6 +229,7 @@
/* Flags for objects. */
#define OBJ_PLURAL 1
+#define OBJ_AN 2
struct room {
const char *name;
@@ -256,6 +257,14 @@ extern const int objwt[NUMOFOBJECTS];
extern const int objcumber[NUMOFOBJECTS];
extern const int objflags[NUMOFOBJECTS];
#define is_plural_object(n) (objflags[(n)] & OBJ_PLURAL)
+/*
+ * These macros yield words to use with objects (followed but not preceded
+ * by spaces, or with no spaces if the expansion is the empty string).
+ */
+#define A_OR_AN(n) (objflags[(n)] & OBJ_AN ? "an " : "a ")
+#define A_OR_AN_OR_THE(n) (is_plural_object((n)) ? "the " : A_OR_AN((n)))
+#define A_OR_AN_OR_BLANK(n) (is_plural_object((n)) ? "" : A_OR_AN((n)))
+#define IS_OR_ARE(n) (is_plural_object((n)) ? "are " : "is ")
/* current input line */
#define WORDLEN 15
diff --git a/battlestar/globals.c b/battlestar/globals.c
index 3938d5e3..072ce36d 100644
--- a/battlestar/globals.c
+++ b/battlestar/globals.c
@@ -1,4 +1,4 @@
-/* $NetBSD: globals.c,v 1.16 2000/09/24 14:11:09 jsm Exp $ */
+/* $NetBSD: globals.c,v 1.17 2000/09/25 14:08:08 jsm Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)globals.c 8.2 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: globals.c,v 1.16 2000/09/24 14:11:09 jsm Exp $");
+__RCSID("$NetBSD: globals.c,v 1.17 2000/09/25 14:08:08 jsm Exp $");
#endif
#endif /* not lint */
@@ -221,14 +221,14 @@ const int objcumber[NUMOFOBJECTS] = {
};
const int objflags[NUMOFOBJECTS] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, OBJ_PLURAL, 0, OBJ_PLURAL,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, OBJ_PLURAL, 0, 0, 0,
- 0, 0, 0, 0, OBJ_PLURAL, 0, 0, OBJ_PLURAL,
- 0, 0, OBJ_PLURAL, 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, 0, 0, 0, OBJ_PLURAL, 0, OBJ_PLURAL,
+ 0, OBJ_AN, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, OBJ_PLURAL, 0, 0, 0,
+ 0, 0, OBJ_AN, 0, OBJ_PLURAL, 0, 0, OBJ_PLURAL,
+ 0, 0, OBJ_PLURAL, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ OBJ_AN, 0, 0, 0, 0, 0, 0, 0
};
int win = 1;