-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathsnake.a
52 lines (46 loc) · 1.11 KB
/
snake.a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
10 HOME
20 LET L = 1 : REM SNAKE STARTS WITH LENGTH 1
30 LET W = 40 : LET H = 24 : REM WIDTH AND HEIGHT
40 GOSUB 2000 : REM INITIALIZE FOOD
50 DIM X(100) : DIM Y(100) : REM INTIALIZE ARRAY
60 X(L) = 20 : Y(L) = 12
65 REM MAIN LOOP
70 GOSUB 3000
80 FOR N = 1 TO 1000 : NEXT N
90 GOTO 70
999 REM READ KEYBOARD INPUT
1000 LET K = PEEK(49152)
1010 IF K = 196 THEN X(L) = X(L) + 1
1020 IF K = 193 THEN X(L) = X(L) - 1
1030 IF K = 215 THEN Y(L) = Y(L) - 1
1040 IF K = 211 THEN Y(L) = Y(L) + 1
1050 RETURN
1990 REM CREATE FOOD
2000 LET FX = INT(RND(1) * W)
2010 LET FY = INT(RND(1) * H)
2020 HTAB FX : VTAB FY
2030 PRINT "F"
2040 RETURN
2990 REM DISPLAY SNAKE
3000 HTAB X(1) : VTAB Y(1)
3010 PRINT " "
3020 IF L > 1 THEN GOSUB 5000
3030 GOSUB 1000
3040 IF X(L) = FX AND Y(L) = FY THEN GOSUB 4000
3050 FOR I = 1 TO L
3060 HTAB X(I) : VTAB Y(I)
3070 PRINT "S"
3080 NEXT I
3090 RETURN
3990 REM GROW SNAKE
4000 L = L + 1
4010 X(L) = X(L - 1)
4020 Y(L) = Y(L - 1)
4030 GOSUB 2000
4040 RETURN
4990 REM SHIFT SNAKE ARRAY
5000 FOR I = 1 TO L - 1
5010 X(I) = X(I + 1)
5020 Y(I) = Y(I + 1)
5030 NEXT I
5040 RETURN