10 REM *** City Bomber Pt2 *** 20 ON ERROR RUN 30 MODE1 40 50 PROCinitialise 60 PROCdrawscreen 70 REPEAT 80 PROConemove 90 UNTIL HOME OR CRASH 100 PROCendgame 110 CLS:GOTO60 120 130 DEF PROCinitialise 140 VDU28,0,31,39,3 150 VDU23,1,0;0;0;0; 160 PROCplace(2,5,"R E A D Y") 170 ENVELOPE2,4,0,0,0,1,1,1,126,-4,-1,-4,126,80 180 VDU23,227,3,7,207,191,191,207,7,3:VDU23,228,240,252,254,255,255,254,252,240 190 VDU19,0,0,0,0,0:REM Black 200 VDU19,1,2,0,0,0:REM Green 210 VDU19,3,1,0,0,0:REM Red 220 VDU19,2,3,0,0,0:REM Yellow 230 VDU23,226,255,255,231,231,231,231,255,255 240 VDU23,229,255,0,0,0,128,128,129,193 250 VDU23,230,255,15,15,63,127,255,254,254 260 VDU23,231,255,0,0,192,224,240,56,14 270 VDU23,232,195,255,199,195,129,128,128,0 280 VDU23,233,254,254,254,254,255,255,63,15 290 VDU23,234,7,7,6,12,252,248,240,192 300 VDU23,235,125,156,3,33,224,230,38,142 310 A$=CHR$(229)+CHR$(230)+CHR$(231):B$=CHR$(232)+CHR$(233)+CHR$(234) 320 C$=CHR$(227)+CHR$(228) 330 D$=CHR$(226)+CHR$(226) 340 E$=CHR$(235)+CHR$(235) 350 HOME=FALSE 360 CRASH=FALSE 370 DROP=FALSE 380 A%=-2:B%=3 390 DIM Zone(5,15),H(8),H$(8) 400 P%=0:Q%=0:S%=0 410 REPEAT 420 FOR Q%=0 TO 15 430 READ Zone(P%,Q%) 440 NEXT 450 P%=P%+1 460 UNTIL P%=6 470 DATA20,19,24,19,18,24,19,22,23,21,24,23,18,22,23,19 480 DATA19,23,22,16,15,18,16,20,17,16,17,15,18,18,24,19 490 DATA13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13 500 DATA13,24,13,24,13,24,13,24,13,24,13,24,13,24,13,24 510 DATA20,19,18,17,16,15,14,13,13,14,15,16,17,18,19,20 520 DATA10,11,12,13,14,15,16,17,17,16,15,14,13,12,11,10 530 P%=0 540 PROCplace(2,5," ") 550 ENDPROC 560 570 DEF PROConemove 580 PROCmoveship 590 FOR C%=0TO2 600 IF INKEY(-74) OR DROP=TRUE THEN PROCdropbomb ELSE PROCdelay(425) 610 NEXT 620 ENDPROC 630 640 DEF PROCmoveship 650 COLOUR2 660 A%=A%+2 670 IF FNC(A%+2,B%+4)=3 THEN CRASH=TRUE 680 PRINTTAB(A%-2,B%);SPC(4)TAB(A%-2,B%+1);SPC(4) 690 IF A%=36 THEN A%=0:B%=B%+2 700 IF B%=25 AND A%=0 THEN HOME=TRUE:GOTO 720 710 PRINTTAB(A%,B%)A$TAB(A%,B%+1)B$ 720 ENDPROC 730 740 DEF PROCdrawscreen 750 COLOUR130:COLOUR3 760 Q%=0 770 FORC%=4TO34STEP2 780 U%=Zone(P%,Q%) 790 PRINTTAB(C%,U%);D$ 800 IF U%<25 THEN U%=U%+1:GOTO790 810 Q%=Q%+1 820 NEXT 830 COLOUR1:COLOUR128 840 PRINTTAB(2,0)"Screen: ";P%+1:COLOUR3:PRINTTAB(16,0);"SCORE: ";S%:COLOUR2:PRINTTAB(30,0)"HIGH: ";H(1) 850 ENDPROC 860 870 DEF PROCdropbomb 880 IF DROP=TRUE THEN PROCbomb:ENDPROC 890 E%=A%+2:F%=B%+2 900 DROP=TRUE 910 ENDPROC 920 930 DEF PROCbomb 940 PROCdelay(300) 950 PRINTTAB(E%,F%);" " 960 COLOUR1 970 F%=F%+1:IF F%>25 THEN F%=25 980 PRINTTAB(E%,F%);C$ 990 IF FNC(E%,F%+4)=3 THEN PROCexplode 1000 IF F%=25 THEN PROCmissed 1010 ENDPROC 1020 1030 DEF PROCexplode 1040 COLOUR2 1050 IF F%=24 THEN F%=F%-1 1060 PRINTTAB(E%,F%)" "TAB(E%,F%+1)E$TAB(E%,F%+2)E$ 1070 SOUND0,-13,5,2 1080 COLOUR3 1090 S%=S%+10:PRINTTAB(23,0);SPC(4);TAB(23,0);S% 1100 DROP=FALSE 1110 PRINTTAB(E%,F%+1)" "TAB(E%,F%+2)" " 1120 ENDPROC 1130 1140 DEF PROCmissed 1150 COLOUR3 1160 DROP=FALSE 1170 S%=S%-5:IF S%<0 THEN S%=0 1180 PRINTTAB(23,0);SPC(4);TAB(23,0);S%;TAB(E%,F%);SPC(2) 1190 ENDPROC 1200 1210 DEF PROCdelay(delay%) 1220 FOR G%=0 TO delay%:NEXT 1230 ENDPROC 1240 1250 DEF PROCendgame 1260 IF HOME THEN PROCwelldone:GOTO 60 1270 PROCdeath 1280 PROCdelay(25000) 1290 PROChiscoretable 1300 ENDPROC 1310 1320 DEF PROCdeath 1330 SOUND0,2,6,10 1340 FORI%=0 TO 10 1350 VDU19,0,1,0;0 1360 VDU19,3,3,0;0 1370 VDU19,2,1,0;0 1380 PROCdelay(100) 1390 VDU19,0;0;0 1400 VDU19,3,1,0;0 1410 VDU19,2,3,0;0 1420 NEXT 1430 P%=0:A%=-2:B%=3:CRASH=FALSE:DROP=FALSE 1440 ENDPROC 1450 1460 DEF PROCwelldone 1470 RESTORE 1490 1480 PROCplace(6,8,"YOU DID IT! Now try THIS !") 1490 DATA129,9,117,4,121,4,129,9,101,9,121,4,129,4,137,4,145,4,149,4 1500 FOR G%=1TO10 1510 READW%,X%:SOUND1,-12,W%,X%:SOUND2,-12,W%,X%:SOUND3,-12,W%,X% 1520 NEXT 1530 HOME=FALSE:B%=3:A%=-2:P%=P%+1:DROP=FALSE 1540 PRINTTAB(6,8);SPC(27) 1550 IF P%=6 THEN P%=0 1560 ENDPROC 1570 1580 DEF FNC(A%,B%) 1590 A%=3+32*A% 1600 B%=1020-32*B% 1610 =POINT(A%,B%) 1620 1630 DEF PROChiscoretable 1640 LOCAL J,I%:J=1:I%=6:J$="" 1650 VDU23,1,0;0;0;0;:COLOUR2 1660 IF S%>=H(8) THEN PROCinscore 1670 CLS 1680 PROCplace(15,0,"City Bomber") 1690 PRINT 1700 PROCplace(13,3,"High Score Table ") 1710 REPEAT 1720 J$=H$(J):J%=H(J) 1730 PROCplace(9,I%,J$) 1740 PROCplaceS(24,I%,J%) 1750 J=J+1:I%=I%+2 1760 UNTIL J=9 1770 PROCplace(10,22,"Press SPACE to continue"):*FX 15 1780 Z$=GET$ 1790 S%=0 1800 ENDPROC 1810 1820 DEF PROCplaceS(X%,Y%,K%) 1830 PRINTTAB(X%,Y%)K% 1840 ENDPROC 1850 1860 DEF PROCplace(X%,Y%,K$) 1870 PRINTTAB(X%,Y%)K$ 1880 ENDPROC 1890 1900 DEF PROCinscore 1910 CLS:PROCplace(12,2,"Congratulations."):PROCplace(1,6,"You've made it to the HIGH SCORE TABLE.") 1920 LOCAL L$,M$:M$="":*FX 15 1930 REPEAT 1940 PROCplace(10,12,LEFT$(M$+STRING$(20,"."),20)) 1950 L$=GET$ 1960 IF L$>="A" AND L$<="Z" OR L$>="a" AND L$<="z" OR L$=" "THEN M$=M$+L$ 1970 IF ASC(L$)=127 AND M$<>"" THEN M$=LEFT$(M$,LEN(M$)-1) 1980 M$=LEFT$(M$,20):UNTIL ASC(L$)=13 1990 H$(8)=M$:H(8)=S% 2000 LOCAL L,V,V$:L=8 2010 IF H(L)