10 REM ******************* 20 REM Moonlander v1.1 30 REM By Tony Kingsmill 40 REM ******************* 50 REM NC100 Version 60 REM Downloaded from Tim's Amstrad NC Users' Site 70 SNDSTAT=1 80 SCORE=0 90 LEVEL=1:DIFF=5 100 GOSUB 820:REM TITLE 110 GOSUB 310 120 X=250 130 Y=60 140 B=-1 150 REPEAT 160 PLOT 4,X,Y:PLOT 5,X+3,Y+5:PLOT 5,X+6,Y:PLOT 5,X,Y 170 REM rec old co-ord 180 OX=X:OY=Y 190 Y=Y+B 200 FOR U=1 TO 150:NEXT 210 I$=INKEY$(0) 220 IF I$="Z" THEN X=X-2 230 IF I$="X" THEN X=X+2 240 IF I$="M" THEN Y=Y+2 250 PLOT 4,OX,OY:PLOT 7,OX+3,OY+5:PLOT 7,OX+6,OY:PLOT 7,OX,OY 260 P=POINT(X,Y-1):P2=POINT(X+6,Y-1) 270 IF P>0 OR P2>0 AND Y>OY THEN GOTO 560 280 UNTIL Y=2 290 GOTO 560 300 VDU 4:END 310 REM draw landscape 320 CLS 330 X=1:Y=10 340 PLOT 4,X,Y 350 REPEAT 360 R=INT(RND(DIFF)) 370 IF R=1 THEN GOSUB 460 ELSE GOSUB 490 380 UNTIL X>477 390 FOR X=1 TO 477 STEP 30 400 Y=0:REPEAT:PLOT 4,X,Y 410 Y=Y+1:P=POINT(X,Y) 420 PLOT 5,X,Y:UNTIL P=1 430 NEXT X 440 RETURN 450 REM draw a flat landscape 460 IF LEVEL>10 THEN X=X+INT(RND(5)+1) ELSE X=X+INT(RND(10)+1) 470 PLOT 5,X,Y 480 RETURN 490 REM draw slope 500 X=X+INT(RND(10)+1) 510 Y=Y+INT(RND(DIFF)-(DIFF/2)) 520 IF Y>50 THEN Y=25 530 IF Y<1 THEN Y=25 540 PLOT 5,X,Y 550 RETURN 560 REM detect land or crash 570 IF P=1 AND P2=1 THEN GOTO 690 580 REM crash 590 VDU 17 600 PRINT TAB(2,0);"C R A S H ! ! !" 610 PRINT TAB(2,1);"G A M E O V E R" 620 PRINT TAB(2,2);"SCORE: ";SCORE;" LEVEL:";LEVEL 630 PRINT TAB(2,3);"PRESS N TO RESTART GAME" 640 VDU 18 650 IF SNDSTAT=1 THEN GOSUB 1030 660 I$=GET$ 670 IF I$="N" THEN GOTO 80 680 GOTO 660 690 REM land safely 700 SCORE=SCORE+50 710 VDU 17:PRINT TAB(2,0);"S A F E L A N D I N G - WELL DONE!" 720 PRINT TAB(2,1);"LEVEL ";LEVEL;" COMPLETED" 730 PRINT TAB(2,2);"PRESS N FOR NEXT LANDING........." 740 LEVEL=LEVEL+1:DIFF=(LEVEL*3)+5 750 IF DIFF>100 THEN DIFF=100 760 IF SNDSTAT=1 THEN GOSUB 1130 770 LET N=0 780 REPEAT 790 I$=GET$ 800 UNTIL I$="N" 810 GOTO 110 820 REM titlescreen 830 VDU 5:CLS 840 FOR Y=0 TO 6 850 PRINT TAB(1,Y);"*" 860 PRINT TAB(79,Y);"*"; 870 NEXT Y 880 FOR X=1 TO 79 890 PRINT TAB(X,0);"*";:PRINT TAB(X,7);"*"; 900 NEXT X 910 VDU 17:PRINT TAB(30,2);"M O O N L A N D E R":VDU 18 920 PRINT TAB(28,3);"by Tony Kingsmill 2019" 930 PRINT TAB(21,4);"Controls: Z,X - left/right M - Thrust" 940 PRINT TAB(27,5);"Toggle Sound "; 950 IF SNDSTAT=1 THEN VDU 17:PRINT"(1)on ";:VDU 18:PRINT"(2)off" 960 IF SNDSTAT=2 THEN PRINT"(1)on ";:VDU 17:PRINT"(2)off":VDU 18 970 PRINT TAB(29,6);"Press S key to Start" 980 I$=GET$ 990 IF I$="1" THEN SNDSTAT=1:GOTO 830 1000 IF I$="2" THEN SNDSTAT=2:GOTO 830 1010 IF I$="S" THEN RETURN 1020 GOTO 980 1030 PLOT 4,X,Y:PLOT 5,X+1,Y+5:PLOT 4,X+6,Y:PLOT 5,X+5,Y+5 1040 SOUND 1,0,10,-1:SOUND 2,0,20,-1:FOR I=1 TO 500:NEXT 1050 PLOT 4,X,Y:PLOT 7,X+1,Y+5:PLOT 4,X+6,Y:PLOT 7,X+5,Y+5 1060 PLOT 4,X,Y:PLOT 5,X+3,Y+3:PLOT 4,X+6,Y:PLOT 5,X+3,Y+3 1070 SOUND 1,0,10,-1:SOUND 2,0,25,-1 1080 PLOT 4,X,Y:PLOT 7,X+3,Y+3:PLOT 4,X+6,Y:PLOT 7,X+3,Y+3 1090 PLOT 4,X,Y:PLOT 5,X+2,Y+1:PLOT 4,X+6,Y:PLOT 5,X+4,Y+1 1100 SOUND 1,0,5,-1:SOUND 2,0,8,-1:FOR I=1 TO 500:NEXT 1110 SOUND 1,0,0,0:SOUND 2,0,0,0 1120 RETURN 1130 PLOT 4,X,Y:PLOT 5,X+3,Y+5:PLOT 5,X+6,Y:PLOT 5,X,Y 1140 FOR Z=1 TO 10:PLOT 4,X+2,Y+6:PLOT 5,X+4,Y+6:SOUND 1,0,INT(RND(10)*100),1 1150 FOR V=1 TO 50:NEXT V:PLOT 4,X+2,Y+6:PLOT 7,X+4,Y+6:FOR V=1 TO 50:NEXT V 1160 NEXT Z 1170 SOUND 1,0,0,0:SOUND 2,0,0,0 1180 RETURN