SUBROUTINE WALL(WALCOL,WALROW,WALDIR) IMPLICIT INTEGER (A-Z) # # THIS SUBROUTINE DECIDES WHICH DIRECTION TO # MOVE A MONSTER WHEN HE RUNS INTO A WALL. # INCLUDE/NL SY:PACMAN.CMN DIMENSION PREF(4) # # DETERMINE LEFT/RIGHT AND UP/DOWN PREFERENCES # IF (COL > WALCOL) [ #PACMAN IS TO OUR RIGHT X1 = RIGHT X2 = LEFT ] ELSE [ #PACMAN IS TO OUR LEFT X1 = LEFT X2 = RIGHT ] IF (ROW > WALROW) [ #PACMAN IS BELOW US Y1 = DOWN Y2 = UP ] ELSE [ #PACMAN IS ABOVE US Y1 = UP Y2 = DOWN ] # # GIVE PREFERENCE TO A NINETY DEGREE TURN. # IF (WALDIR == LEFT .OR. WALDIR == RIGHT) [ PREF(1) = Y1 PREF(2) = Y2 PREF(3) = X1 PREF(4) = X2 ] ELSE [ PREF(1) = X1 PREF(2) = X2 PREF(3) = Y1 PREF(4) = Y2 ] # # SELECT THE FIRST LEGAL DIRECTION IN OUR PREFERENCE ARRAY # DO I = 1,4 [ WALDIR = PREF(I) IF (TSTBIT(MSTATE(WALCOL,WALROW),WALDIR) == 1) BREAK ] RETURN END