DIMENSION IH1(10),IHC(5),IH(16) BYTE T(10,10),T1(100),HMOVE(5),HCHASE(5),H(16),HM EQUIVALENCE (T,T2),(IH,IH1),(IHC,IH(11)),(IHA,IH(16)) DATA I1,I2,HM,H,ICHASE/0,0,1H-,10*1H1,5*1HX,1H*,0/ DATA HMOVE/1HM,1HO,1HV,1HE,1H /,HCHASE/1HC,1HH,1HA,1HS,1HE/ C CHASE TIME=SECNDS(0.) I=AMOD(TIME,4096.) DO 40 J=1,I 40 X=RAN(I1,I2) 100 DO 10 I=1,100 10 T1(I)=HM ICHASE=ICHASE+1 DO 11 I=1,16 12 IH(I)=100*RAN(I1,I2)+1 IF(I.EQ.1)GO TO 11 JJ=I-1 DO 14 J=1,JJ 14 IF(IH(I).EQ.IH(J))GO TO 12 11 T1(IH(I))=H(I) WRITE(5,600)HCHASE,ICHASE,T1,HCHASE 600 FORMAT(15X,5A1,I3,/,' 1 1 1 1 1 1 1 1 1 1 1 1',10(/' 1',10A2,' 1') 2 ,/, 1 ' 1 1 1 1 1 1 1 1 1 1 1 1',/,' ',5A1,' MATRIX',/,' 432',/,' 501', 2 /,' 678') IMOV=1 GO TO 201 200 WRITE(5,600),HMOVE,IMOV,T1,HMOVE IMOV=IMOV+1 201 READ(5,500,ERR=999,END=999)I1 500 FORMAT(I1) IF(I1.LT.0.OR.I1.GE.9)GO TO 100 CALL IMOVE(IHA,IHA,I1,IH,ISAP,IXA,IYA) IF(ISAP.EQ.1 .OR. ISAP.EQ.2.OR.ISAP.EQ.4)GO TO 800 C DO 210 I=1,5 IF(IHC(I).LE.0)GO TO 210 DMIN=10000. DO 220 J=1,8 CALL IMOVE(IHC(I),IHO,J,IH,ISAP,IXD,IYD) IF(ISAP.EQ.4)GO TO 220 D=SQRT((FLOAT(IXA-IXD))**2+FLOAT((IYA-IYD))**2) IF(D.GT.DMIN)GO TO 220 IHNEW=IHO IDSAP=ISAP DMIN=D 220 CONTINUE IF(IDSAP.EQ.3)GO TO 900 IF(IDSAP.EQ.1)IHC(I)=-1 IF(IDSAP.EQ.0)IHC(I)=IHNEW 210 CONTINUE DO 240 I=1,100 240 T1(I)=HM DO 241 I=1,16 241 IF(IH(I).GT.0.AND.IH(I).LT.100)T1(IH(I))=H(I) DO 230 I=1,5 230 IF(IHC(I).GT.0)GO TO 200 WRITE(5,601) 601 FORMAT(' YOU WON - ALL ATTACKERS ARE ZAPPED') GO TO 100 800 WRITE(5,602) 602 FORMAT(' YOU ZAPPED YOURSELF') GO TO 100 900 WRITE(5,603) 603 FORMAT(' SORRY - YOU ARE ZAPPED') GO TO 100 999 CALL EXIT END SUBROUTINE IMOVE(IN,IOUT,IM,IH,ISAP,IX,IY) DIMENSION IH(1) C MOVES POSITION IY=(IN-1)/10 IX=IN-IY*10 IF(IM.GE.2.AND.IM.LE.4)IY=IY-1 IF(IM.GE.6.AND.IM.LE.8)IY=IY+1 IF(IM.GE.4.AND.IM.LE.6)IX=IX-1 IF(IM.EQ.1.OR.IM.EQ.2.OR.IM.EQ.8)IX=IX+1 ISAP=0 IOUT=IY*10+IX IF(IX.LE.0.OR.IX.GE.11)GO TO 10 IF(IY.LT.0.OR.IY.GE.10)GO TO 10 IXY=IY*10+IX DO 1 I=1,16 IF(IXY.EQ.IH(I).AND.I.LE.10)ISAP=1 IF(IXY.EQ.IH(I).AND.I.GT.10)ISAP=2 1 IF(IXY.EQ.IH(I).AND.I.EQ.16)ISAP=3 RETURN 10 ISAP=4 RETURN END