EkriirkE

LANDER.BAS

Jul 13th, 2019
153
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 Based on the original by FozzTexx
  4. 130 REM Rewritten by EkriirkE
  5. 140 REM Today is 2019-07-13
  6.  
  7. 200 REM Clear screen and setup variables
  8. 210 CLS : RANDOMIZE TIMER
  9. 220 COLS = 80: ROWS = 24
  10. 230 ITER = 10
  11.  
  12. 300 GOSUB 2510
  13. 310 YS = SQR(2) * SQR(LY) * ITER - 1
  14. 320 XV = LX / YS: YV = 0
  15. 330 X = 1: Y = 1
  16.  
  17. 395 GOSUB 1005
  18. 400 LE$ = SPACE$(9)
  19. 410 LM$ = "(I)/T\": ML$ = "(I)/T\ V "
  20. 420 FOR I = 1 TO YS
  21. 430 SP$ = LE$: GOSUB 1510
  22. 440 YV = YV + .9 / (ITER * ITER)
  23. 450 X = X + XV: Y = Y + YV
  24. 455 IF Y - YY > 2 THEN YY = Y: SOUND 200, .5: SOUND 2000, 1:  ELSE IF Y >= ROWS / 2.5 THEN GOSUB 1005 ELSE SOUND 40, .1
  25. 460 IF Y >= ROWS / 2.5 THEN SP$ = ML$ ELSE SP$ = LM$
  26. 470 GOSUB 1510
  27. 480 J = TIMER: WHILE TIMER - J < 1 / ITER: WEND
  28. 490 NEXT I
  29. 495 GOSUB 1005
  30. 500 SP$ = LE$: GOSUB 1510
  31. 510 X = LX: Y = LY
  32. 520 SP$ = LM$: GOSUB 1510
  33. 525 SOUND 2000, 5
  34. 530 COLOR 10: SP$ = "The Eagle has landed": LOCATE ROWS / 2, (COLS - LEN(SP$)) / 2: PRINT SP$
  35.  
  36. 999 END
  37.  
  38. 1005 FOR J = 0 TO 5: SOUND 2000, .1: SOUND 200, .1: NEXT
  39. 1015 RETURN
  40.  
  41. 1500 REM EkriirkE's Draw sprite in SP$ at X, Y
  42. 1510 IF Y < 1 OR Y > ROWS OR X < 1 OR X > COLS THEN RETURN
  43. 1520 FOR J = 1 TO LEN(SP$) STEP 3
  44. 1530 COLOR INT(16 - J / 2): LOCATE Y + J / 3, INT(X): PRINT MID$(SP$, J, 3)
  45. 1540 NEXT
  46. 1550 RETURN
  47.  
  48. 2500 REM EkriirkE's Draw lunar surface
  49. 2510 DEEP = 4: WIDE = 3: COLOR 7
  50. 2520 Y = INT(RND(1) * DEEP) + 1: PC = 0: LX = 0
  51. 2530 FOR I = 1 TO COLS
  52. 2540 OY = Y
  53. 2550 IF PC = 0 THEN Y = Y + SGN(INT(RND(1) * 7 - 3))
  54. 2560 IF Y < 1 THEN Y = 1
  55. 2570 IF Y > DEEP THEN Y = DEEP
  56. 2580 IF LI + 1 = I AND Y = OY THEN GOTO 2550
  57. 2590 IF Y > OY THEN LOCATE ROWS - Y + 1: PRINT "/";  ELSE LOCATE ROWS - Y
  58. 2600 IF Y < OY THEN PRINT "\";
  59. 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
  60. 2620 J = TIMER: WHILE TIMER - J < .05: WEND
  61. 2625 SOUND 40, .05
  62. 2630 NEXT
  63. 2640 IF LX = 0 THEN LX = COLS / 1.5
  64. 2650 RETURN
Add Comment
Please, Sign In to add comment