Advertisement
Guest User

Untitled

a guest
Nov 2nd, 2022
540
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | Source Code | 0 0
  1. 10 HOME
  2. 20 LET L = 1 : REM SNAKE STARTS WITH LENGTH 1
  3. 30 LET W = 40 : LET H = 24 : REM WIDTH AND HEIGHT
  4. 35 LET G = 0 : REM BOOL FOR WHEN SNAKE SHOULD GROW
  5. 40 GOSUB 2000 : REM INITIALIZE FOOD
  6. 41 G = 0 : REM HACK: RESET GROW STATE
  7. 49 LET MX = 100 : REM MAX SIZE OF SNAKE
  8. 50 DIM X(MX) : DIM Y(MX) : REM INTIALIZE ARRAY
  9. 51 LET S = 0 : REM INIT SNAKE HEAD INDEX
  10. 52 LET T = 0 : REM INIT SNAKE TAIL INDEX
  11. 53 LET PX = 20 : REM INIT PREVIOUS HEAD VALUES FOR QUICK REF
  12. 54 LET PY = 12
  13. 60 X(S) = PX : Y(S) = PY : REM HEAD AND TAIL START POSITION ARE SAME
  14. 61 X(T) = PX : Y(T) = PY
  15.  
  16. 65 REM MAIN LOOP
  17. 70 GOSUB 3000
  18. 80 FOR N = 1 TO 1000 : NEXT N
  19. 90 GOTO 70
  20.  
  21. 999 REM READ KEYBOARD INPUT
  22. 1000 LET K = PEEK(49152)
  23. 1009 X(S) = PX : Y(S) = PY : REM INIT NEXT VALUES TO CURRENT VALUES
  24. 1010 IF K = 196 THEN X(S) = PX + 1
  25. 1020 IF K = 193 THEN X(S) = PX - 1
  26. 1030 IF K = 215 THEN Y(S) = PY - 1
  27. 1040 IF K = 211 THEN Y(S) = PY + 1
  28. 1050 RETURN
  29.  
  30. 1990 REM CREATE FOOD
  31. 2000 LET FX = INT(RND(1) * W)
  32. 2010 LET FY = INT(RND(1) * H)
  33. 2020 HTAB FX : VTAB FY
  34. 2030 PRINT "F"
  35. 2031 G = 1 : REM PRESUME SNAKE SHOULD GROW
  36. 2040 RETURN
  37.  
  38. 2990 REM DISPLAY SNAKE
  39. 3000 IF G = 1 GOTO 3011 : REM GROW BY NOT ERASING TAIL
  40. 3002 HTAB X(T) : VTAB Y(T)
  41. 3003 T = T + 1 : REM INCREASE TAIL INDEX
  42. 3004 IF T = MX THEN T = 0 : REM WRAP INDEX TO 0
  43. 3010 PRINT " "
  44. 3011 G = 0 : REM RESET GROW BOOL
  45. 3020 REM IF L > 1 THEN GOSUB 5000
  46. 3021 S = S + 1 : REM INCREASE HEAD INDEX
  47. 3022 IF S = MX THEN S = 0 : REM WRAP INDEX TO 0
  48. 3030 GOSUB 1000 : REM DETERMINE NEXT HEAD COORDS
  49. 3031 PX = X(S) : PY = Y(S) : REM COPY HEAD VALUES FOR NEXT LOOP
  50. 3040 REM IF X(L) = FX AND Y(L) = FY THEN GOSUB 4000
  51. 3041 IF X(S) = FX AND Y(S) = FY THEN GOSUB 4000
  52. 3042 HTAB X(S) : VTAB Y(S)
  53. 3043 PRINT "S"
  54. 3044 RETURN : REM SKIP OLD LOGIC
  55. 3050 FOR I = 1 TO L
  56. 3060 HTAB X(I) : VTAB Y(I)
  57. 3070 PRINT "S"
  58. 3080 NEXT I
  59. 3090 RETURN
  60.  
  61. 3990 REM GROW SNAKE
  62. 4000 L = L + 1
  63. 4010 X(L) = X(L - 1)
  64. 4020 Y(L) = Y(L - 1)
  65. 4030 GOSUB 2000
  66. 4040 RETURN
  67.  
  68. 4990 REM SHIFT SNAKE ARRAY
  69. 5000 FOR I = 1 TO L - 1
  70. 5010 X(I) = X(I + 1)
  71. 5020 Y(I) = Y(I + 1)
  72. 5030 NEXT I
  73. 5040 RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement