20 FOR Y=1 TO 1000000 30 GOSUB 70 40 NEXT Y 50 END 60 ' game inizialization 70 DELAY(100) 75 CLS: CURSOR 0 80 DWRITE 0,LO: DWRITE 16,LO: DWRITE 17,LO: DWRITE 26,LO: DWRITE 27,LO: DWRITE 16,LO 90 Z=0: L=5: J=5: ' 0=right, 1=up, 2=left, 3=down 100 GOSUB 4000 110 GOSUB 1000 120 FOR W=1 TO 2 130 W=1 150 GOSUB 2000 180 GOSUB 3000 190 NEXT W 200 RETURN 1000 ' snake inizialization 1010 FOR I = 1 TO 5 1020 VECTIN 300+6*I,1,I: VECTIN 99,2,I 1030 NEXT I 1035 X=VECTOUT(1,5): Y=VECTOUT(2,5) 1040 FOR I = 1 TO 5 1050 RECTANGLE 9,9,VECTOUT(1,I),VECTOUT(2,I),VECTOUT(1,I)+5, VECTOUT(2,I)+2,1 1060 NEXT I 1070 M=RND(4,102): N=RND(4,61): RECTANGLE 8,8,6*M,3*N,6*M+5,3*N+2,1 1080 RETURN 2000 ' joystick reading 2010 A=DREAD(0): B=DREAD(16): C=DREAD(17): D=DREAD(26): E=DREAD(27) 2020 IF A=1 IF Z!=3 Z=1: GOTO 2060 2030 IF C=1 IF Z!=1 Z=3: GOTO 2060 2040 IF D=1 IF Z!=0 Z=2: GOTO 2060 2050 IF E=1 IF Z!=2 Z=0 2060 ' jump 2100 RETURN 3000 ' draw snake 3010 J=J+1 3020 IF J>L J=1 3030 IF Z=0 X=X+6 3040 IF Z=2 X=X-6 3050 IF Z=1 Y=Y-3 3060 IF Z=3 Y=Y+3 3062 ' if x<18 x=612 3064 ' if x>612 x=18 3066 ' if y<12 y=183 3068 ' if y>183 y=12 3070 RECTANGLE 15,15,VECTOUT(1,J),VECTOUT(2,J),VECTOUT(1,J)+5, VECTOUT(2,J)+2,1 3080 VECTIN X,1,J: VECTIN Y,2,J 3090 K=GET(X,Y) 3100 IF K=8 GOSUB 6000 3110 IF K=9 GOSUB 5000 3120 IF K=2 GOSUB 5000 3130 RECTANGLE 9,9,VECTOUT(1,J),VECTOUT(2,J),VECTOUT(1,J)+5, VECTOUT(2,J)+2,1 3140 IF L<60 DELAY(60-L) 3150 RETURN 4000 ' draw border 4010 LINE 2,10,9,626,9,4 4020 LINE 2,14,8,14,187,8 4030 LINE 2,622,8,622,187,8 4040 LINE 2,10,187,626,187,4 4050 RETURN 5000 ' game over 5010 X=ROOT(2,12) 5020 FOR I=0 TO 14 5030 COLOR I,15 5040 AT 3*I+12,I+5 5045 F=440*POW(X,I) 5050 PRINT "Game Over!"; 5055 TONE F,100 5060 NEXT I 5070 FOR I=1 TO 2 5080 B=DREAD(16) 5090 IF B=0 I=1 5100 NEXT I 5110 W=2 5120 RETURN 6000 ' snake eat food 6010 L=L+5: TONE 880,50 6020 M=RND(4,102): N=RND(4,61): RECTANGLE 8,8,6*M,3*N,6*M+5,3*N+2,1 6030 GOSUB 4000 6040 RETURN