10 REM SNAKE .GAM Ver. 3.0 20 REM (c) S.Software Dat. 1985.09.25 30 REM Stefan Svensson Tel. 0511-83332 40 REM 50 REM *** G}va till H.W.D *** 60 REM 70 DIM P$(23%)=0%,Y%(3%),X%(3%),H%(9%),N%(9%),G%(9%),B$=21%,F$=1%,P0$=6%,T$=1% 80 REM IF CHR$(PEEK(61564%),PEEK(61565%))<>'SN' OR PEEK(65063%)+SWAP%(PEEK(65064%))>61564% CHAIN 'SNAKE.BAC' 90 I1%=PEEK(65065%)+SWAP%(PEEK(65066%)) : I1%=PEEK(I1%+4%)+SWAP%(PEEK(I1%+5%)) 100 FOR I%=0% TO 23% : POKE I1%+I%*6%,40%,0%,PEEK(884%+I%*2%),PEEK(885%+I%*2%),40%,0% : NEXT I% 110 RANDOMIZE 120 REM  L{s in konstanter 130 FOR I%=0% TO 3% : READ Y%(I%),X%(I%) : NEXT I% 140 FOR I%=1% TO 9% : READ H%(I%) : NEXT I% 150 FOR I%=1% TO 9% : READ N%(I%) : NEXT I% 160 FOR I%=0% TO 9% : READ G%(I%) : NEXT I% 170 S%=1% : H%=4% : N%=4% : G%=0% : T$='n' : T%=4% : T9%=2% 180 FOR I%=1% TO 21% : B$=B$+CHR$(ASC(RIGHT$(CHR$(160%)+' TIME OUT GAME OVER ',I%))+128%) : NEXT I% : GOTO 1150 190 REM  Rita spelplan 200 ; CHR$(12%) : GOSUB 1120 : ; CUR(0%,0%)STRING$(40%,127%)CUR(22%,0%)STRING$(40%,127%); 210 FOR I%=1% TO 21% : ; CUR(I%,0%)''TAB(39%)''; : NEXT I% 220 REM  Hinder 230 FOR I1%=1% TO G%(G%) 240 Y%=RND*19%+2% : X%=RND*36%+2% : IF Y%>8% AND Y%<14% IF X%>10% AND X%<30% 240 250 FOR I%=1% TO 3% : ; CUR(Y%,X%)''; : Z%=RND*4% : Y%=Y%+Y%(Z%) : X%=X%+X%(Z%) : NEXT I% : NEXT I1% 260 REM  Nollst{llning 270 Z1%=3% : Y1%=11% : X1%=16% : H1%=2% : T1%=0% : C1%=0% : P1%=0% : S1%=0% 280 Z2%=1% : Y2%=11% : X2%=22% : H2%=2% : T2%=0% : C2%=0% : P2%=0% : S2%=0% 290 FOR I%=2% TO 0% STEP -1% : POKE 61568%+I%*2%,Y1%,X1%-I%+2% : POKE 63168%+I%*2%,Y2%,X2%+I%-2% : NEXT I% 300 E%=0% : N0%=0% : R%=0% : R0%=1%+46%/H%(H%) : T0%=2%*T% AND T$='j' : C2%=8% AND S%=1% 310 GOSUB 1120 : ; CUR(11%,16%)LEFT$('\OO OO[ ',S%*4%)CUR(23%,15%)'>'; 320 OUT 6%,3% : FOR I%=1% TO 250% : GOSUB 970 : NEXT I% : OUT 6%,0% : FOR I1%=0% TO 9% : ; CUR(23%,15%+I1%)'>'; 330 FOR I%=1% TO 20% : GOSUB 970 : NEXT I% : ; CUR(23%,15%+I1%)' '; : NEXT I1% : POKE 65008%,255%,255%,255% 340 REM  Styrning 350 REM GOSUB 780 : REM 560 351 ON T9% GOTO 370,440 360 REM  2-tangentsstyrning 370 Q1%=-1% : Q2%=-1% : FOR I%=1% TO H%(H%)+(S%=2%)*3% : GOSUB 970 : IF F%=F0% 420 ELSE IF E%=1000% IF F%>=0% 1340 380 IF F%=65% IF Q1% Q1%=0% : IF Z1%>0% Z1%=Z1%-1% ELSE Z1%=3% 390 IF F%=83% IF Q1% Q1%=0% : IF Z1%<3% Z1%=Z1%+1% ELSE Z1%=0% 400 IF F%=92% IF Q2% Q2%=0% : IF Z2%>0% Z2%=Z2%-1% ELSE Z2%=3% 410 IF F%=91% IF Q2% Q2%=0% : IF Z2%<3% Z2%=Z2%+1% ELSE Z2%=0% 420 NEXT I% : GOTO 490 430 REM  4-tangentsstyrning 440 Q1%=Z1% : Q2%=Z2% : FOR I%=1% TO H%(H%)+(S%=2%)*3% : GOSUB 970 : IF F%=F0% 470 ELSE IF E%=1000% IF F%>=0% 1340 450 I1%=INSTR(1%,'WSZA',CHR$(F%))-1% : IF I1%>=0% IF I1%<>(Q1% XOR 2%) Z1%=I1% 460 I2%=INSTR(1%,'][-\',CHR$(F%))-1% : IF I2%>=0% IF I2%<>(Q2% XOR 2%) Z2%=I2% 470 NEXT I% 480 REM  V{nster spelare 490 IF C1% 610 ELSE IF E% 640 500 Y1%=Y1%+Y%(Z1%) : X1%=X1%+X%(Z1%) : A%=ASC(RIGHT$(P$(Y1%),X1%+1%)) 510 ; CUR(Y1%,X1%)'\'CUR(PEEK(61568%+H1%*2%),PEEK(61569%+H1%*2%))'O'; 520 ; CUR(PEEK(61568%+T1%*2%),PEEK(61569%+T1%*2%))LEFT$(' ',-(P1%=0%)); 530 IF H1%<=798% H1%=H1%+1% ELSE H1%=0% 540 POKE 61568%+H1%*2%,Y1%,X1% : IF P1% P1%=P1%-1% ELSE IF T1%<=798% T1%=T1%+1% ELSE T1%=0% 550 IF A%=32% 640 ELSE IF A%<48% OR A%>57% 600 560 REM  Po{ng 570 OUT 6%,0%,6%,135% : N0%=N0%-1% : P1%=P1%+A%-48% : S1%=S1%+A%-48% 580 ; CUR(23%,5%)RIGHT$(NUM$(S1%+10000%),3%); : GOTO 640 590 REM  Krock 600 OUT 6%,0%,6%,137% 610 IF C1%<32% C1%=C1%+1% ELSE C1%=24% 620 ; CUR(Y1%,X1%)MID$('\|$* -+*X/-+*X/-+*X/-!/-!/\!/',C1%,1%); 630 REM  H|ger spelare 640 IF S%=1% 790 ELSE IF C2% 760 ELSE IF E% 790 650 Y2%=Y2%+Y%(Z2%) : X2%=X2%+X%(Z2%) : A%=ASC(RIGHT$(P$(Y2%),X2%+1%)) 660 ; CUR(Y2%,X2%)'['CUR(PEEK(63168%+H2%*2%),PEEK(63169%+H2%*2%))'O'; 670 ; CUR(PEEK(63168%+T2%*2%),PEEK(63169%+T2%*2%))LEFT$(' ',-(P2%=0%)); 680 IF H2%<=798% H2%=H2%+1% ELSE H2%=0% 690 POKE 63168%+H2%*2%,Y2%,X2% : IF P2% P2%=P2%-1% ELSE IF T2%<=798% T2%=T2%+1% ELSE T2%=0% 700 IF A%=32% 790 ELSE IF A%<48% OR A%>57% 750 710 REM  Po{ng 720 OUT 6%,0%,6%,135% : N0%=N0%-1% : P2%=P2%+A%-48% : S2%=S2%+A%-48% 730 ; CUR(23%,35%)RIGHT$(NUM$(S2%+10000%),3%); : GOTO 790 740 REM  Krock 750 OUT 6%,0%,6%,137% 760 IF C2%<32% C2%=C2%+1% ELSE C2%=24% 770 ; CUR(Y2%,X2%)MID$('[|$* -+*X/-+*X/-+*X/-!/-!/[!/',C2%,1%); 780 REM  Slumpa ut siffror 790 N0%=N0%+1% : Y%=RND*21%+1% : X%=RND*38%+1% 791 OUT 6%,0%,6%,129% : ; CUR(Y%,X%)CHR$(RND*9%+49%); 792 IF N0%=N%(N%) 840 ELSE IF R% 840 800 N0%=N0%+1% : Y%=RND*21%+1% : X%=RND*38%+1% 810 X%=INSTR(X%+1%,P$(Y%),' ')-1% : IF X%<=0% X%=1% : Y%=Y%+1% : IF Y%>21% Y%=1% : GOTO 810 ELSE 810 820 OUT 6%,0%,6%,129% : ; CUR(Y%,X%)CHR$(RND*9%+49%); 830 REM  R{knare mm 840 IF R%=T0% 910 870 IF C1%>=8% IF C2%>=8% 920 880 IF C1%>8% OR C2%>8% IF T0%=0% T0%=4% : POKE 65008%,255%,255%,255% 890 GOTO 350 900 REM  Game over 910 E%=0% : I%=1% : GOTO 930 920 E%=1000% : I%=11% 930 P$(23%)=LEFT$(P$(23%),14%)+MID$(B$,I%,11%)+RIGHT$(P$(23%),26%) 940 IF E%=96% F%=F%-32% 980 IF F%=F0% 1040 990 IF F%=2% P9%=0% : GOTO 200 1000 IF F%=33% P9%=0% : GOTO 1150 1010 IF F%=15% P9%=0% : GOTO 1340 1020 IF F%=12% POKE 65063%,PEEK(61566%),PEEK(61567%) : ; CUR(20%,0%); : CHAIN 'LIB.BAC' 1030 IF F%=80% P9%= NOT P9% : IF P9% P0$=RIGHT$(P$(0%),35%) : ; CUR(0%,34%)' pause' ELSE ; CUR(0%,34%)P0$ 1040 IF P9% 970 ELSE RETURN 1050 POKE 65013%,0% : F0%=F% : GET F$ : F%=ASC(F$) : IF F%>=64% AND F%<96% F%=F%+32% 1060 F$=CHR$(F%) : GOTO 990 1070 REM  "Snake" 1080 ; CHR$(12%)'SnakeIII'TAB(19%)'(c) S.Software sep''85' 1090 ; '       III' : ; '         ' 1100 ; '       ' : ; '        ' 1110 ; '       ' 1120 ; CUR(23%,0%)' 1up:'RIGHT$(NUM$(S1%+10000%),3%)' \OO SnakeIII'; 1130 ; TAB(27%)'OO[ 2up:'RIGHT$(NUM$(S2%+10000%),3%)CUR(8%,0%); : RETURN 1140 REM  Instruktioner 1150 GOSUB 1080 1160 ; ' Snake g}r ut p} att du med din "orm" ska f|rs|ka f} s} m}nga po{ng som m|j-' 1170 ; ' ligt genom att ta de siffror som slump- m{ssigt placeras ut p} sk{rmen.' 1180 ; ' Du f}r lika m}nga po{ng som siffran anger, samtidigt som din orm blir lika mycket l{ngre.' 1190 ; ' Spelet slutar n{r du krockat med din svans, motst}ndaren eller med v{ggen.' 1200 ; ' [r man tv} spelare slutar det n{r b}da krockat eller ca 20 sekunder efter det' 1210 ; ' att den f|rste krockat.' : ; : ; ' Tryck return. '; 1220 GOSUB 1050 : IF F%<>13% 1220 1230 REM  Instruktioner f. 1240 GOSUB 1080 1250 IF T9%<>1% ; ' Du styr din orm med fyra tangenter som sv{nger }t respektive riktning.' : ; : GOTO 1270 1260 ; ' Du styr din orm med endast tv} tan- genter, en f|r att sv{nga v{nstervarv och en f|r h|gervarv.' : ; 1270 ; ' V[NSTER SPELARE: H\GER SPELARE:' : ; 1280 IF T9%<>1% ; ' W'TAB(25%)']' : ; ' A S'TAB(23%)'\ [' : ; ' Z'TAB(25%)'-' : ; : GOTO 1300 1290 ; ' <- A S -> <- \ [ ->' : ; : ; 1300 ; ' "'CHR$(54%-T9%*2%)'" 'CHR$(54%-T9%*2%)'-tangentsstyrning.' 1310 ; ' "!" Startar om med instruktioner.' : ; ' ctrl-B B|rjar spelet.' : ; : ; ' Tryck return. '; 1320 GOSUB 1050 : IF F%=50% OR F%=52% T9%=(F%-48%)/2% : GOTO 1240 ELSE IF F%<>13% 1320 1330 REM  Menyval 1340 GOSUB 1080 : ; CUR(21%,3%)'Lycka till!' 1350 GOSUB 1480 : ; CUR(9%,26%); : GOSUB 1050 1360 IF F%<>13% IF F%>=49% AND F%<=50% S%=F%-48% : GOTO 1350 ELSE 1350 1370 GOSUB 1480 : ; CUR(11%,26%); : GOSUB 1050 : IF F%=8% 1350 1380 IF F%<>13% IF F%>=49% AND F%<=57% H%=F%-48% : GOTO 1370 ELSE 1370 1390 GOSUB 1480 : ; CUR(12%,26%); : GOSUB 1050 : IF F%=8% 1370 1400 IF F%<>13% IF F%>=49% AND F%<=57% N%=F%-48% : GOTO 1390 ELSE 1390 1410 GOSUB 1480 : ; CUR(13%,26%); : GOSUB 1050 : IF F%=8% 1390 1420 IF F%<>13% IF F%>=48% AND F%<=57% G%=F%-48% : GOTO 1410 ELSE 1410 1430 GOSUB 1480 : ; CUR(15%,26%); : GOSUB 1050 : IF F%=8% 1410 1440 IF F%<>13% IF F%=106% OR F%=110% T$=F$ : GOTO 1430 ELSE 1430 1450 GOSUB 1480 : ; CUR(16%,26%); : GOSUB 1050 : IF F%=8% 1430 1460 IF F%<>13% IF F%>=49% AND F%<=57% T%=F%-48% : GOTO 1450 ELSE 1450 ELSE 200 1470 REM  Valparametrar 1480 ; CUR(9%,0%)' Antal spelare (1-2):'S% : ; 1490 ; ' Hastighet (1-9):'H% 1500 ; ' Siffert{thet (1-9):'N% 1510 ; ' Hindert{thet (0-9):'G% : ; 1520 ; ' Tidsbegr{nsning (j/n): 'T$ 1530 ; ' Tid ggr 10 s. (1-9):'T% : RETURN 1540 REM  Konstanter 1550 DATA -1,0, 0,1, 1,0, 0,-1 1560 DATA 55,40,30,25,20,16,12,9,6 1570 DATA 1,2,3,5,7,10,14,18,25 1580 DATA 0,2,4,8,12,16,20,25,35,45