EkriirkE

ELANDER.BAS

Jul 11th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 100 REM BASIC Month 4: Lunar Corps
  2. 110 REM http://reddit.com/r/RetroBattlestations
  3. 120 REM written by FozzTexx
  4. 130 REM modified by EkriirkE
  5.  
  6. 200 REM Clear screen and setup variables
  7. 210 CLS : RANDOMIZE TIMER
  8. 220 COLS = 80: ROWS = 24
  9. 230 ITER = 10
  10.  
  11. 300 GOSUB 2510
  12. 310 YS = SQR(2) * SQR(LY) * ITER - 1
  13. 320 XV = LX / YS: YV = 0
  14. 330 X = 1: Y = 1
  15.  
  16. 420 FOR I = 1 TO YS
  17. 430 RESTORE 9050: GOSUB 1510
  18. 440 YV = YV + .9 / (ITER * ITER)
  19. 450 X = X + XV: Y = Y + YV
  20. 460 IF I >= YS / 1.5 THEN RESTORE 9020 ELSE RESTORE 9000
  21. 470 GOSUB 1510
  22. 480 J = TIMER: WHILE TIMER - J < 1 / ITER: WEND
  23. 490 NEXT I
  24. 500 RESTORE 9050: GOSUB 1510
  25. 510 X = LX: Y = LY
  26. 520 RESTORE 9000: GOSUB 1510
  27. 530 S$ = "The Eagle has landed": LOCATE ROWS / 2, (COLS - LEN(S$)) / 2: PRINT S$
  28.  
  29. 999 END
  30.  
  31. 1500 REM EkriirkE's Draw sprite from DATA at X, Y
  32. 1510 IF Y < 1 OR Y >= ROWS OR X < 1 OR X >= COLS THEN RETURN
  33. 1520 LOCATE Y, INT(X)
  34. 1530 READ T$, S$: PRINT S$: LOCATE CSRLIN, INT(X)
  35. 1540 IF T$ = "SP" GOTO 1530
  36. 1550 RETURN
  37.  
  38. 2500 REM EkriirkE's Draw lunar surface
  39. 2510 DEEP = 4: WIDE = 3
  40. 2520 Y = INT(RND(1) * DEEP) + 1: PC = 0: LX = 0
  41. 2530 FOR I = 1 TO COLS
  42. 2540 OY = Y
  43. 2550 IF PC = 0 THEN Y = Y + SGN(INT(RND(1) * 7) - 3)
  44. 2560 IF Y < 1 THEN Y = 1
  45. 2570 IF Y > DEEP THEN Y = DEEP
  46. 2580 IF LI + 1 = I AND Y = OY THEN GOTO 2550
  47. 2590 IF Y > OY THEN LOCATE ROWS - Y + 1: PRINT "/";  ELSE LOCATE ROWS - Y
  48. 2600 IF Y < OY THEN PRINT "\";
  49. 2610 IF Y = OY THEN PRINT "_"; : PC = PC + 1: IF PC >= WIDE THEN PC = 0: LI = I: IF LX = 0 OR RND(1) > .8 THEN LX = I - INT(WIDE / 2 + .5): LY = ROWS - Y - 1
  50. 2615 J = TIMER: WHILE TIMER - J < .05: WEND
  51. 2620 NEXT
  52. 2630 RETURN
  53.  
  54. 9000 DATA SP,"(I)"
  55. 9010 DATA SE,"/T\"
  56. 9020 DATA SP,"(I)"
  57. 9030 DATA SP,"/T\"
  58. 9040 DATA SE," V "
  59. 9050 DATA SP,"   "
  60. 9060 DATA SP,"   "
  61. 9070 DATA SE,"   "
Add Comment
Please, Sign In to add comment