SUBROUTINE WALL(WALCOL, WALROW, WALDIR) IMPLICIT INTEGER(A - Z) C C THIS SUBROUTINE DECIDES WHICH DIRECTION TO C MOVE A MONSTER WHEN HE RUNS INTO A WALL. C C MAZE DIMENSIONS PARAMETER RMAR = 24, CMAR = 53 C BIT SETTINGS FOR DIRECTIONALS AND MSTATE TABLE PARAMETER HALT = 0, UP = 1, DOWN = 2, LEFT = 4, RIGHT = 8 C DISPLAYABLE CHARACTERS PARAMETER PMAN="52, EGZCHR="146, DOTCHR="176, TUNCHR="137 C INTEGER*4SCORE, TIMER, STATIM, LTIM, CTIM, FTIM, NTIM, FRUON, FRUO *FF INTEGER*2PRL(6), EATSCO(4), FRUSCO(6), FRUDSR(20), FRUDSC(20) BYTE LMAN(3), CMAN(3), FMAN(3), NMAN(3), EATCHR(4), FRUCHR(6) BYTE MSTATE(CMAR, RMAR), MOVE(24, 9), FRUTBL(20) C COMMONS COMMON/MSTCOM/MSTATE COMMON/PACCOM/FDIR, NDIR, LDIR, CDIR, CYCLE, MOVE, SCORE, DOTCNT, *COL, ROW, LCOL, LROW, CCOL, CROW, FCOL, FROW, NCOL, NROW, CYCTIM, *TIMER, BOARD, STATE, STATIM, LTIM, CTIM, FTIM, NTIM, LPRISN, CPRIS *N, FPRISN, NPRISN, LPRISR, LPRISC, CPRISR, CPRISC, FPRISR, FPRISC, * NPRISR, NPRISC, RDOOR, CDOOR, PRITIM, GOODTM, BLNKTM, EATCNT, EAT *CHR, EATSCO, EXTRA, LMAN, CMAN, FMAN, NMAN, PACCNT, INIROW, INICOL *, GAMOVR, FRUIT, FRUTIM, FRULTH, FRUON, FRUOFF, FRUSCO, FRUCHR, FR *UCOL, FRUROW, FRUCNT, FRUDSR, FRUDSC, PRL, FRUTBL, PACDSC, PACDSR, * PACDSD, FRUBRD DIMENSION PREF(4) C C DETERMINE LEFT/RIGHT AND UP/DOWN PREFERENCES C IF (COL .LE. WALCOL) GOTO 2000 CPACMAN IS TO OUR RIGHT X1 = RIGHT X2 = LEFT GOTO 2010 2000 CONTINUE CPACMAN IS TO OUR LEFT X1 = LEFT X2 = RIGHT IF (ROW .LE. WALROW) GOTO 2020 CPACMAN IS BELOW US Y1 = DOWN Y2 = UP GOTO 2030 2020 CONTINUE CPACMAN IS ABOVE US Y1 = UP Y2 = DOWN C C GIVE PREFERENCE TO A NINETY DEGREE TURN. C 2030 CONTINUE IF (WALDIR .NE. LEFT .AND. WALDIR .NE. RIGHT) GOTO 2040 PREF(1) = Y1 PREF(2) = Y2 PREF(3) = X1 PREF(4) = X2 GOTO 2050 2040 CONTINUE PREF(1) = X1 PREF(2) = X2 PREF(3) = Y1 PREF(4) = Y2 C C SELECT THE FIRST LEGAL DIRECTION IN OUR PREFERENCE ARRAY C 2050 CONTINUE DO 2060 I = 1, 4 WALDIR = PREF(I) IF (.NOT.(TSTBIT(MSTATE(WALCOL, WALROW), WALDIR) .EQ. 1)) GOTO 2 *080 GOTO 2070 2080 CONTINUE 2060 CONTINUE 2070 CONTINUE RETURN END