|
1 | 1 | 10 HOME
|
2 | 2 | 20 LET L = 1 : REM SNAKE STARTS WITH LENGTH 1
|
3 | 3 | 30 LET W = 40 : LET H = 24 : REM WIDTH AND HEIGHT
|
| 4 | +35 LET KEY = 0 |
4 | 5 | 40 GOSUB 2000 : REM INITIALIZE FOOD
|
5 | 6 | 50 DIM X(100) : DIM Y(100) : REM INTIALIZE ARRAY
|
6 | 7 | 60 X(L) = 20 : Y(L) = 12
|
7 | 8 |
|
8 | 9 | 65 REM MAIN LOOP
|
9 |
| -70 GOSUB 3000 |
10 |
| -80 FOR N = 1 TO 1000 - L * 2 : NEXT N |
11 |
| -90 GOTO 70 |
| 10 | +70 IF L > 98 THEN GOSUB 9000 |
| 11 | +80 GOSUB 3000 |
| 12 | +90 FOR N = 1 TO 1000 - L * 2 : NEXT N |
| 13 | +100 GOTO 70 |
12 | 14 |
|
13 | 15 | 999 REM READ KEYBOARD INPUT
|
14 | 16 | 1000 LET K = PEEK(49152)
|
15 |
| -1010 IF K = 196 THEN X(L) = X(L) + 1 |
16 |
| -1020 IF K = 193 THEN X(L) = X(L) - 1 |
17 |
| -1030 IF K = 215 THEN Y(L) = Y(L) - 1 |
18 |
| -1040 IF K = 211 THEN Y(L) = Y(L) + 1 |
19 |
| -1050 IF X(L) < 1 OR X(L) > W THEN GOTO 6000 |
20 |
| -1060 IF Y(L) < 1 OR Y(L) > H THEN GOTO 6000 |
21 |
| -1070 IF L > 1 THEN GOSUB 7000 |
22 |
| -1080 RETURN |
| 17 | +1010 IF K = 196 OR K = 193 OR K = 215 OR K = 211 THEN KEY = K |
| 18 | +1020 IF KEY = 196 THEN X(L) = X(L) + 1 |
| 19 | +1030 IF KEY = 193 THEN X(L) = X(L) - 1 |
| 20 | +1040 IF KEY = 215 THEN Y(L) = Y(L) - 1 |
| 21 | +1050 IF KEY = 211 THEN Y(L) = Y(L) + 1 |
| 22 | +1060 IF X(L) < 1 OR X(L) > W THEN GOTO 6000 |
| 23 | +1070 IF Y(L) < 1 OR Y(L) > H THEN GOTO 6000 |
| 24 | +1080 IF L > 1 THEN GOSUB 7000 |
| 25 | +1090 RETURN |
23 | 26 |
|
24 | 27 | 1990 REM CREATE FOOD
|
25 | 28 | 2000 LET FX = INT(RND(1) * (W - 1)) + 1
|
|
71 | 74 | 8010 HTAB FX : VTAB FY
|
72 | 75 | 8020 PRINT "F"
|
73 | 76 | 8030 RETURN
|
| 77 | + |
| 78 | +9000 REM VICTORY |
| 79 | +9010 HOME |
| 80 | +9020 HTAB 14 : VTAB 10 |
| 81 | +9030 PRINT "YOU HAVE WON!" |
| 82 | +9040 HTAB 13 : VTAB 11 : PRINT "SNAKE IS FULL!" |
| 83 | +9050 END |
| 84 | + |
0 commit comments