SUBROUTINE BULLET C C THIS SUBROUTINE CONTROLS THE MOTION OF A BULLET ON THE SCREEN. C IT CALLS BULCOL TO TEST FOR AND CONTROL COLLISIONS WITH TARGETS. C IMPLICIT INTEGER(A - Z) PARAMETER MAXCNT = 24 C SCREEN BOUNDARIES PARAMETER LMAR = 2, RMAR = 30, TMAR = 2, BMAR = 23, GMAR = 18 C DIRECTIONALS PARAMETER HALT = 0, UP = 1, DOWN = 2, LEFT = 4, RIGHT = 8 PARAMETER UPL = 10, UPR = 9, DOWNL = 12, DOWNR = 11 C DISPLAYABLE CHARACTERS PARAMETER GUNCHR="166, CBODY="140, MSHCHR="146, BULCHR="170 PARAMETER SPICHR="173, FLECHR="175, SCOCHR="142, PSNCHR="052 PARAMETER CLHEAD="074, CRHEAD="076, CDHEAD="126 PARAMETER SHFIN="17, SHFOUT="16, SPACE="40 C QIO FUNCTION CODES PARAMETER IOATA="1410, IOWVB="11000, SFSMC="2440 C INTEGER*4SCORE, FRESCO, TIMER, SEED, FLETIM, SPITIM, SCOTIM, CNTTI *M DIMENSION PRL(6), CX(MAXCNT, 12), CY(MAXCNT, 12) DIMENSION CLEN(MAXCNT), CDIR(MAXCNT), CRISE(MAXCNT), CBOT(MAXCNT) BYTE CNTBRD(BMAR, RMAR), MSHBRD(BMAR, RMAR), PSNBRD(BMAR, RMAR) COMMON/DIRCOM/DIRCOD, FIRCOD COMMON/CNTCOM/PRL, SCORE, TIMER, SEED, CX, CY, CLEN, CDIR, CRISE, *CBOT, GUNX, GUNY, FRESCO, CNTBRD, MSHBRD, PSNBRD, BULACT, BULX, BU *LY, FLETIM, FLEACT, FLEX, FLEY, SPITIM, SPIACT, SPIX, SPIY, SPILR, * SCOTIM, SCOACT, SCOX, SCOY, SCODIR, GUNCNT, CNTTIM, BOARD, CNTWAV C C VT100 DISPLAY CONTROL PARAMETER DEFINITIONS C CCURSOR POSITION REPORT CCURSOR UP CCURSOR DOWN CCURSOR FORWARD CCURSOR BACK CDOUBLE WIDTH LINE PARAMETER CUP = 1, CUU = 2, CUD = 3, CUF = 4, CUB = 5, DECDWL = 6, * DECDHL = 7, DECRC = 8, DECSC = 9, DECSWL = 10, ED = 11, EL = 12, *SGR = 13, NEL = 14, SCS = 15, SM = 16, RM = 17, ANSI = 18, CPP=19 CCHECK FOR COLLISIONS CALL BULCOL IF (.NOT.(BULACT .EQ. 0)) GOTO 2000 CBULLET HAS HIT SOMETHING RETURN C C BLANK OUT OLD BULLET LOCATION AND MOVE BULLET UP ONE SPACE C 2000 CONTINUE CALL UVT100(CPP, BULX, BULY, SPACE) BULX = BULX - 1 IF (.NOT.(BULX .LT. TMAR)) GOTO 2020 CBULLET OFF TOP OF SCREEN BULACT = 0 RETURN 2020 CONTINUE CCHECK FOR COLLISIONS AT NEW LOC. CALL BULCOL C C IF BULLET HAS COLLIDED WITH SOMETHING, RETURN. C OTHERWISE DISPLAY BULLET AT NEW LOCATION. C IF (.NOT.(BULACT .NE. 0)) GOTO 2040 CALL UVT100(CPP, BULX, BULY, BULCHR) 2040 CONTINUE RETURN END