Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 10 HOME
- 20 LET L = 1 : REM SNAKE STARTS WITH LENGTH 1
- 30 LET W = 40 : LET H = 24 : REM WIDTH AND HEIGHT
- 35 LET G = 0 : REM BOOL FOR WHEN SNAKE SHOULD GROW
- 40 GOSUB 2000 : REM INITIALIZE FOOD
- 41 G = 0 : REM HACK: RESET GROW STATE
- 49 LET MX = 100 : REM MAX SIZE OF SNAKE
- 50 DIM X(MX) : DIM Y(MX) : REM INTIALIZE ARRAY
- 51 LET S = 0 : REM INIT SNAKE HEAD INDEX
- 52 LET T = 0 : REM INIT SNAKE TAIL INDEX
- 53 LET PX = 20 : REM INIT PREVIOUS HEAD VALUES FOR QUICK REF
- 54 LET PY = 12
- 60 X(S) = PX : Y(S) = PY : REM HEAD AND TAIL START POSITION ARE SAME
- 61 X(T) = PX : Y(T) = PY
- 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)
- 1009 X(S) = PX : Y(S) = PY : REM INIT NEXT VALUES TO CURRENT VALUES
- 1010 IF K = 196 THEN X(S) = PX + 1
- 1020 IF K = 193 THEN X(S) = PX - 1
- 1030 IF K = 215 THEN Y(S) = PY - 1
- 1040 IF K = 211 THEN Y(S) = PY + 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"
- 2031 G = 1 : REM PRESUME SNAKE SHOULD GROW
- 2040 RETURN
- 2990 REM DISPLAY SNAKE
- 3000 IF G = 1 GOTO 3011 : REM GROW BY NOT ERASING TAIL
- 3002 HTAB X(T) : VTAB Y(T)
- 3003 T = T + 1 : REM INCREASE TAIL INDEX
- 3004 IF T = MX THEN T = 0 : REM WRAP INDEX TO 0
- 3010 PRINT " "
- 3011 G = 0 : REM RESET GROW BOOL
- 3020 REM IF L > 1 THEN GOSUB 5000
- 3021 S = S + 1 : REM INCREASE HEAD INDEX
- 3022 IF S = MX THEN S = 0 : REM WRAP INDEX TO 0
- 3030 GOSUB 1000 : REM DETERMINE NEXT HEAD COORDS
- 3031 PX = X(S) : PY = Y(S) : REM COPY HEAD VALUES FOR NEXT LOOP
- 3040 REM IF X(L) = FX AND Y(L) = FY THEN GOSUB 4000
- 3041 IF X(S) = FX AND Y(S) = FY THEN GOSUB 4000
- 3042 HTAB X(S) : VTAB Y(S)
- 3043 PRINT "S"
- 3044 RETURN : REM SKIP OLD LOGIC
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement