Dogfight


Up in the wild blue yonder, you and the enemy ace are duelling above the trenches. Swoop down on the foe, hang on his tail, catch him unawares from below, with your trusty Brownings spitting leaden death. All good clean fun, but watch for the wraparound!

    5  REM ** SOLO DOGFIGHT**BBC VERSION** CO
NVERTED BY I.THOMAS FROM ORIGINAL BY R.ERSKIN
E**
   10 GOSUB670
   20 GOSUB730
   30 MODE1:VDU17,130,12,28,4,27,35,4,29,128;
192;19,1,6;0;19,2,4;0;17,129,12
   40 GOSUB650
   50 IFP(3)=Q(3) AND P(4)=Q(4) GOTO420
   60 PRINTTAB(P(4),P(3))" "
   70 IFP(1)<21 COLOUR2:PRINTTAB(P(2),P(1))CH
R$(A+223):P(3)=P(1):P(4)=P(2)
   80 IFP(3)=Q(3) AND P(4)=Q(4) GOTO420
   90 PRINTTAB(Q(4),Q(3))" "
  100 IFQ(1)<21 COLOUR0:PRINTTAB(Q(2),Q(1))CH
R$(AA+231):Q(3)=Q(1):Q(4)=Q(2)
  110 IFINKEY(-102) AND G=1 F=1
  120 IF RND(1)>.5 AND G=-1 AND ABS(P(1)-Q(1)
)<7 AND ABS(P(2)-Q(2))<7 F=2
  130 IFINKEY(-66) AND G=1 A=A+1:IF A=9 A=1
  140 IF RND(1)>.9 AA=AA+1:IFAA=9 AA=1
  150 IFINKEY(-98) AND G=1 A=A-1:IFA=0 A=8
  160 IFRND(1)>.9 AA=AA-1:IFAA=0 AA=8
  170 IFF>0 GOSUB300
  180 P(1)=P(1)+D(A):P(2)=P(2)+D(A+8)
  190 Q(1)=Q(1)+E(AA):Q(2)=Q(2)+E(AA+8)
  200 IFP(1)>20 P(1)=0
  210 IFQ(1)>20 Q(1)=0
  220 IFP(1)<0 P(1)=20
  230 IFQ(1)<0 Q(1)=20
  240 IFP(2)>31 P(2)=0
  250 IFP(2)<0 P(2)=31
  260 IFQ(2)>31 Q(2)=0
  270 IFQ(2)<0 Q(2)=31
  280 G=-G
  290 GOTO50
  300 IFF=1 X=FNA(P(2)):Y=-FNB(P(1))
  310 IFF=2 X=FNA(Q(2)):Y=-FNB(Q(1))
  320 IFF=1 XX=F(A):YY=F(A+8)
  330 IFF=2 XX=G(AA):YY=G(AA+8)
  340 CNT=0
  350 IFX>247 OR X<8 OR Y<8 OR Y>175 GOTO410
  360 IF(F=1 AND POINT(X*4,Y*4)=0)OR(F=2 AND 
POINT(X*4,Y*4)=2) GOTO500
  370 IFCNT>0 GCOL0,0:PLOT69,X*4,Y*4
  380 CNT=CNT+1
  390 IFCNT>1 GCOL0,1:PLOT69,X*4,Y*4:X=X+XX:Y
=Y+YY
  400 IFCNT<6 GOTO350
  410 F=0:RETURN
  420 COLOUR3:PRINTTAB(P(4),P(3))"*"
  430 LIVES=LIVES-1:LIVES2=LIVES2-1
  440 FORI=1TO10:SOUND0,-15,4+(I)MOD3,1:NEXT
  450 IFLIVES=0 OR LIVES2=0 GOTO600
  460 PRINTTAB(P(4),P(3))" "
  470 A=1:AA=1:P(1)=20:P(2)=0:Q(1)=20:Q(2)=31
:P(3)=P(1):P(4)=P(2):Q(3)=Q(1):Q(4)=Q(2)
  480 GOSUB650
  490 GOTO50
  500 COLOUR3
  510 IFF=1 PRINTTAB(Q(2),Q(1))"*"
  520 IFF=2 PRINTTAB(P(2),P(1))"*"
  530 FORI=1TO10:SOUND0,-15,4+(I)MOD3,1:NEXT
  540 IFF=1 LIVES2=LIVES2-1:IFLIVES2=0 GOTO60
0
  550 IFF=2 LIVES=LIVES-1:IFLIVES=0 GOTO600
  560 IFF=1 Q(1)=20:Q(2)=31:AA=1
  570 IFF=2 P(1)=20:P(2)=31:A=1
  580 GOSUB650
  590 GOTO410
  600 COLOUR0:IFLIVES=0 AND LIVES2=0 PRINTTAB
(0,22)"The result is a draw."
  610 IFLIVES=0 AND LIVES2>0 PRINTTAB(0,22)"T
he computer wins."
  620 IFLIVES>0 AND LIVES2=0 PRINTTAB(0,22)"Y
ou are the winner."
  630 PRINTTAB(0,23)"Press SPACE to replay.";
  640 REPEATUNTILINKEY(-99):RUN
  650 PRINTTAB(0,21)"PLYR lives: ";LIVES;"   
  COMP. lives: ";LIVES2;
  660 RETURN
  670 MODE7:PRINTCHR$141;CHR$&86;SPC(10)"Solo
-Dogfight"'CHR$141;CHR$&86;SPC(10)"Solo-Dogfi
ght"
  680 PRINT''''CHR$&83"Player controls:"''CHR
$&85"  A...Up"'CHR$&85"  Z...Down"'CHR$&85"  
M...Fire"
  690 PRINT''CHR$&82"The player controls the 
blue aircraft"'CHR$&82"and the computer contr
ols the black."
  700 PRINTTAB(7,22)CHR$&81;CHR$136"Press SPA
CE to play."
  710 REPEATUNTILGET=32
  720 RETURN
  730 DIMP(4),Q(4),G$(2),D(16),E(16)
  740 G=1
  750 P(1)=20:Q(1)=20:Q(2)=31:P(3)=20:Q(3)=20
:Q(4)=20
  760 A=1:AA=1
  770 RESTORE:FORX=1TO16
  780   READD(X),E(X)
  790 NEXT
  800 DATA0,0,-1,-1,-1,-1,-1,-1,0,0,1,1,1,1,1
,1
  810 DATA1,-1,1,-1,0,0,-1,1,-1,1,-1,1,0,0,1,
-1
  820 F=0
  830 G$(1)=CHR$(223+A):G$(2)=CHR$(231+A)
  840 FORI=224TO239:VDU23,I:FORX=0TO7:READN:V
DUN:NEXT,
  850   DATA0,15,132,255,0,15,0,0
  860   DATA8,26,52,9,18,164,64,0
  870   DATA84,84,116,84,16,16,16,48
  880   DATA16,72,36,208,72,36,2,4
  890   DATA0,240,0,255,33,240,0,0
  900   DATA0,2,37,72,144,36,88,16
  910   DATA12,8,8,8,42,46,42,42
  920   DATA32,64,36,18,11,36,18,8
  930   DATA0,240,33,255,0,240,0,0
  940   DATA16,88,164,144,72,37,2,0
  950   DATA42,42,46,42,8,8,8,8
  960   DATA8,18,36,11,18,36,64,32
  970   DATA0,0,15,0,255,132,15,0
  980   DATA0,64,164,18,5,36,26,0
  990   DATA48,16,16,16,84,116,84,84
 1000   DATA4,2,36,72,208,36,72,16
 1010   LIVES=3:LIVES2=3
 1020   DEFFNA(X)=X*8+4
 1030   DEFFNB(X)=X*8-172
 1040   DIMF(16),G(16)
 1050   FORX=1TO16:READF(X):NEXT
 1060   DATA8,8,0,-8,-8,-8,0,8,0,8,8,8,0,-8,-
8,-8
 1070   FORX=1TO16:READG(X):NEXT
 1080   DATA-8,-8,0,8,8,8,0,-8,0,8,8,8,0,-8,-
8,-8
 1090   RETURN
 1100   DEFFNAT(X,Y)
 1110   A%=135:A%=USR&FFF4 AND&FFFF
 1120   =A% DIV256