100 REM BY S.ZANOTTI-2021 110 CALL CLEAR 120 OPTION BASE 1 130 CALL SCREEN(2) 140 FOR I=1 TO 12 150 CALL COLOR(I,16,1) 160 NEXT I 170 CALL COLOR(13,3,1) 180 CALL COLOR(14,3,1) 190 CALL COLOR(15,12,1) 200 CALL COLOR(16,7,16) 210 CALL CHAR(128,"183C7EDB99FFFF7E") 220 CALL CHAR(132,"7EFFFF99DB7E3C18") 230 CALL CHAR(131,"78ECE6FFFFE6EC78") 240 CALL CHAR(129,"1E3767FFFF67371E") 250 CALL CHAR(130,"0000FFB5ADFF0000") 260 CALL CHAR(133,"3C3CFCECF8F00000") 270 CALL CHAR(134,"0000F0F8ECFC3C3C") 280 CALL CHAR(135,"3C3C3F371F0F0000") 290 CALL CHAR(136,"00000F1F373F3C3C") 300 CALL CHAR(137,"3C243C2C343C243C") 310 CALL CHAR(144,"0810183C7E7E7E3C") 320 CALL CHAR(145,"18087EF9FFF37E3C") 330 CALL CHAR(141,"0030541A5034997E") 340 CALL CHAR(152,"FFFBF1FBBF1DB8FD") 350 DIM G(24,32) 360 HS=0 370 ML=4 380 FOR I=2 TO 32 390 G(2,I)=152 400 G(22,I)=152 410 IF I>22 THEN 440 420 G(I,2)=152 430 G(I,32)=152 440 NEXT I 450 GOSUB 2290 460 GOSUB 1300 470 IF S=0 THEN 670 480 IF LK=K THEN 670 490 LK=K 500 DC=((K=65)-(K=68))*ABS(DC=OC*-1) 510 DR=((K=87)-(K=83))*ABS(DR=OR*-1) 520 IF K=77 THEN 450 530 IF(DC+DR)<>0 THEN 570 540 DC=OC 550 DR=OR 560 GOTO 670 570 IF((OC*DR)+(OR*DC))>0 THEN 630 580 IF(OC+OR)<0 THEN 610 590 H=133 600 GOTO 670 610 H=136 620 GOTO 670 630 IF(OC<0)+(OR>0)THEN 660 640 H=134 650 GOTO 670 660 H=135 670 IF T>0 THEN 840 680 IF F>10 THEN 840 690 RF=INT(RND*19)+3 700 CF=INT(RND*29)+3 710 IF G(RF,CF)<>0 THEN 830 720 N=RND 730 IF N>0.02 THEN 770 740 V=144 750 X=55 760 GOTO 790 770 V=145 780 X=10 790 T=10 800 G(RF,CF)=V 810 F=F+1 820 GOTO 840 830 RF=0 840 K=G(R+DR,C+DC) 850 IF K=0 THEN 990 860 IF(K<>144)*(K<>145)THEN 970 870 CALL SOUND(25,-5,0) 880 CALL SOUND(25,-6,5) 890 CALL SOUND(40,-7,0) 900 P=1 910 T=T-1 920 F=F-1 930 G(R+DR,C+DC)=0 940 LN=LN+1 950 SC=SC+X 960 GOTO 990 970 IF(K<128)+(K>137)*(K<>152)THEN 990 980 GOTO 2770 990 IF P THEN 1120 1000 W=W+O 1010 E=E+L 1020 A=G(W,E) 1030 IF(A<>133)*(A<>136)THEN 1080 1040 M=O 1050 O=L*-1 1060 L=M*-1 1070 GOTO 1120 1080 IF(A<>134)*(A<>135)THEN 1120 1090 M=O 1100 O=L 1110 L=M 1120 P=0 1130 IF T=0 THEN 1150 1140 T=T-1 1150 CALL HCHAR(R,C,H) 1160 G(R,C)=H 1170 H=130+(ABS(DR))*7 1180 R=R+DR 1190 C=C+DC 1200 CALL HCHAR(R,C,130+DC+DR+DR) 1210 G(R,C)=130+DC+DR+DR 1220 CALL HCHAR(W,E,32) 1230 G(W,E)=0 1240 IF RF=0 THEN 1260 1250 CALL HCHAR(RF,CF,G(RF,CF)) 1260 OR=DR 1270 OC=DC 1280 CALL KEY(3,K,S) 1290 GOTO 470 1300 R=12 1310 C=7 1320 W=12 1330 E=3 1340 T=0 1350 S=0 1360 DR=0 1370 DC=1 1380 O=0 1390 L=1 1400 F=0 1410 LN=4 1420 LK=32 1430 SC=0 1440 H=130 1450 GOSUB 1470 1460 RETURN 1470 RANDOMIZE 1480 CALL CLEAR 1490 FOR I=3 TO 21 1500 FOR N=3 TO 31 1510 G(I,N)=0 1520 NEXT N 1530 NEXT I 1540 IF LB=0 THEN 1870 1550 PR=12 1560 PC=9 1570 MEX$="ONE MINUTE PLEASE" 1580 GOSUB 3080 1590 FOR I=4 TO 30 1600 FOR N=4 TO 20 1610 IF(N=12)*(I<12)THEN 1640 1620 IF RND>SD THEN 1640 1630 G(N,I)=152 1640 NEXT N 1650 NEXT I 1660 FOR I=4 TO 30 1670 FOR N=4 TO 20 1680 IF G(N,I)<>0 THEN 1700 1690 GOTO 1850 1700 IF G(N-1,I-1)=0 THEN 1740 1710 IF G(N-1,I+1)=0 THEN 1780 1720 G(N,I)=0 1730 GOTO 1850 1740 IF G(N-1,I+1)=0 THEN 1780 1750 IF G(N+1,I+1)=0 THEN 1820 1760 G(N,I)=0 1770 GOTO 1850 1780 IF G(N+1,I+1)=0 THEN 1820 1790 IF G(N+1,I-1)=0 THEN 1850 1800 G(N,I)=0 1810 GOTO 1850 1820 IF G(N+1,I-1)=0 THEN 1850 1830 IF G(N-1,I-1)=0 THEN 1850 1840 G(N,I)=0 1850 NEXT N 1860 NEXT I 1870 CALL CLEAR 1880 PR=1 1890 PC=3 1900 MEX$="HI-SCORE:" 1910 GOSUB 3080 1920 PC=12 1930 MEX$=STR$(HS) 1940 GOSUB 3080 1950 PC=21 1960 MEX$="TOP LEN:" 1970 GOSUB 3080 1980 PC=29 1990 MEX$=STR$(ML) 2000 GOSUB 3080 2010 PC=3 2020 PR=23 2030 MEX$="SCORE:" 2040 GOSUB 3080 2050 PC=25 2060 MEX$="LEN:" 2070 GOSUB 3080 2080 CALL HCHAR(23,9,141,5) 2090 CALL HCHAR(23,29,141,3) 2100 CALL HCHAR(2,2,152,31) 2110 CALL HCHAR(22,2,152,31) 2120 CALL VCHAR(2,2,152,20) 2130 CALL VCHAR(2,32,152,20) 2140 IF LB=0 THEN 2210 2150 FOR N=4 TO 20 2160 FOR I=4 TO 30 2170 IF G(N,I)=0 THEN 2190 2180 CALL HCHAR(N,I,152) 2190 NEXT I 2200 NEXT N 2210 PR=24 2220 PC=13 2230 MEX$="GET READY" 2240 GOSUB 3080 2250 CALL KEY(3,GR,ST) 2260 IF GR<>32 THEN 2250 2270 CALL HCHAR(24,13,32,9) 2280 RETURN 2290 CALL CLEAR 2300 MEX$="LAZY SNAKE" 2310 PR=8 2320 PC=13 2330 GOSUB 3080 2340 CALL HCHAR(8,11,130) 2350 CALL HCHAR(8,12,133) 2360 CALL HCHAR(7,12,136) 2370 CALL HCHAR(7,13,130,10) 2380 CALL HCHAR(7,23,134) 2390 CALL HCHAR(8,23,135) 2400 CALL HCHAR(8,24,131) 2410 CALL HCHAR(9,11,152,14) 2420 MEX$="1-CLASSIC" 2430 PR=14 2440 PC=13 2450 GOSUB 3080 2460 MEX$="2-MAZE" 2470 PR=15 2480 GOSUB 3080 2490 MEX$="3-EXIT" 2500 PR=16 2510 GOSUB 3080 2520 CALL KEY(3,K,S) 2530 IF S=0 THEN 2540 2540 IF K=ASC("1")THEN 2550 ELSE 2570 2550 LB=0 2560 RETURN 2570 IF K=ASC("2")THEN 2580 ELSE 2740 2580 LB=1 2590 PR=21 2600 PC=6 2610 MEX$="1 EASY 2 MEDIUM 3 HARD" 2620 GOSUB 3080 2630 CALL KEY(3,L,S) 2640 IF L<>49 THEN 2670 2650 SD=0.05 2660 RETURN 2670 IF L<>50 THEN 2700 2680 SD=0.20 2690 RETURN 2700 IF L<>51 THEN 2730 2710 SD=0.50 2720 RETURN 2730 GOTO 2630 2740 IF K=ASC("3")THEN 2750 ELSE 2760 2750 END 2760 GOTO 2520 2770 CALL SOUND(180,349,0,220,0) 2780 CALL SOUND(180,261,0,164,0) 2790 CALL SOUND(300,220,0,164,0) 2800 PR=12 2810 PC=12 2820 MEX$="GAME OVER" 2830 GOSUB 3080 2840 PR=23 2850 PC=9 2860 CALL HCHAR(23,9,32,5) 2870 MEX$=STR$(SC) 2880 GOSUB 3080 2890 PC=29 2900 CALL HCHAR(23,29,32,3) 2910 MEX$=STR$(LN) 2920 GOSUB 3080 2930 IF SC<=HS THEN 2990 2940 HS=SC 2950 PC=12 2960 PR=1 2970 MEX$=STR$(HS) 2980 GOSUB 3080 2990 IF LN<=ML THEN 3050 3000 ML=LN 3010 PC=29 3020 PR=1 3030 MEX$=STR$(ML) 3040 GOSUB 3080 3050 CALL KEY(3,K,S) 3060 IF S=0 THEN 3050 3070 GOTO 450 3080 FOR I=0 TO LEN(MEX$)-1 3090 CALL HCHAR(PR,PC+I,ASC(SEG$(MEX$,I+1,1))) 3100 NEXT I 3110 RETURN 3120 END