home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-04-24 | 7.0 KB | 248 lines |
- 105 ' ********* BASIC version of RatBas program **********
- 110 DEFINT I-N
- 115 'this program was written by Michael and Lennie Heyman
- 120 'and translated to structured basic by Paul McKnight 3/1/83
- 125 '
- 130 'constants
- 135 CLASER$=" "
- 140 DEFINT A-H
- 145 DEFINT O-Z
- 150 '
- 155 GOTO 25000 ' jump to program
- 200 '----------------------- PROCEDURE NOISE
- 205 BOUNCE$="MBMLT255L64N20N25N30N35N40N45N50"
- 210 BOOM$="MBMLT255L64N1N0N1N0N1N0N1N0N1N0N1N0N1N0N1N0N1N0"
- 215 ZAP$="MBMLT255L64N72N71N70N69N68N67N66N65N64N63N62N61N60N59"
- 220 RETURN ' ------------------------------------------
- 225 '
- 300 '----------------------- PROCEDURE KEYSTOP
- 305 KEY(9) STOP
- 310 KEY(10) STOP
- 315 RETURN ' ------------------------------------------
- 320 '
- 400 '----------------------- PROCEDURE KEYON
- 405 KEY(9) ON
- 410 KEY(10) ON
- 415 RETURN ' ------------------------------------------
- 420 '
- 500 '----------------------- PROCEDURE PRINTSCORE
- 505 GOSUB 300 ' KEYSTOP
- 510 LOCATE 25,3
- 515 PRINT SCORE;
- 520 GOSUB 400 ' KEYON
- 525 RETURN ' ------------------------------------------
- 530 '
- 600 '----------------------- PROCEDURE COLLIDE
- 605 PLAY BOOM$
- 610 PLAY BOOM$
- 615 GOSUB 300 ' KEYSTOP
- 620 LOCATE Y,1:PRINT CHR$(219);:FOR T=1 TO 80:NEXT
- 625 LOCATE Y,2:PRINT CHR$(219);:FOR T=1 TO 80:NEXT
- 630 LOCATE Y,2:PRINT CHR$(178);:FOR T=1 TO 80:NEXT
- 635 LOCATE Y,1:PRINT CHR$(178);:FOR T=1 TO 80:NEXT
- 640 LOCATE Y,2:PRINT CHR$(177);:FOR T=1 TO 80:NEXT
- 645 LOCATE Y,1:PRINT CHR$(177);:FOR T=1 TO 80:NEXT
- 650 LOCATE Y,2:PRINT CHR$(176);:FOR T=1 TO 80:NEXT
- 655 LOCATE Y,1:PRINT CHR$(176);:FOR T=1 TO 80:NEXT
- 660 LOCATE Y,2:PRINT" ";
- 665 LOCATE Y,1:PRINT" ";
- 670 GOSUB 400 ' KEYON
- 675 RETURN ' ------------------------------------------
- 680 '
- 700 '----------------------- PROCEDURE CHECK
- 705 IF LANE(I)=Y THEN GOSUB 600 ' COLLIDE
- 710 SCORE=SCORE-50
- 715 GOSUB 300 ' KEYSTOP
- 720 LOCATE LANE(I),TIE(I):PRINT" ";
- 725 GOSUB 400 ' KEYON
- 730 LANE(I)=INT(22*RND)+2
- 735 TIE(I)=38
- 740 RETURN ' ------------------------------------------
- 745 '
- 800 '----------------------- PROCEDURE MOVESUN
- 805 COLOR 15
- 810 GOSUB 300 ' KEYSTOP
- 815 LOCATE Y,1
- 820 PRINT " ";
- 825 IF (UP=TRUE) AND (Y>2) THEN Y=Y-1
- 830 IF (UP=FALSE) AND (Y<23) THEN Y=Y+1
- 835 LOCATE Y,1:PRINT SUN$;
- 840 GOSUB 400 ' KEYON
- 845 COLOR 7
- 850 RETURN ' ------------------------------------------
- 855 '
- 900 '----------------------- PROCEDURE HIT
- 905 PLAY BOOM$
- 910 LOCATE V,H:PRINT CHR$(219);:FOR T=1 TO 80:NEXT
- 915 LOCATE V,H:PRINT CHR$(178);:FOR T=1 TO 80:NEXT
- 920 LOCATE V,H:PRINT CHR$(177);:FOR T=1 TO 80:NEXT
- 925 LOCATE V,H:PRINT CHR$(176);:FOR T=1 TO 80:NEXT
- 930 LOCATE V,H:PRINT" ";
- 935 SCORE=SCORE+TIE(K)
- 940 '
- 945 RETURN ' ------------------------------------------
- 950 '
- 1000 '----------------------- PROCEDURE LASER
- 1005 GOSUB 300 ' KEYSTOP
- 1010 PLAY ZAP$
- 1015 LOCATE Y,1:PRINT SUN$;
- 1020 COLOR 4:PRINT STRING$(7,205);
- 1025 COLOR 14:PRINT STRING$(7,205);
- 1030 COLOR 10:PRINT STRING$(7,205);
- 1035 COLOR 2:PRINT STRING$(6,205);
- 1040 COLOR 9:PRINT STRING$(6,205);
- 1045 COLOR 1:PRINT STRING$(6,205);
- 1050 COLOR 12
- 1055 LOCATE Y,1:COLOR 15:PRINT SUN$;:COLOR 7:PRINT CLASER$;
- 1060 SCORE=SCORE-5
- 1065 FOR K=1 TO NUMTIES
- 1070 IF Y=LANE(K) THEN ELSE GOTO 1095
- 1075 V=LANE(K):H=TIE(K)
- 1080 GOSUB 900 ' HIT
- 1085 LANE(K)=INT(22*RND)+2
- 1090 TIE(K)=38
- 1095 ' IFEnd]
- 1100 NEXT K
- 1105 GOSUB 400 ' KEYON
- 1110 RETURN ' ------------------------------------------
- 1115 '
- 1200 '----------------------- PROCEDURE REVERSE
- 1205 IF UP=TRUE THEN UP=FALSE ELSE UP=TRUE
- 1210 PLAY BOUNCE$
- 1215 RETURN ' ------------------------------------------
- 1220 '
- 1300 '----------------------- PROCEDURE SILENT
- 1305 BOUNCE$="":ZAP$="":BOOM$=""
- 1310 RETURN ' ------------------------------------------
- 1315 '
- 1400 '----------------------- PROCEDURE TIES
- 1405 FOR I=1 TO NUMTIES
- 1410 IF TIE(I)<3 THEN ELSE GOTO 1425
- 1415 GOSUB 700 ' CHECK
- 1420 GOTO 1450
- 1425 ' ELSE]
- 1430 TIE(I)=TIE(I)-1
- 1435 GOSUB 300 ' KEYSTOP
- 1440 LOCATE LANE(I),TIE(I): PRINT CHR$(232)+" ";
- 1445 GOSUB 400 ' KEYON
- 1450 ' IFEnd]
- 1455 NEXT I
- 1460 GOSUB 800 ' MOVESUN
- 1465 GOSUB 500 ' PRINTSCORE
- 1470 IF (TIME$>"00:00:50") AND (LASTTEN=FALSE) THEN ELSE GOTO 1490
- 1475 COLOR ,5,5
- 1480 CLS
- 1485 LASTTEN=TRUE
- 1490 ' IFEnd]
- 1495 RETURN ' ------------------------------------------
- 1500 '
- 1600 '----------------------- PROCEDURE SETNUM
- 1605 NUMTIES=0
- 1610 WHILE NUMTIES<1 OR NUMTIES>5
- 1615 CLS
- 1620 LOCATE 10,1
- 1625 PRINT " GOOB Version 1.10 (RatBAS) 3/19/83
- 1630 PRINT " How many tie fighters can you handle?"
- 1635 PRINT "1 to 5 ==>";
- 1640 NUM$=""
- 1645 WHILE NUM$=""
- 1650 NUM$=INKEY$
- 1655 WEND
- 1660 NUMTIES=VAL(NUM$)
- 1665 WEND
- 1670 CLS
- 1675 RETURN ' ------------------------------------------
- 1680 '
- 1700 '----------------------- PROCEDURE INIT
- 1705 OPTION BASE 1
- 1710 GOSUB 1600 ' SETNUM
- 1715 LASTEN=FALSE
- 1720 DIM TIE(NUMTIES)
- 1725 DIM LANE(NUMTIES)
- 1730 KEY 10,"": KEY 9,""
- 1735 KEY OFF
- 1740 TIME$="00:00:00"
- 1745 GOSUB 200 ' NOISE
- 1750 SCREEN 0,1
- 1755 LOCATE ,,0
- 1760 SUN$=CHR$(15)
- 1765 FOR L=1 TO NUMTIES
- 1770 LANE(L)=15:TIE(L)=38
- 1775 NEXT L
- 1780 Y=5
- 1785 UP=TRUE
- 1790 ON KEY(9) GOSUB 1200 ' REVERSE
- 1795 ON KEY(10) GOSUB 1000 ' LASER
- 1800 ON KEY(7) GOSUB 200 ' NOISE
- 1805 ON KEY(8) GOSUB 1300 ' SILENT
- 1810 KEY(7)ON:KEY(8)ON
- 1815 GOSUB 400 ' KEYON
- 1820 RETURN ' ------------------------------------------
- 1825 '
- 1900 '----------------------- PROCEDURE INSTR
- 1905 CLS
- 1910 PRINT " Do you want instructions?"
- 1915 WHILE INKEY$<>""
- 1920 WEND
- 1925 INS$=""
- 1930 WHILE INS$=""
- 1935 INS$=INKEY$
- 1940 WEND
- 1945 IF INS$="Y" OR INS$="y" THEN ELSE GOTO 2055
- 1950 CLS
- 1955 PRINT " INSTRUCTIONS for GOOB"
- 1960 PRINT
- 1965 PRINT " You are a sun shaped symbol that moves"
- 1970 PRINT " up and down along the left side of the"
- 1975 PRINT " screen. To change direction, press"
- 1980 PRINT " <F9>. Your goal is to shoot"
- 1985 PRINT " tie-fighters that come toward you from"
- 1990 PRINT " from the right side of the screen."
- 1995 PRINT " Fire your supercharged laser cannon by"
- 2000 PRINT " pressing <F10>. The closer your target"
- 2005 PRINT " the fewer points you get for hitting"
- 2010 PRINT " it. Every shot you fire costs you 5"
- 2015 PRINT " points. Every tie-fighter that hits"
- 2020 PRINT " the left side of the screen costs you"
- 2025 PRINT " 50 points. The game lasts one minute."
- 2030 PRINT "<F7> = sound. <F8> = silence."
- 2035 PRINT
- 2040 PRINT "Press <SPACE0BAR> to proceed..."
- 2045 WHILE INKEY$<>" "
- 2050 WEND
- 2055 ' IFEnd]
- 2060 CLS
- 2065 '
- 2070 RETURN ' ------------------------------------------
- 2075 '
- 25000 ' =================== PROCEDURE LOCATIONS ===========
- 25005 ' 200 NOISE
- 25010 ' 300 KEYSTOP
- 25015 ' 400 KEYON
- 25020 ' 500 PRINTSCORE
- 25025 ' 600 COLLIDE
- 25030 ' 700 CHECK
- 25035 ' 800 MOVESUN
- 25040 ' 900 HIT
- 25045 ' 1000 LASER
- 25050 ' 1200 REVERSE
- 25055 ' 1300 SILENT
- 25060 ' 1400 TIES
- 25065 ' 1600 SETNUM
- 25070 ' 1700 INIT
- 25075 ' 1900 INSTR
- 25080 ' ================== PROGRAM ========================
- 25085 FALSE = 0: TRUE = NOT FALSE
- 25090 GOSUB 1900 ' INSTR
- 25095 GOSUB 1700 ' INIT
- 25100 WHILE TIME$ < "00:01:00"
- 25105 GOSUB 1400 ' TIES
- 25110 WEND
- 25115 GOSUB 300 ' KEYSTOP
- 25120 COLOR 7,0,0
- 25125 CLS:LOCATE 10,25
- 25130 PRINT TIME$
- 25135 LOCATE 12,25
- 25140 PRINT SCORE
- 25145 END
-