The FORTRANish mess that once was is now mostly idiomatic C. Some issues
remain to be cleaned up:
-* The remaining shared globals: K, WD1, WD1X, WD2, WD2X. These are used
+* The remaining shared globals: WD1, WD1X, WD2, WD2X. These are used
rather promiscuously to pass around information that ought to be function
- arguments in a modern language. K is a particular offender.
+ arguments in a modern language.
* Remaining unstructured gotos in playermove() and do_command(). The goto L12
in playermove() is particularly horrible, jumping backwards into the
URN, VASE, VEND, VOLCAN, WATER;
long WD1, WD1X, WD2, WD2X;
-static int K; /* information leak, should go away */
-
FILE *logfp;
bool oldstyle = false;
lcg_state lcgstate;
static bool do_command(FILE *cmdin)
{
long KQ, VERB, KK, V1, V2;
- long i;
+ long i, k, KMOD;
static long igo = 0;
static long obj = 0;
enum speechpart part;
}
if (TOTING(BEAR))RSPEAK(141);
newspeak(msg);
- K=1;
+ KMOD=1;
if (FORCED(game.loc)) {
goto L8;
}
RSPEAK(spk);
}
}
-L19999: K=43;
- if (LIQLOC(game.loc) == WATER)K=70;
+L19999: k=43;
+ if (LIQLOC(game.loc) == WATER)k=70;
V1=VOCAB(WD1,-1);
V2=VOCAB(WD2,-1);
if (V1 == ENTER && (V2 == STREAM || V2 == 1000+WATER)) {
- RSPEAK(K);
+ RSPEAK(k);
goto L2012;
}
if (V1 == ENTER && WD2 > 0) {
RSPEAK(254);
goto L2600;
}
- K=MOD(i,1000);
+ KMOD=MOD(i,1000);
KQ=i/1000+1;
switch (KQ-1)
{
case 0: goto L8;
case 1: goto L5000;
case 2: goto L4000;
- case 3: RSPEAK(K); goto L2012;
+ case 3: RSPEAK(KMOD); goto L2012;
}
BUG(22);
/* Verb and object analysis moved to separate module. */
-L4000: part=intransitive; VERB=K; goto Laction;
+L4000: part=intransitive; VERB = KMOD; goto Laction;
L4090: part=transitive; goto Laction;
-L5000: part=unknown; obj = K;
+L5000: part=unknown; obj = KMOD;
Laction:
switch (action(cmdin, part, VERB, obj)) {
case 2: return true;
- case 8: K=NUL; goto L8;
+ case 8: KMOD=NUL; goto L8;
case 2000: goto L2000;
case 2012: goto L2012;
case 2600: goto L2600;
BUG(99);
/* Figure out the new location */
-L8: if (playermove(cmdin, VERB, K))
+L8: if (playermove(cmdin, VERB, KMOD))
return true;
else
goto L2000;