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%