Dambusters


Dambusters is a game in which you have to defend a dam which is under attack from enemy aircraft, armed with bouncing bombs. Each bomb which is succeeds in hitting the dam will blow a section of it away until eventually the water pours through and the game is over.

Your defence consists of two beams guns which are mounted at each side of the dam and which fire converging ray beams at a target sight controlled by the player. Since the aircraft are out of range, you must aim at the bouncing bombs themselves by moving your sight up, down, right or left and then use the 9 key to fire. Unfortunately your beam weapons need to be recharged after every three firings and therefore accuracy is vital, especially as there is a strong wind which has a tendency to blow your sights off course!

    1 REM *** BBC VERSION ***
    2 REM *** DAMBUSTERS ***
   10  REM @ PAUL STANLEY
   20  HS=0
   30  CLS:MODE1:VDU23,1,0;0;0;0;
   40  GOSUB 630
   50  GOSUB560
   60  COLOUR3:PRINTTAB(4,5)"SCORE:0"
   70  PRINTTAB(24,5)"HI-SCORE:";HS
   80  COLOUR1:I=0:VDU31,4,25:REPEAT VDU154:I
=I+1:UNTILI=32:I=0:VDU31,4,26:REPEAT VDU154:I
=I+1:UNTILI=32
   90  COLOUR3:FORF=1TO50:VDU31,RND(32)+4,RND
(13)+5,153:NEXT
  100  GCOL0,2:G=0:FORF=1TO5:MOVE G*4+128,(15
+F)*4+160:DRAW(255-G)*4+128,(15+F)*4+160:G=G+
2:NEXT
  110  GCOL0,3:MOVE128,220:DRAW128,256:DRAW16
0,256:DRAW160,246:MOVE148,256:DRAW180,288:DRA
W184,284:DRAW160,252
  120  MOVE1152,220:DRAW1152,256:DRAW1120,256
:DRAW1120,246:MOVE1132,256:DRAW1100,288:DRAW1
096,284:DRAW1120,252
  130  MOVE256,246:DRAW620,352:DRAW1024,246
  140  D=1:S=0:A=1:P=16:Y=9
  150  X=RND(19)+6
  160 COLOUR1:FORF=1TO5STEP2:PRINTTAB(X+4,10)
MID$(B$,F,1);MID$(B$,F+1,1):SOUND2,-12,60+F*8
,4:FORBB=1TO1000:NEXT:PRINTTAB(X+4,10)MID$(B$
,F,1);MID$(B$,F+1,1):NEXT:VDU31,X+4,10,32,32
  170 FORF=1TO4:PRINTTAB(X+4,10-F)MID$(B$,5,1
);MID$(B$,6,1),TAB(X+4,10+F)CHR$(142):SOUND2,
-12,110-F*10,2:FORBB=1TO1000:NEXT:PRINTTAB(X+
4,10-F)MID$(B$,5,1);MID$(B$,6,1),TAB(X+4,10+F
)CHR$142:VDU31,X+4,10-F,32,32,31,X+4,10+F,32,
32:NEXT
  180 F=RND(25)+2:G=RND(11)+4
  190 A$=CHR$141+CHR$142+CHR$143+CHR$144+CHR$
145+CHR$146:HT=10
  200 *FX15,1
  210 PRINTTAB(X+4,Y+5)MID$(A$,A,1)
  220  KEY$=INKEY$(7)
  230  F=F-(KEY$="P" AND F<29)+(KEY$="O" AND 
F>2):G=G-(KEY$="A" AND G<15)+(KEY$="2" AND G>
1)
  240  COLOUR2:PRINTTAB(F+4,G+5)"+"
  250  LOSS=LOSS+LEEK
  260  IF LOSS>1000 THEN GOTO510
  270  IF KEY$="9" THEN IF S<3 THEN GOSUB380
  280  SOUND2,-12,70,2
  290 COLOUR1:PRINTTAB(X+4,Y+5)MID$(A$,A,1):V
DU31,X+4,Y+5,32
  300 PRINTTAB(F+4,G+5)"+":VDU31,F+4,G+5,32
  310  Y=Y+D
  320  IF RND(1)>.6 THEN F=F+INT(RND(1)*1.5)*
(F>2)-INT(RND(1)*1.5)*(F<29)
  330  IF RND(1)<.4 THEN G=G-INT(RND(1)*1.5)*
(G<15)+INT(RND(1)*1.5)*(G>1)
  340  IF Y=HT THEN P=P+1:D=1:A=A+1
  350  IF Y=P THEN SOUND3,-12,40,1:D=-1:HT=HT
-2
  360  IF A=7 THEN GOTO450
  370  GCOL0,3:MOVE256,246:DRAW620,352:DRAW10
24,246:GOTO210
  380  K=(21-G)*8-25:GCOL0,2:MOVE152,276:DRAW
144+F*32,276+K*4:FORBB=1TO200:NEXT:SOUND2,-12
,180,2.:GCOL0,0:MOVE152,276:DRAW144+F*32,276+
K*4
  390  S=S+1
  400  GCOL0,2:MOVE1124,276:DRAW144+F*32,K*4+
276:FORBB=1TO200:NEXT:SOUND2,-12,180,2.:GCOL0
,0:MOVE1124,276:DRAW144+F*32,K*4+276
  410  GCOL0,3:MOVE256,246:DRAW620,352:DRAW10
24,246
  420  IF G=Y THEN IF X=F THEN GOTO440
  430  RETURN
  440  SC=SC+10:COLOUR2:PRINTTAB(10,5);SC:VDU
31,F+4,G+5,148:FORBB=1TO4:SOUND BB-1,-13,20+B
B*50,2+BB*3:NEXT:VDU31,F+4,G+5,32:GOTO140
  450 FORBB=1TO4:SOUND BB-1,-13,20+BB*50,2+BB
*3:NEXT:X%=X+4:Y%=24:GOSUB760:IF C=32 THEN GO
TO470
  460 VDU31,X+4,24,32,32:GOTO140
  470  X%=X+4:Y%=25:GOSUB760:IFC<>154 THEN GO
TO500
  480  LEEK=LEEK+1
  490 COLOUR3:VDU31,X+4,25,32,31,X+4,26,147:G
OTO140
  500 COLOUR3:LEEK=LEEK+2:VDU31,X+3,24,32,32,
32,31,X+3,25,32,32,32,31,X+3,26,147,147,147:G
OTO140
  510  COLOUR1:PRINTTAB(9,15)"- G A M E  O V 
E R -",TAB(6,18)"Press any key to play again.
":FORJ=20TO120STEP5:SOUND2,-13,J,2:SOUND3,-13
,240-J,4:NEXT
  520  IFSC>HS THEN HS=SC
  530 *FX15,1
  540  G=GET:CLS:GOTO50
  550  END
  560  LOSS=0:SC=0:LEEK=0
  570  VDU23,141,0,0,0,16,0,0,0,0,23,142,0,0,
0,24,24,0,0,0,23,143,0,0,0,56,56,0,0,0,23,144
,0,0,0,60,60,60,0,0
  580  VDU23,145,0,0,126,126,126,126,0,0,23,1
46,0,0,254,254,254,254,254,0,23,147,73,146,73
,73,74,145,74,137
  590  VDU23,148,153,58,36,219,219,36,58,153,
23,149,0,0,0,8,62,0,0,0,23,150,0,0,24,255,66,
0,0,0,23,151,0,0,1,255,73,0,0,0,23,152,0,0,12
8,255,164,0,0,0,23,153,0,0,0,0,8,0,0,0
  600  VDU23,154,255,255,147,255,255,147,255,
255
  610  B$=CHR$(149)+CHR$(32)+CHR$(150)+CHR$(3
2)+CHR$(151)+CHR$(152)
  620  RETURN
  630  COLOUR1:VDU19,1,14,0,0,0: PRINTTAB(9,5
) "D A M B U S T E R S"
  640  MOVE288,829:DRAW896,829
  650  FORI=1TO80:SOUND2,-14,200-I,1.:NEXT:FO
RJ=6TO4STEP-1:SOUND0,-15,J,10-J:NEXT:VDU20
  660  COLOUR2:PRINTTAB(11,7) "@ Paul Stanley
."
  670  COLOUR3:VDU19,3,6,0,0,0:COLOUR3:PRINTT
AB(4,9)"THE YEAR IS 1943. YOU ARE IN",TAB(4,1
0)"CHARGE OF A POWERFUL BEAM WEAPON",TAB(4,11
)"WITH WHICH YOU ARE TO PROTECT",TAB(4,12)"A 
DAM FROM THE BOUNCING BOMBS OF"
  680  PRINTTAB(4,13)"THE BRITISH ATTACKERS. 
THEY HAVE",TAB(4,14)"SEVERAL LANCASTER BOMBER
S WHICH",TAB(4,15)"FLY TOWARDS YOU AND RELEAS
E",TAB(4,16)"THEIR DANGEROUS BOMBS."
  690  PRINTTAB(4,18)"HOWEVER, YOUR TASK IS N
OT ALL",TAB(4,19)"THAT SIMPLE FOR YOUR WEAPON
 IS",TAB(4,20)"UNABLE TO REACH THE LANCASTERS
",TAB(4,21)"SO YOU MUST JUST SHOOT AT THE"
  700  PRINTTAB(4,22)"BOMBS INSTEAD. YOUR CON
TROLS ARE:":COLOUR1:PRINTTAB(6,24)"UP AND DOW
N......2 AND A",TAB(6,25)"LEFT AND RIGHT...O 
AND P",TAB(6,26)"AND FIRE WITH....9"
  710  COLOUR2:PRINTTAB(5,29)"PRESS ANY KEY T
O CONTINUE":G=GET:CLS
  720  COLOUR3:PRINTTAB(4,7)"EVEN ADJUSTING T
HE SIGHTS IS":PRINTTAB(4,8)"DIFFICULT BECAUSE
 THERE IS A",TAB(4,9),"STRONG WIND WHICH CAUS
ES YOUR",TAB(4,10)"SIGHT TO MOVE ABOUT."
  730  COLOUR1:PRINTTAB(4,14)"BECAUSE OF THE 
POWER OF YOUR",TAB(4,15)"WEAPON AFTER 3 SHOTS
 IT IS ",TAB(4,16)"DRAINED OF POWER AND WILL 
ONLY",TAB(4,17)"BE READY BY THE NEXT TIME AN"
  740  PRINTTAB(4,18)"AEROPLANE ATTACKS. YOUR
 BATTLE",TAB(4,19)"IS OVER WHEN TOO MUCH WATE
R HAS",TAB(4,20)"POURED THROUGH THE BROKEN DA
M.":COLOUR2:PRINTTAB(5,23)"PRESS ANY KEY TO S
TART":G=GET:CLS
  750  RETURN
  760 VDU31,X%,Y%:C=USR(&FFF4):C=C AND &FFFF:
C=C DIV &100:RETURN