Listing of file='22002200' on disk='vmedia/games-droz01.wvd.zip'
# Sector 778, program filename = '22002200' 0000 DEFFN'0 "PRINT HEX(03):LISTSD10,";HEX(0D) 0001 DEFFN' 16"SCRATCHT";HEX(22);"22002200";HEX(22);":SAVET()";HEX(22);"220022 00";HEX(220D) 0002 DEFFN'126"PRINT HEX(03): LISTSD 0 ," 0003 DEFFN M(N)=3*N^2-2*N^3 0010 REM 22002200 RELEASE 1.2 (09/18/80) 0020 DIM A$(3)124,B$(3)124,X$2,W$2,L$2,T$2,V$2,I$1,J$1,K$1 0030 PRINT HEX(0202020F03) : F,S,E1,E2,E3,E4,E5,E6,E7,E8,E9,E0,C5,C6=0 : A,B=1 : C,D,C1,D1=3 : V$=HEX(C0C0) : R1$=HEX(F7FB) : R2$=HEX(FFFF) : R3$=HEX(F7FB) : A1=-1 : A2=24 : H=79 : C$="COMPUTER 1" 0040 PRINT HEX(0306);AT(0,22);"COMPUTER 1 VERSES COMPUTER 2" : PRINT 0050 PRINT : E$="1000" : LINPUT "SELECT SPEED: 0<=E<=1000",E$ : CONVERT E$ TO E : ERRORGOTO 50 0060 IF E<0 OR E>1000 THEN 50 0070 PRINT AT(5,0); : J1$="30" : LINPUT "SELECT DISPLAY DURATION: 0<=D<=100",J1$ : CONVERT J1$ TO J1 : ERRORGOTO 70 0080 IF J1<0 OR J1>100 THEN 70 0090 GOSUB 590 0100 IF R$<>"DE" THEN GOSUB 560 0110 KEYIN I$,110,110 : RETURN CLEAR ALL : T$=HEX(0000) : V,F1,F2,C3,C7=0 : A,B=1 : X,W=22 : IF R$="DE" THEN X,W=23 : Y=17 : Z=61 : IF R$="DE" THEN PRINT HEX(0306);BOX (24,79); : C=C1 : D=D1 : J$="Q" : H=79 0120 IF R$<>"DE" THEN GOSUB 580 0130 A$(),B$()=ALL(00) : STR(A$(),,1),STR(B$(),,1)=BIN(23) : STR(A$(),2,1)=BIN(17) : STR(B$(),2,1)=BIN(61) : STR(A$(),3)=A$() : STR(B$(),3)=B$() : STR(A$(),2*C+1),STR(B$(),2*D+1)=ALL(00) 0140 X=X-1 : IF X=A1 THEN 740 : GOSUB 410 : GOTO 220 0150 Y=Y-2 : IF Y=-1 THEN 740 : GOSUB 410 : GOTO 220 0160 X=X+1 : IF X=A2 THEN 740 : GOSUB 410 : GOTO 220 0170 Y=Y+2 : IF Y=79 THEN 740 : GOSUB 410 : GOTO 220 0180 W=W-1 : IF W=A1 THEN 640 : GOSUB 450 : GOTO 300 0190 Z=Z-2 : IF Z=-1 THEN 640 : GOSUB 450 : GOTO 300 0200 W=W+1 : IF W=A2 THEN 640 : GOSUB 450 : GOTO 300 0210 Z=Z+2 : IF Z=79 THEN 640 : GOSUB 450 : GOTO 300 0220 IF E=1000 THEN 230 : FOR J=1 TO 1000-E : $BREAK 1 : NEXT J 0230 IF H<79 THEN 250 : C2=C2+1 : IF C2>20*RND(1) THEN 690 : GOTO 290 0240 REM TARGET SEEKING CODE 0250 IF W=G AND Z=H THEN 290 : IF B=1 OR B=3 THEN 260 : IF W=G AND B=3+SGN(H-Z) THEN 290 : IF W=G THEN 280 : F1=1 : IF G>W THEN B=3 : ELSE B=1 : GOTO 290 0260 IF Z=H AND B=2+SGN(G-W) THEN 290 : IF Z=H THEN 270 : F1=1 : IF Z>H THEN B=2 : ELSE B=4 : GOTO 290 0270 F1=1 : IF Z>39 THEN B=2 : ELSE B=4 : GOTO 290 0280 F1=1 : IF W>12 THEN B=1 : ELSE B=3 0290 RETURN CLEAR ALL : ON B GOTO 180,190,200,210 0300 IF H<79 THEN 310 : C4=C4+1 : IF C4>20*RND(1) THEN 790 : GOTO 350 0310 IF X=G AND Y=H THEN 350 : IF A=1 OR A=3 THEN 320 : IF X=G AND A=3+SGN(H-Y) THEN 350 : IF X=G THEN 340 : F2=1 : IF G>X THEN A=3 : ELSE A=1 : GOTO 350 0320 IF Y=H AND A=2+SGN(G-X) THEN 350 : IF Y=H THEN 330 : F2=1 : IF Y>H THEN A=2 : ELSE A=4 : GOTO 350 0330 F2=1 : IF Y>39 THEN A=2 : ELSE A=4 : GOTO 350 0340 F2=1 : IF X>12 THEN A=1 : ELSE A=3 0350 IF 1001*RND(1)<985 THEN 400 0360 PRINT AT(G,H);V$; 0370 G=INT(22*RND(1))+1 : H=2*INT(39*RND(1))+1 0380 IF R$<>"DE" THEN GOSUB 570 0390 T$=BIN(G) : STR(T$,2)=BIN(H) : MAT SEARCH STR(A$(),,2*C),=T$ TO L$ STEP 2 : IF L$<>HEX(0000) THEN 370 : MAT SEARCH STR(B$(),,2*D),=T$ TO L$ STEP 2 : IF L$<>HEX(0000) THEN 370 : PRINT AT(G,H);R1$; 0400 RETURN CLEAR ALL : ON A GOTO 140,150,160,170 0410 X$ = BIN(X) : STR(X$,2)=BIN(Y) : IF X$=T$ THEN GOSUB 490 0420 MAT SEARCH STR(A$(),,2*C),=X$ TO L$ STEP 2 : IF L$<>HEX(0000) THEN GOTO 740 : MAT SEARCH STR(B$(),,2*D),=X$ TO L$ STEP 2 : IF L$<>HEX(0000) THEN GOTO 740 0430 MAT COPY -STR(A$(),,2*C) TO -STR(A$(),,2*C+2) : STR(A$(),,1) = BIN(X) : STR(A$(),2,1)=BIN(Y) 0440 F2=0 : C7=0 : PRINT AT(X,Y);R2$;AT(VAL(STR(A$(),2*C+1,1)),VAL(STR(A$(),2*C+2,1)));V$; : RETURN 0450 W$ = BIN(W) : STR(W$,2)=BIN(Z) : IF W$=T$ THEN GOSUB 500 0460 MAT SEARCH STR(B$(),,2*D),=W$ TO L$ STEP 2 : IF L$<>HEX(0000) THEN GOTO 640 : MAT SEARCH STR(A$(),,2*C),=W$ TO L$ STEP 2 : IF L$<>HEX(0000) THEN GOTO 640 0470 MAT COPY -STR(B$(),,2*D) TO -STR(B$(),,2*D+2) : STR(B$(),,1) = BIN(W) : STR(B$(),2,1)=BIN(Z) 0480 F1=0 : C3=0 : PRINT AT(W,Z);R3$;AT(VAL(STR(B$(),2*D+1,1)),VAL(STR(B$(),2*D+2,1)));V$; : RETURN 0490 H=79 : T$=HEX(FFFF) : K=INT(17*RND(1)) : F=F+5 : C=C+INT(K/4)+1 : RETURN 0500 H=79 : T$=HEX(FFFF) : K=INT(17*RND(1)) : S=S+5 : D=D+INT(K/4)+1 : RETURN 0510 FOR J=1 TO J1 : $BREAK 255 : NEXT J : PRINT HEX(0306);AT(0,0),"COMPUTER 1 TRAPPED ITSELF!" : C5=C5+1 : F=F-20 : GOTO 530 0520 FOR J=1 TO J1 : $BREAK 255 : NEXT J : PRINT HEX(0306);AT(0,0),"COMPUTER 2 TRAPPED ITSELF!" : C6=C6+1 : S=S-20 0530 PRINT : PRINT "COMPUTER 1 ";F;" COMPUTER 2 ";S; : FOR J=1 TO J1 : $BREAK 255 : NEXT J 0540 GOTO 110 0550 DEFFN'31 : LOAD T"START" 0560 A1=0 : A2=23 : V$=HEX(2020) : R1$=HEX(8B) : R2$=HEX(58) : R3$=HEX(4F) : RETURN 0570 G=INT(21*RND(1))+1 : H=2*INT(39*RND(1))+1 : RETURN 0580 PRINT HEX(0306) : FOR J=0 TO 23 : PRINT AT(J,79);HEX(86); : NEXT J : FOR J=79 TO 0 STEP -1 : PRINT AT(23,J);HEX(2D); : NEXT J : FOR J=23 TO 0 STEP -1 : PRINT AT(J,0);HEX(86); : NEXT J : FOR J=0 TO 79 : PRINT AT(0,J);HEX(2D); : NEXT J : RETURN 0590 KEYIN Q6$,590,590 0600 PRINT HEX(0208090F) : Q8=0 : Q9=190 : Q6$,Q7$=" " 0610 KEYIN Q7$,620,620 : IF Q8>Q9 THEN 630 : Q8=Q8+1 : GOTO 610 0620 Q6$=Q6$&Q7$ : IF Q7$<>HEX(0D) THEN 610 0630 IF STR(Q6$,,8)=" *2236DE" THEN R$="DE" : ELSE R$="D" : RETURN 0640 REM RESTORE SNAKE : ON B GOTO 650,660,670,680 0650 W=W+1 : GOSUB 720 : GOTO 690 0660 Z=Z+2 : GOSUB 720 : GOTO 690 0670 W=W-1 : GOSUB 720 : GOTO 690 0680 Z=Z-2 : GOSUB 720 0690 REM CHANGE DIRECTION RANDOMLY, FAVORING CENTRALIZATION : F1=1 : C2=0 : IF B=1 OR B=3 THEN 710 0700 IF RND(1)<FNM((24-W)/24) THEN B=3 : ELSE B=1 : GOTO 290 0710 IF RND(1)<FNM((79-Z)/79) THEN B=4 : ELSE B=2 : GOTO 290 0720 W$=BIN(W) : STR(W$,2)=BIN(Z) : IF F1=1 THEN 730 : RETURN 0730 C3=C3+1 : IF C3=4 THEN 520 : B=MOD(B,4)+1 : GOTO 290 0740 REM RESTORE SNAKE : ON A GOTO 750,760,770,780 0750 X=X+1 : GOSUB 820 : GOTO 790 0760 Y=Y+2 : GOSUB 820 : GOTO 790 0770 X=X-1 : GOSUB 820 : GOTO 790 0780 Y=Y-2 : GOSUB 820 0790 REM CHANGE DIRECTION RANDOMLY, FAVORING CENTRALIZATION : F2=1 : C4=0 : IF A=1 OR A=3 THEN 810 0800 IF RND(1)<FNM((24-X)/24) THEN A=3 : ELSE A=1 : GOTO 400 0810 IF RND(1)<FNM((79-Y)/79) THEN A=4 : ELSE A=2 : GOTO 400 0820 X$=BIN(X) : STR(X$,2)=BIN(Y) : IF F2=1 THEN 830 : RETURN 0830 C7=C7+1 : IF C7=4 THEN 510 : A=MOD(A,4)+1 : GOTO 400