Rem -------------------------------------------------------------
Rem
Rem                    BATAILLE-NAVALE  V1.10
Rem
Rem                     A Bonney    27-08-92
Rem
Rem                   Révisé les 06 & 07-12-97
Rem
Rem ----------------------- PRG PRINCIPAL -----------------------
Rem
Set Buffer 8
Load Iff Dir$+"Data/Tb_Présentation",0
Hide On
Led Off
Load Dir$+"Data/En_Mer.abk"
Music 1
Mvolume 32
Repeat
Until Mouse Key<>0
Screen Close 0
DEBUT:
Rem
Randomize Timer
Gosub INITIALISATION
Gosub AFFICHAGE
Rem
FUITE:
Rem
Screen 0
Shift Off
Screen 4
Cls
Hide On
Locate ,1
Centre Border$(" Le navire ennemi a réussi à vous distancer...  ",1)
Goto FIN
Rem
BATAILLEGAGNE:
Rem
Screen 0
Shift Off
Screen 4
Cls
Hide On
Locate ,1
Centre Border$(" Félicitations ! Vous avez coulé le bateau ennemi... ",1)
JEGAGNE=1
Goto FIN
Rem
EPAVE:
Rem
Shift Off
Screen 4
Cls
Hide On
Locate ,1
Centre Border$(" Les canots à la mer ! le navire est ingouvernable... ",1)
Goto FIN
Rem
MORT:
Rem
Shift Off
Screen 4
Cls
Hide On
Locate ,1
Centre Border$(" Il n'y a plus un homme vivant à bord ! Reste le chat... ",1)
Goto FIN
Rem
COULE:
Rem
Shift Off
Screen 4
Cls
Hide On
Locate ,1
Centre Border$(" Touché sous la ligne de flotaison ! Au canots... ",1)
Goto FIN
Rem
ECHOUAGE:
Rem
Shift Off
Screen 4
Cls
Hide On
Locate ,1
Centre Border$(" Votre adversaire s'est échoué sur une ile... ",1)
JEGAGNE=1
Goto FIN
Rem
CHOC:
Rem
Shift Off
Screen 4
Cls
Hide On
Locate ,1
Centre Border$(" Vous etes entré en collision avec l'autre vaisseau... ",1)
Goto FIN
Rem
NAUFRAGE:
Rem
Shift Off
Screen 4
Cls
Hide On
Locate ,1
Centre Border$(" Sauve qui peut ! Le navire s'est échoué sur une ile... ",1)
Rem
FIN:
Locate ,5
Centre Border$(" LA PARTIE EST TERMINEE ",1)
Music Off
Wait 50
If JEGAGNE=1
   Sam Play 1
Else
   Sam Play 2
End If
Wait 150
Screen 0
Fade 5
Wait 100
Reset Zone
Td Quit
Screen Close 0
Screen Close 1
Screen Close 2
Screen Close 3
Screen Close 4
Erase 3
Erase 5
Rem
End
Rem
Rem -------------------- INITIALISATION -------------------------
Rem
INITIALISATION:
Rem
Load Dir$+"Data/BatNavSamples.abk"
Screen Open 0,320,200,16,Lowres
Screen Hide 0
Td Clear All
Td Dir Dir$+"Data"
Td Load "bateau"
Td Load "ile1"
Td Load "boulet"
Td Load "explosion"
Double Buffer
Autoback 0
Load Iff Dir$+"Data/Ciel",1
Screen Hide 1
Load Iff Dir$+"Data/1°Plan",2
Screen Hide 2
Load Iff Dir$+"Data/Mer",3
Screen Hide 3
Screen Open 4,640,56,4,Hires
Screen Hide 4
Load Iff Dir$+"Data/Tb_Commandes",4
Screen Display 4,128,252,640,56
Screen 0
Get Palette(2)
Flash Off
Screen To Front 0
Td Screen Height 200
Limit Mouse 128,252 To 447,307
Reserve Zone 9
For Q=1 To 9
   Read XZ,YZ
   Set Zone Q,XZ,YZ To XZ+14,YZ+14
Next Q
Data 111,4,195,4,111,36,195,36,279,4,299,20,279,36,259,20,279,20
Td Move 0,0,45,0
Td Object 1,"boulet",0,45,0,0,0,0
Td Set Zone 0,0,0,0,0,200
HZ=Rnd(359)
Td Object 4,"bateau",3000*Sin(HZ),0,3000*Cos(HZ),0,HZ*182+32760,0
Td Set Zone 4,0,0,0,4,100
For Q=1 To 5
   HZ=Rnd(359)
   Td Object Q+6,"ile1",5000*Q*Sin(HZ),0,5000*Q*Cos(HZ),0,HZ*182,0
   Td Set Zone Q+6,0,0,0,Q+6,2000
Next Q
VB1=5
VIE2=100
HOMMES=100
VOILES=100
COQUE=100
MXBAD=100
Shift Up 30,4,6,1
VUE=1
Screen Show 0
Screen Show 4
Show On
Return
Rem
Rem ---------------------- AFFICHAGE -----------------------------
Rem
AFFICHAGE:
Rem
Do
   Inc BADABOUM
   If BADABOUM>MXBAD
      BADABOUM=MXBAD
   End If
   If BAOUM1>0
      Td Kill 3
      If BAOUM1=1
         Sam Play %1100,4
      Else
         Sam Play %1100,3
         If DEGATS2=1
            VIE2=VIE2-(1+Rnd(9))
            If VIE2<1
               VIE2=0
            End If
            Screen 4
            Hslider 219,23 To 419,31,100,VIE2,2
            Screen 0
            DEGATS2=0
         End If
      End If
      BAOUM1=0
   End If
   If BAOUM2>0
      Td Kill 6
      If BAOUM2=1
         Sam Play %1100,3
      Else
         BADABOUM=0
         Sam Play %1100,4
         If DEGATS1=1
            HOMMES=HOMMES-(5+Rnd(45))
            If HOMMES<1
               HOMMES=0
            End If
            VOILES=VOILES-(5+Rnd(45))
            If VOILES<1
               VOILES=0
            End If
            COQUE=COQUE-(5+Rnd(45))
            If COQUE<1
               COQUE=0
            End If
            Gosub AFFIDEG
            DEGATS1=0
         End If
      End If
      BAOUM2=0
   End If
   ANGB1=Td Bearing B(4,0)
   DR=Sgn(ANGB1)*182
   If DR=0 Then DR=-1
   If Td Bearing R(4,0)<5000
      Td Angle Rel 4,0,DR,0
   End If
   CAP2=Td Attitude B(4)-ANGB1
   If CAP2>65520
      CAP2=CAP2-65520
   End If
   If CAP2<0
      CAP2=CAP2+65520
   End If
   If Td Bearing R(4,0)<5000 and TIR2=0
      If CAP2>12190 and CAP2<20570 and BADABOUM=MXBAD
         TIR2=1
      End If
      If CAP2>44950 and CAP2<53330 and BADABOUM=MXBAD
         TIR2=1
      End If
      If TIR2=1
         BAOUM2=1
         BLX2=Td Position X(4)
         BLZ2=Td Position Z(4)
         Td Object 6,"explosion",BLX2,20,BLZ2,0,0,0
         Td Face 6,0
         Td Object 5,"boulet",BLX2,20,BLZ2,0,0,0
         Td Face 5,0
         Td Set Zone 5,0,0,0,5,10
      End If
   End If
   VMAX=Int((HOMMES+VOILES+COQUE)/30)
   If VB1>VMAX
      VB1=VMAX
      Gosub AFFIVB1
   End If
   VB2=Int(VIE2/20)
   Rem -------------------------------------------------------
   If Mouse Key
      CASE=Hzone(X Mouse,Y Mouse-200)
      If CASE=1
         If VB1>0
            Td Angle Rel 0,0,-182,0
            Td Angle Rel 1,0,-182,0
            Dec CAP
            If CAP<0
               CAP=CAP+360
            End If
            Gosub AFFICAP
         End If
      End If
      If CASE=2
         If VB1>0
            Td Angle Rel 0,0,182,0
            Td Angle Rel 1,0,182,0
            Inc CAP
            If CAP>359
               CAP=CAP-360
            End If
            Gosub AFFICAP
         End If
      End If
      If CASE=3
         Dec VB1
         If VB1<0
            VB1=0
         End If
         Gosub AFFIVB1
      End If
      If CASE=4
         Inc VB1
         If VB1>VMAX
            VB1=VMAX
         End If
         Gosub AFFIVB1
      End If
      If CASE=5
         VUE=1
         REGARD=0
      End If
      If CASE=6
         VUE=2
         REGARD=16380
      End If
      If CASE=7
         VUE=3
         REGARD=32760
      End If
      If CASE=8
         VUE=4
         REGARD=49140
      End If
      If CASE=9 and TIR1=0
         If VUE=2
            ANGTR1=CAP*182+16380
            TIR1=1
         End If
         If VUE=4
            ANGTR1=CAP*182-16380
            TIR1=1
         End If
         If TIR1=1
            BLX1=Td Position X(0)
            BLZ1=Td Position Z(0)
            BAOUM1=1
            Td Object 3,"explosion",BLX1,20,BLZ1,0,ANGTR1,0
            Td Forward 3,100
            Td Object 2,"boulet",BLX1,20,BLZ1,0,ANGTR1,0
            Td Set Zone 2,0,0,0,2,10
         End If
      End If
   End If
   If VIE2=0 Then Goto BATAILLEGAGNE
   If TIR1=1
      If BUT1>6
         BAOUM1=2
      End If
      If BUT1=4
         BAOUM1=2
         DEGATS2=1
      End If
      If Td Range(2,0)<5000
         Td Forward 2,200
      Else
         BAOUM1=2
      End If
      If BAOUM1=2
         TIR1=0
         BLX1=Td Position X(2)
         BLZ1=Td Position Z(2)
         Td Object 3,"explosion",BLX1,20,BLZ1,0,0,0
         Td Face 3,0
         Td Kill 2
      End If
   End If
   Rem -------------------------------------------------------
   If TIR2=1
      If BUT2=0
         BAOUM2=2
         DEGATS1=1
      End If
      If BUT2>6
         BAOUM2=2
      End If
      If Td Range(5,4)<5000
         Td Forward 5,200
      Else
         BAOUM2=2
      End If
      If BAOUM2=2
         TIR2=0
         BLX2=Td Position X(5)
         BLZ2=Td Position Z(5)
         Td Object 6,"explosion",BLX2,20,BLZ2,0,0,0
         Td Face 6,0
         Td Forward 6,-200
         Td Kill 5
      End If
   End If
   Rem -------------------------------------------------------
   Td Forward 1,VB1
   Td Move 0,Td Position X(1),45,Td Position Z(1)
   Td Angle 0,0,Td Attitude B(1)+REGARD,0
   Td Forward 4,VB2
   ANGVUE=CAP
   While ANGVUE>90
      ANGVUE=ANGVUE-90
   Wend
   Rem -------------------------------------------------------
   Td Cls
   If VUE=1 Then Td Background 2,0,0,320,99 To 0,100
   If VUE=4 Then Td Background 2,0,200,320,55 To 0,144
   If VUE=3 Then Td Background 2,0,100,320,99 To 0,100
   If VUE=2 Then Td Background 2,0,256,320,55 To 0,144
   Td Redraw
   Td Background 1,ANGVUE*3,0,320,100 To 0,0
   Td Background 3,0,0,320,100 To 0,100
   Screen Swap
   Wait Vbl
   Rem -------------------------------------------------------
   If COQUE=0 Then Goto COULE
   If VMAX=0 or VOILES=0 Then Goto EPAVE
   If HOMMES=0 Then Goto MORT
   If Td Collide(0)>6 Then Goto NAUFRAGE
   If Td Collide(0)=4 Then Goto CHOC
   If Td Collide(4)>6 Then Goto ECHOUAGE
   BUT1=-1
   If TIR1=1
      BUT1=Td Collide(2)
   End If
   BUT2=-1
   If TIR2=1
      BUT2=Td Collide(5)
   End If
   If Td Bearing R(4,1)>6000 and VB2>VMAX Then Goto FUITE
Loop
Return
Rem
Rem -------------------------------------------------------
Rem
AFFICAP:
Rem
Screen 4
Locate 43,1 : Print "   "
Locate 42,1 : Print CAP
Screen 0
Return
Rem
Rem -------------------------------------------------------
Rem
AFFIVB1:
Rem
Screen 4
Locate 44,5 : Print "  "
Locate 43,5 : Print VB1
Screen 0
Return
Rem
Rem -------------------------------------------------------
Rem
AFFIDEG:
Rem
Screen 4
Hslider 82,6 To 182,15,100,HOMMES,1
Hslider 82,22 To 182,31,100,VOILES,1
Hslider 82,38 To 182,47,100,COQUE,1
Screen 0
Return
