home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib41b.dsk
/
LUNAR.LANDER.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
5KB
|
140 lines
10 REM *************************
20 REM * LUNAR LANDER *
30 REM * by Brent Iverson *
40 REM * Copyright (C) 1991 by *
50 REM * MindCraft Publ. Corp. *
60 REM * Lincoln, MA 01773 *
70 REM *************************
80 REM ---SET UP THE PROGRAM
90 PRINT CHR$(4);"BLOAD LANDER.SHAPES,A$1DFC"
100 POKE 232,252: POKE 233,29
110 GOSUB 1190: GOSUB 1090: GOSUB 1250
120 GOTO 220
130 REM ---AUTOPILOT ROUTINE
140 IF XV >1 THEN XV = XV -G
150 IF XV < -1 THEN XV = XV +G
160 IF YV > -.9 THEN YV = YV -C
170 IF X >140 THEN XV = XV -G/2
180 IF X <139 THEN XV = XV +G/2
190 RETURN
200 REM ---MAIN LOOP
210 REM ---READ THE KEYBOARD
220 I = PEEK( -16384): POKE -16368,0: IF I <127 THEN I = I1
230 I1 = I:ZZ = 0: IF FU < = 0 THEN I = 150
240 IF I = 155 AND EF = 1 THEN FU = FU -50:EC = 20:EF = 0:I1 = 0
250 IF I = 201 THEN YV = YV -C:FU = FU -CH:ZZ = 1
260 IF I = 202 THEN XV = XV -G:FU = FU -CH:ZZ = 1
270 IF I = 204 THEN XV = XV +G:FU = FU -CH:ZZ = 1
280 IF I = 172 THEN YV = YV +C:FU = FU -CH:ZZ = 1
290 IF I = 141 THEN GOSUB 140:FU = FU -(2 *CH):ZZ = 1
300 REM ---INCREMENT VARIABLES
310 YV = YV +G
320 X1 = X:Y1 = Y:X = X +XV:Y = Y +YV
330 REM ---MAKE ENGINE SOUND
340 IF ZZ THEN POKE 6,50: POKE 7,20: CALL 768
350 REM ---PRINT OUT STATUS
360 VTAB 21: HTAB 8: PRINT INT(152 -Y);" ";: HTAB 33: PRINT -YV;: CALL -868
370 VTAB 23: HTAB 8: PRINT FU;" ";: HTAB 33: PRINT INT(XV);: CALL -868
380 REM ---IS LANDER POSITION LEGAL?
390 IF X < = 5 THEN X = 5:XV = -XV
400 IF X > = 274 THEN X = 274:XV = -XV
410 IF Y < = 4 THEN Y = 4:YV = -YV
420 REM ---DRAW THE LANDER
430 XDRAW SH AT X1,Y1
440 IF I = 160 THEN GOSUB 960
450 XDRAW SH AT X,Y
460 REM ---DID LANDER DOCK OR LAND?
470 IF X >125 AND X <155 AND Y < = 9 THEN 810
480 IF Y > = 152 THEN GOTO 840
490 REM ---MOVE THE ALIEN
500 A1 = A:B1 = B
510 IF EC >0 THEN EC = EC -1: GOTO 570
520 IF A >X THEN A = A -AC
530 IF A <X THEN A = A +AC
540 IF Y <B THEN B = B -AC
550 IF Y >B THEN B = B +AC
560 REM ---DRAW THE ALIEN
570 XDRAW 2 AT A1,B1
580 XDRAW 2 AT A,B
590 REM ---IS ALIEN CLOSE TO LANDER?
600 IF (X -A <RA AND X -A > -RA) AND (Y -B <RA AND Y -B > -RA) THEN 640
610 GOTO 220
620 REM ---END OF MAIN LOOP
630 REM ---ROUTINE TO CRASH LANDER
640 XDRAW SH AT X,Y: XDRAW 2 AT A,B
650 POKE 6,255: POKE 7,5
660 FOR ZZ = 1 TO 8
670 FOR YY = 0 TO 48 STEP 16
680 ROT= YY
690 XDRAW 6 AT X,Y
700 CALL 768
710 NEXT
720 NEXT
730 HOME : VTAB 22: HTAB 17: PRINT "YOU LOSE !": FOR ZZ = 1 TO 1000: NEXT : GOTO 930
740 REM ---ROUTINE FOR PLAYER WINNING
750 POKE 7,30
760 FOR ZZ = 1 TO 40
770 POKE 6,ZZ: CALL 768
780 NEXT
790 INVERSE : HOME : VTAB 22: HTAB 17: PRINT "YOU WIN!": NORMAL : GOTO 930
800 REM ---ROUTINE TO CHECK IF PLAYER DOCKED
810 IF (YV < -1.5 OR X <137 OR X >143 OR FLG = 0) THEN 640
820 GOTO 750
830 REM ---ROUTINE TO CHECK IF PLAYER LANDED
840 IF YV >1 OR ABS(XV) >2 OR SH < >1 THEN GOTO 640
850 VTAB 22: HTAB 10: PRINT "LANDING ACCOMPLISHED";: POKE 7,30: FOR ZZ = 1 TO 60 STEP 2: POKE 6,ZZ: CALL 768: POKE 6,ZZ +100: CALL 768: NEXT : VTAB 22: HTAB 10: PRINT " ";
860 XV = 0
870 FLG = 1:YV = -4:SH = 3
880 XDRAW 1 AT X,Y
890 XDRAW SH AT X,Y -4: XDRAW 4 AT X,Y -1:Y = Y -4
900 I = 201
910 GOTO 250
920 REM ---ROUTINE TO SEE IF PLAYER WANTS TO PLAY AGAIN
930 VTAB 24: HTAB 5: PRINT "Would you like to play again?";: GOSUB 1030: IF I < >206 THEN 110
940 TEXT : HOME : NORMAL : POKE 216,0: POKE -16368,0: END
950 REM ---HYPERSPACE ROUTINE
960 IF RND(1) <.20 THEN XDRAW SH AT X,Y: GOTO 640
970 X = RND(1) *250 +10:Y = RND(1) *140 +10
980 POKE -16368,0
990 POKE 7,20: FOR ZZ = 40 TO 1 STEP -1: POKE 6,ZZ:: CALL 768: NEXT
1000 FU = FU -50:I1 = 0
1010 RETURN
1020 REM ---ROUTINE USED TO CHECK IF A KEY HAS BEEN PRESSED
1030 POKE -16368,0
1040 I = PEEK( -16384)
1050 IF I < = 127 THEN 1040
1060 HOME
1070 RETURN
1080 REM --------TITLES
1090 RESTORE : TEXT : HOME : NORMAL : VTAB 4: HTAB 14: INVERSE : PRINT "LUNAR LANDER"
1100 NORMAL : VTAB 6: HTAB (12): PRINT "by Brent Iverson": VTAB 10: HTAB 9: PRINT "Copyright (C) 1990 by": VTAB 11: HTAB 9: PRINT "MindCraft Publ. Corp."
1110 : VTAB 20: PRINT SPC( 6)"<PRESS ANY KEY TO CONTINUE>":
1120 GOSUB 1030
1130 HOME
1140 POKE -16368,0
1150 : VTAB 4: PRINT "DIFFICULTY LEVEL (1=EASY, 2=HARD): ";: GET A$
1160 AC = ASC(A$) -48: IF AC <1 OR AC >2 THEN 1130
1170 RETURN
1180 REM ---POKE IN SOUND ROUTINE
1190 FOR ZZ = 768 TO 781: READ YY: POKE ZZ,YY: NEXT
1200 DATA 166,7,164,6,173,48,192
1210 DATA 136,208,253,202,208,245,96
1220 REM
1230 RETURN
1240 REM ---SET UP HI-RES SCREEN, INITIALIZE VARIABLES, ETC.
1250 HGR : HCOLOR= 1
1260 X = 140:Y = 11:A = RND(1) *279:B = 159:YV = 2
1270 XV = 0:YV = 0
1280 ROT= 0: SCALE= 1
1290 C = .5:G = .25:RA = 10:FLG = 0:FU = 500:CH = 1:SH = 1:I1 = 0
1300 EF = 1:EC = 0
1310 HPLOT 0,159 TO 279,159
1320 FOR ZZ = 1 TO 100: HCOLOR= RND(1) *7: HPLOT RND(1) *279, RND(1) *159: NEXT
1330 HCOLOR= 3
1340 X1 = X:Y1 = Y: XDRAW SH AT X1,Y1
1350 DRAW 5 AT 140,0
1360 XDRAW 2 AT A,B
1370 VTAB 21: HTAB 1: PRINT "HEIGHT:"; SPC( 9);"VERTICAL VEL. :";
1380 VTAB 23: HTAB 1: PRINT "FUEL :"; SPC( 9);"HORIZONTAL VEL.:";
1390 POKE -16368,0
1400 RETURN