DEFINE(DIG0,48) # ASCII '0' SUBROUTINE MHOLE # # * MOVE THE "BLACK HOLE" TOWARD THE NEAREST ACTIVE SHIP # INCLUDE COMMON.RAT BYTE CHAR # # * FIND CLOSEST SHIP # DM=1.6E37 K=0 DO I=1, 8 [ IF (SHPACT(I)) [ D = DSTNCE( HOLX, HOLY, XCORD(I), YCORD(I) ) IF (D < DM) [ DM=D K=I ] ] ] # # *FIND DIRECTION OF CLOSEST SHIP # IF (K != 0) [ CALL DIRDIS( HOLX, HOLY, XCORD(K), YCORD(K), D, DIS ) # CALL MOVE(HOLX,HOLY,X,Y,D,HOLW,CHAR,UNIV,EMPTY) IF ((CHAR == EMPTY) | (CHAR == '+') | (CHAR == '@') | (CHAR == '^')) [ # * JUST MUNCH THIS JUNK DOWN IX=HOLX IY=HOLY UNIV(IX,IY)=EMPTY IX=X IY=Y UNIV(IX,IY)=BHOLE HOLX=X HOLY=Y ] ELSE IF ((CHAR >= '1') & (CHAR <= '8')) [ # * CAUGHT A SHIP I = CHAR-DIG0 IF (SHPACT(I)) [ CALL SENT(I,15) CALL RESET(I) ] ] ELSE IF ( (CHAR<0) | (CHAR=='H') ) # * CAN'T EAT ENERGY NET! OR HYPER PORTS ; ELSE [ # * SWAP PLACES WITH BASES STARS ETC. IX=HOLX IY=HOLY UNIV(IX,IY)=CHAR HOLX=X HOLY=Y IX=HOLX IY=HOLY UNIV(IX,IY)=BHOLE ] ] RETURN END