SUBROUTINE FLEA # # THIS SUBROUTINE CONTROLS THE ACTIONS OF A FLEA. THE FLEA DROPS # STRAIGHT DOWN AND RANDOMLY LEAVES BEHIND MUSHROOMS AT EVERY # THIRD LOCATION. # IMPLICIT INTEGER (A-Z) INCLUDE SY:CNTPED.CMN INCLUDE SY:UVT100.DAT REAL X,RAN # # GENERATE RANDOM NUMBER. # X = RAN(SEED) ITMP = X * 2 #ITMP IS IN RANGE 0-1 IF (ITMP == 1) RETURN #RETURN WITHOUT MOTION HALF THE TIME X = RAN(SEED) ITMP = X * 5 #ITMP IS IN RANGE 0-4 CALL UVT100(CUP,FLEX,FLEY) # # DROP MUSHROOM 20% OF THE TIME IF ABOVE PLAYER'S ZONE, # AND 40% OF THE TIME IF IN HIS ZONE. # IF (ITMP == 0 .AND. FLEX < BMAR) [ MSHBRD(FLEX,FLEY) = 4 #SET MUSHROOM BOARD IF (PSNBRD(FLEX,FLEY) == 1) OUTBUF(LEN+1) = PSNCHR ELSE OUTBUF(LEN+1) = MSHCHR ] ELSE IF (ITMP == 1 .AND. FLEX < BMAR .AND. FLEX > GMAR) [ MSHBRD(FLEX,FLEY) = 4 #SET MUSHROOM BOARD OUTBUF(LEN+1) = MSHCHR ] ELSE [ #REDISPLAY WHAT WAS HERE BEFORE... IF (MSHBRD(FLEX,FLEY) == 0) OUTBUF(LEN+1) = SPACE ELSE IF (PSNBRD(FLEX,FLEY) == 0) OUTBUF(LEN+1) = MSHCHR ELSE OUTBUF(LEN+1) = PSNCHR ] LEN = LEN + 1 FLEX = FLEX + 1 #DROP FLEA ONE ROW IF (FLEX > BMAR) [ #DISAPPEAR IF AT BOTTOM OF SCREEN FLEACT = 0 ICOUNT = 0 DO I = GMAR,BMAR [ #IF LESS THAN FIVE MUSHROOMS IN PLAYER DO J = LMAR,RMAR [ #ZONE, NEXT FLEA WILL APPEAR IN 20 IF (MSHBRD(I,J) > 0) #CYCLES, ELSE IN 200 CYCLES. ICOUNT = ICOUNT + 1 ] ] IF (ICOUNT < 5) FLETIM = TIMER + 20 ELSE FLETIM = TIMER + 200 RETURN ] CALL UVT100(CUP,FLEX,FLEY) #DISPLAY FLEA AT NEW LOCATION OUTBUF(LEN+1) = FLECHR LEN = LEN + 1 RETURN END