Created
April 25, 2025 13:26
-
-
Save leobm/1da12c28e47ed2b67e149dd24da16c09 to your computer and use it in GitHub Desktop.
Amstrad CPC, simple snake, locomotive basic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 MODE 1:INK 0,0:INK 1,19:PAPER 0: PEN 1:CLS | |
20 w=40: h=25: l=5 | |
30 dx=1: dy=0 | |
35 PEN 2 | |
40 FOR xw=1 TO w | |
50 LOCATE xw,1: PRINT "#" | |
60 LOCATE xw,h: PRINT "#"; | |
70 NEXT | |
80 FOR yh=1 TO h | |
90 LOCATE 1,yh: PRINT "#"; | |
100 LOCATE w,yh: PRINT "#"; | |
110 NEXT | |
115 PEN 1 | |
120 GOSUB 440 | |
130 DIM x(100), y(100) | |
140 FOR i=0 TO l-1 | |
150 x(i)=10-i: y(i)=10 | |
160 NEXT | |
170 RANDOMIZE TIME | |
180 WHILE 1 | |
190 k$=INKEY$ | |
200 IF INKEY(0)=0 THEN dx=0:dy=-1 | |
210 IF INKEY(2)=0 THEN dx=0:dy=1 | |
220 IF INKEY(8)=0 THEN dx=-1:dy=0 | |
230 IF INKEY(1)=0 THEN dx=1:dy=0 | |
240 IF k$="q" THEN GOTO 410 | |
250 LOCATE x(l-1),y(l-1): PRINT " " | |
260 FOR i=l TO 1 STEP -1 | |
270 x(i)=x(i-1) | |
280 y(i)=y(i-1) | |
290 NEXT i | |
300 x(0)=x(0)+dx | |
310 y(0)=y(0)+dy | |
320 IF x(0)=fx AND y(0)=fy THEN GOSUB 420 | |
330 IF x(0)<2 OR x(0)>w-1 OR y(0)<2 OR y(0)>h-1 THEN GOTO 480 | |
340 FOR i=1 TO l-1 | |
350 IF x(0) = x(i) AND y(0) = y(i) THEN GOTO 480 | |
360 NEXT i | |
370 FOR i=0 TO l-1 | |
380 LOCATE x(i),y(i): PRINT "O" | |
390 NEXT i | |
400 WEND | |
410 END | |
420 SOUND 1, 1000, 20, 10 | |
430 l=l+1 | |
440 fx=INT(RND*(w-1))+2 | |
450 fy=INT(RND*(h-1))+2 | |
460 PEN 3: LOCATE fx,fy: PRINT "*": PEN 1 | |
470 RETURN | |
480 FOR i=15 TO 1 STEP -1 | |
490 CLS: LOCATE RND*(w-10)+1, 10:PRINT "GAME OVER" | |
500 SOUND 1, INT(RND*800),10,i,15 | |
510 NEXT i |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment