image of READY prompt

Wang2200.org

Listing of file='SNAKEWAR' on disk='vmedia/more_games.wvd.zip'

# Sector 1330, program filename = 'SNAKEWAR'
0000 DEFFN'0 "PRINT HEX(03):LISTSD10,";HEX(0D)
0001 DEFFN' 16"SCRATCHT";HEX(22);"SNAKEWAR";HEX(22);":SAVET()";HEX(22);"SNAKEW
     AR";HEX(220D)
0002 DEFFN'126"PRINT HEX(03): LISTSD    ,"
0010 REM SNAKEWAR  RELEASE 1.1  (04/10/80)
0015 E$="95"
   : J9$="05"
0020 DIM A$(10)124,B$(10)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=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
0040 PRINT HEX(0306);AT(0,30),"SNAKEWAR"
   : PRINT
0050 PRINT "THE PLAYER ON THE LEFT CONTROLS HIS SNAKE WITH THE FOLLOWING KEYS:
        W-TO GO UP,A-TO GO LEFT, X-TO GO DOWN, AND D-TO GO RIGHT. THE PLAYER O
     N THE RIGHT USES 8,4,2, AND 6 ON THE NUMBER PAD."
   : PRINT
0060 PRINT "IF YOUR SNAKE HITS A WALL, REVERSES ITSELF, HITS YOUR OPPONENT'S S
     NAKE, OR HITS YOUR OWN SNAKE, YOU LOSE FIVE POINTS. IF YOU HIT A TARGET Y
     OU GET FROM 4 TO 20  POINTS. THE FIRST PLAYER TO 100 WINS, OR, TO -100, L
     OSES."
   : PRINT
0070 LINPUT "FIRST PLAYER'S NAME"C$
   : LINPUT "SECOND PLAYER'S NAME"D$
0080 PRINT
   : LINPUT "SELECT SPEED: 0<=E<=100",E$
   : CONVERT E$ TO E
   : ERRORGOTO 80
   : IF E<0 OR E>100 THEN 80
0090 PRINT
   : LINPUT "SELECT DISPLAY DURATION: 0<=D<=100",J9$
   : CONVERT J9$ TO J9
   : ERRORGOTO 90
0100 IF J9<0 OR J9>100 THEN 90
0110 GOSUB 710
0120 IF R$<>"DE" THEN GOSUB 680
0130 KEYIN I$,130,130
   : RETURN  CLEAR  ALL
   : T$=HEX(0000)
   : V=0
   : A,B=1
   : X,W=23
   : Y=17
   : Z=61
   : IF R$="DE" THEN PRINT HEX(0306);BOX (24,79);
   : C=C1
   : D=D1
   : J$="Q"
0140 IF R$<>"DE" THEN GOSUB 700
0150 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)
0160 X=X-1
   : IF X=A1 THEN 500
   : GOSUB 380
   : GOTO 240
0170 Y=Y-2
   : IF Y=-1 THEN 500
   : GOSUB 380
   : GOTO 240
0180 X=X+1
   : IF X=A2 THEN 500
   : GOSUB 380
   : GOTO 240
0190 Y=Y+2
   : IF Y=79 THEN 500
   : GOSUB 380
   : GOTO 240
0200 W=W-1
   : IF W=A1 THEN 550
   : GOSUB 420
   : GOTO 260
0210 Z=Z-2
   : IF Z=-1 THEN 550
   : GOSUB 420
   : GOTO 260
0220 W=W+1
   : IF W=A2 THEN 550
   : GOSUB 420
   : GOTO 260
0230 Z=Z+2
   : IF Z=79 THEN 550
   : GOSUB 420
   : GOTO 260
0240 IF E=100 THEN 250
   : FOR J=1 TO 100-E
   : $BREAK 5
   : NEXT J
0250 ON  B GOTO 200,210,220,230
0260 KEYIN I$,280,310
0270 GOTO 310
0280 IF I$=J$ THEN KEYIN I$,280,280
   : J$=I$
0290 V=POS("WAXD8426"=I$)
   : IF V>4 THEN 300
   : IF V=0 THEN 310
   : A=V
   : GOTO 310
0300 V=V-4
   : B=V
0310 IF I$=HEX(1F) THEN GOSUB '31
   : IF 1001*RND(1)<980 THEN 360
0320 PRINT AT(G,H);V$;
0330 G=INT(23*RND(1))
   : H=2*INT(39*RND(1))+1
0340 IF R$<>"DE" THEN GOSUB 690
0350 T$=BIN(G)
   : STR(T$,2)=BIN(H)
   : MAT SEARCH STR(A$(),,2*C),=T$ TO L$ STEP 2
   : IF L$<>HEX(0000) THEN 330
   : MAT SEARCH STR(B$(),,2*D),=T$ TO L$ STEP 2
   : IF L$<>HEX(0000) THEN 330
   : PRINT AT(G,H);R1$;
0360 IF X$=T$ THEN GOSUB 470
   : IF W$=T$ THEN GOSUB 480
0370 ON A GOTO 160,170,180,190
0380 X$ = BIN(X)
   : STR(X$,2)=BIN(Y)
0390 MAT SEARCH STR(A$(),,2*C),=X$ TO L$ STEP 2
   : IF L$<>HEX(0000) THEN 490
   : MAT SEARCH STR(B$(),,2*D),=X$ TO L$ STEP 2
   : IF L$=HEX(0001) THEN 460
   : IF L$<>HEX(0000) THEN 510
0400 MAT COPY -STR(A$(),,2*C) TO -STR(A$(),,2*C+2)
   : STR(A$(),,1) = BIN(X)
   : STR(A$(),2,1)=BIN(Y)
0410 PRINT AT(X,Y);R2$;AT(VAL(STR(A$(),2*C+1,1)),VAL(STR(A$(),2*C+2,1)));V$;
   : RETURN
0420 W$ = BIN(W)
   : STR(W$,2)=BIN(Z)
0430 MAT SEARCH STR(B$(),,2*D),=W$ TO L$ STEP 2
   : IF L$<>HEX(0000) THEN 540
   : MAT SEARCH STR(A$(),,2*C),=W$ TO L$ STEP 2
   : IF L$=HEX(0001) THEN 460
   : IF L$<>HEX(0000) THEN 560
0440 MAT COPY -STR(B$(),,2*D) TO -STR(B$(),,2*D+2)
   : STR(B$(),,1) = BIN(W)
   : STR(B$(),2,1)=BIN(Z)
0450 PRINT AT(W,Z);R3$;AT(VAL(STR(B$(),2*D+1,1)),VAL(STR(B$(),2*D+2,1)));V$;
   : RETURN
0460 ON INT(RND(1)*2)+1 GOTO 510,560
0470 H=79
   : T$=HEX(FFFF)
   : K=INT(17*RND(1))
   : F=F+K+4
   : E7=E7+1
   : E8=E8+K+4
   : C=C+INT(K/4)+20
   : IF C>619 THEN C=619
   : IF F-S>=100 OR F>=100 THEN 590
   : RETURN
0480 H=79
   : T$=HEX(FFFF)
   : K=INT(17*RND(1))
   : S=S+K+4
   : E9=E9+1
   : E0=E0+K+4
   : D=D+INT(K/4)+20
   : IF C>619 THEN C=619
   : IF S-F>=100 OR S>=100 THEN 580
   : RETURN
0490 PRINT HEX(0306);AT(0,0),C$;" HIT SELF!"
   : E1=E1+1
   : GOTO 520
0500 PRINT HEX(0306);AT(0,0),C$;" HIT THE WALL!"
   : E2=E2+1
   : GOTO 520
0510 PRINT HEX(0306);AT(0,0),C$;" HIT ";D$;"!"
   : E3=E3+1
0520 F=F-5
0530 PRINT
   : PRINT C$;"   ";F;"       ";D$;"   ";S;
   : FOR J=1 TO J9
   : $BREAK 255
   : NEXT J
   : IF F<=-100 OR S-F>=100 OR S>=100 THEN 580
   : IF S<=-100 OR F-S>=100 OR F>=100 THEN 590
   : GOTO 120
0540 PRINT HEX(0306);AT(0,0),D$;" HIT SELF!"
   : E4=E4+1
   : GOTO 570
0550 PRINT HEX(0306);AT(0,0),D$;" HIT THE WALL!"
   : E5=E5+1
   : GOTO 570
0560 PRINT HEX(0306);AT(0,0),D$;" HIT ";C$;"!"
   : E6=E6+1
0570 S=S-5
   : GOTO 530
0580 PRINT HEX(0306);AT(0,0),D$;" WINS!  ";S;"  ";F
   : GOTO 600
0590 PRINT HEX(0306);AT(0,0),C$;" WINS   ";F;"  ";S
0600 PRINT AT(3,0),C$;" HIT SELF ";E1;" TIMES";AT(4,0),C$;" HIT WALL ";E2;" TI
     MES";AT(5,0),C$;" HIT ";D$;" ";E3;" TIMES"
0610 PRINT AT(6,0),C$;" LOST A TOTAL OF ";(E1+E2+E3)*5;" POINTS ON ERRORS"
0620 PRINT AT(7,0),C$;" HIT ";E7;" TARGETS FOR A TOTAL OF ";E8;" POINTS. AVERA
     GE: ";
   : PRINTUSING "##.###",E8/(E7+.000001)
0630 PRINT AT(9,0),D$;" HIT SELF ";E4;" TIMES";AT(10,0),D$;" HIT WALL ";E5;" T
     IMES";AT(11,0),D$;" HIT ";C$;" ";E6;" TIMES"
0640 PRINT AT(12,0),D$;" LOST A TOTAL OF ";(E4+E5+E6)*5;" POINTS ON ERRORS"
0650 PRINT AT(13,0),D$;" HIT ";E9;" TARGETS FOR A TOTAL OF ";E0;" POINTS. AVER
     AGE: ";
   : PRINTUSING "##.###",E0/(E9+.000001)
0660 PRINT AT(15,0);
   : K$="Y"
   : LINPUT "DO YOU WANT TO PLAY AGAIN (Y OR N)" K$
   : IF K$="Y" THEN 20
0670 DEFFN'31
   : LOAD T"SNAKMENU"
0680 A1=0
   : A2=23
   : V$=HEX(2020)
   : R1$=HEX(8B)
   : R2$=HEX(58)
   : R3$=HEX(4F)
   : RETURN
0690 G=INT(21*RND(1))+1
   : H=2*INT(39*RND(1))+1
   : RETURN
0700 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
0710 KEYIN Q6$,710,710
0720 PRINT HEX(0208090F)
   : Q8=0
   : Q9=190
   : Q6$,Q7$=" "
0730 KEYIN Q7$,740,740
   : IF Q8>Q9 THEN 750
   : Q8=Q8+1
   : GOTO 730
0740 Q6$=Q6$&Q7$
   : IF Q7$<>HEX(0D) THEN 730
0750 IF STR(Q6$,,8)=" *2236DE" THEN R$="DE"
   : ELSE R$="D"
   : RETURN