ZX81 Listing for snake.p


ZX81 program listing for **SNAKE**SLR/2022

**SNAKE**SLR/2022 (snake.p)

Eat all the food without hitting the walls or yourself. Use A, W, S, D to change direction (west, north, south and east respectively).


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 18160
VARS  : 18953
E-LINE: 18954
STKBOT: 18954
STKEND: 18954


LEGEND

9999 means line number
PRINT means treat as KEYWORD P


PROGRAM LISTING

  10 REM **SNAKE**SLR/2022
  20 GOSUB 500
  30 LET Z$(1)=CHR$ X+Z$(1)
  40 LET Z$(2)=CHR$ Y+Z$(2)
  60 LET NEWDIR=(1 AND INKEY$="A
")+(2 AND INKEY$="W")+(3 AND
INKEY$="D")+(4 AND INKEY$="S")
  70 IF NEWDIR THEN LET DIR=NEWD
IR
  80 LET X=X-(DIR=1)+(DIR=3)
  90 LET Y=Y-(DIR=2)+(DIR=4)
 100 PRINT AT CODE Z$(2,SIZE),
CODE Z$(1,SIZE);" ";AT Y,X;
 110 LET P=PEEK (PEEK 16398+256*
PEEK 16399)
 120 IF P>127 THEN GOTO 300
 130 PRINT S$
 140 IF P=0 THEN GOTO 30
 150 LET SIZE=SIZE+1
 160 IF SIZE>END THEN GOTO 400
 170 LET SCORE=SCORE+P
 180 GOTO 30
 300 PRINT CHR$ (CODE S$-128);
AT 10,8;"OOPS/ SNAKE DIED.";AT 1
1,11;"SCORE: ";SCORE
 310 GOSUB 800
 320 RUN
 400 PRINT AT 10,11;"GREAT JOB/"
;AT 11,11;"SCORE: ";SCORE
 410 GOSUB 800
 420 GOSUB 550
 430 GOTO 30
 500 REM **SETUP**
 510 RAND 0
 520 LET END=0
 530 LET SCORE=0
 540 REM **LEVEL**
 550 CLS
 560 FOR A=0 TO 31
 570 PRINT AT 0,A;" ";AT (A AND
A<22),0;" ";AT 21,A;" ";AT (A
AND A<22),31;" "
 580 NEXT A
 590 DIM Z$(2,100)
 600 LET S$="XOZH+*"(RND*5+.5)
 610 LET SIZE=1
 620 LET END=END+(5 AND END<100)
 630 LET X=15
 640 LET Y=10
 650 LET DIR=1
 660 PRINT AT 0,13;"SNAKE/"
 670 PRINT AT 10,10;"GROW ";END;
" BIG.";AT 12,13;"READY?"
 680 GOSUB 800
 690 PRINT AT 10,10;"           
   ";AT 12,13;"      "
 700 FOR F=1 TO END
 710 LET FX=RND*30+1
 720 LET FY=RND*20+1
 730 IF X=FX AND Y=FY THEN GOTO
710
 740 IF X=FX-1 AND Y=FY THEN
GOTO 710
 750 PRINT AT FY,FX;
 760 IF PEEK (PEEK 16398+256*
PEEK 16399)<>0 THEN GOTO 710
 770 PRINT "£$?)=/."(RND*6+.5)
 780 NEXT F
 790 RETURN
 800 REM **WAIT FOR KEY**
 810 IF INKEY$<>"" THEN GOTO 810
 820 IF INKEY$="" THEN GOTO 820
 830 RETURN
 900 SAVE "SNAKE"
 910 RUN