Option Explicit
Sub Main
   Dim FIn,Es,Ini,R1,R2,Salvo50,Clp
   Dim Caso,Casi,P1,P2,A,B,C,D,E1,E2
   Dim PP1,PP2,DAB,DCD,DoA,DoB,DoC,DoD
   FIn = EstrazioneFin
   Ini = CInt(InputBox("Inserisci l'estrazione che vuoi iniziare",Salvo50,9542))'ESTRAZIONE 9542 ESEMPIO IN SPIEGAZIONI
   Clp = CInt(InputBox(" Per quanti colpi vuoi giocare?",Salvo50,20))
   Call ScegliRange(Ini,FIn,Ini,FIn)
   Scrivi Space(12) & "PER RAIMBOW58 - DOPPIO AMBO - SCRIPT SALVO50",1,,4,,3,,1
   For Es = Ini To FIn
      Messaggio Es
      AvanzamentoElab Ini,FIn,Es
      Caso = 0
      For R1 = 1 To 10
         For R2 = R1 + 1 To 12
            If R2 = 11 Then R2 = 12
            For P1 = 1 To 4
               For P2 = P1 + 1 To 5
                  A = Estratto(Es,R1,P1) : B = Estratto(Es,R1,P2)
                  C = Estratto(Es,R2,P1) : D = Estratto(Es,R2,P2)
                  DAB = Distanza(A,B) : DCD = Distanza(C,D)
                  DoA = Fuori90(A * 2) : DoB = Fuori90(B * 2)
                  DoC = Fuori90(C * 2) : DoD = Fuori90(D * 2)
                  If(DAB = 45) And((C = DoA Or C = DoB)Or(D = DoA Or D = DoB))_
                     Xor(DCD = 45) And((A = DoC Or A = DoD)Or(B = DoC Or B = DoD)) Then
                     '
                     Call AmboAmbataVersABC(DAB,DoA,DoB,Clp,Caso,Casi,Es,R1,R2,PP1,E1,A,B,PP2,E2,C)
                     Call AmboAmbataVersABD(DAB,DoA,DoB,Clp,Caso,Casi,Es,R1,R2,PP1,E1,A,B,PP2,E2,D)
                     Call AmbataAmboVersACD(DCD,DoC,DoD,Clp,Caso,Casi,Es,R1,R2,PP1,E1,A,PP2,E2,C,D)
                     Call AmbataAmboVersBCD(DCD,DoC,DoD,Clp,Caso,Casi,Es,R1,R2,PP1,E1,B,PP2,E2,C,D)
                     '
                  End If
               Next
            Next
         Next
      Next
      If ScriptInterrotto Then Exit Sub
   Next
   ScriviResoconto
End Sub
Sub AmboAmbataVersABC(DAB,DoA,DoB,Clp,Caso,Casi,Es,R1,R2,PP1,E1,A,B,PP2,E2,C)
   If DAB = 45 And(C = DoA Or C = DoB)Then
      Caso = Caso + 1 : Casi = Casi + 1
      Call Scrivi(String(89,"o") & " Casi Totali " & FormattaStringa(Casi,"0000"),1,,,1)
      Call Scrivi(String(80,"o") & " Estrazione " &(Es) & " caso " & FormattaStringa(Caso,"0000"),1,,,2)
      Call Scrivi(" Estrazione n." & Format2(Es) & " del " & DataEstrazione(Es),1,0)
      Call Scrivi("  " & SiglaRuota(R1) & " ",1,0)
      For PP1 = 1 To 5
         E1 = Estratto(Es,R1,PP1)
         If E1 = A Or E1 = B Then
            Call ColoreTesto(2)
         Else
            Call ColoreTesto(0)
         End If
         Call Scrivi(Format2(E1) & " ",1,0)
         Call ColoreTesto(0)
      Next
      Call Scrivi("  <-- Evidenziati Distanza 45",1)
      Call Scrivi(" Estrazione n." & Format2(Es) & " del " & DataEstrazione(Es),1,0)
      Call Scrivi("  " & SiglaRuota(R2) & " ",1,0)
      For PP2 = 1 To 5
         E2 = Estratto(Es,R2,PP2)
         If E2 = C Then
            Call ColoreTesto(2)
         Else
            Call ColoreTesto(0)
         End If
         Call Scrivi(Format2(E2) & " ",1,0)
         Call ColoreTesto(0)
      Next
      Call Scrivi()
      Call Scrivi()
      Dim ANum(3)
      ANum(1) = C
      ANum(2) = Fuori90(C * 2)
      ANum(3) = Diametrale(C)
      Scrivi Format2(ANum(1)) & " = Il doppio  di " & Format2(A) & " e " & Format2(B),1
      Scrivi Format2(ANum(2)) & " = Il doppio  di " & Format2(ANum(1)),1
      Scrivi Format2(ANum(3)) & " = Diametrale di " & Format2(C),1
      Call Scrivi()
      Call Giocata(ANum,R1,R2,Es,Clp)
   End If
End Sub
Sub AmboAmbataVersABD(DAB,DoA,DoB,Clp,Caso,Casi,Es,R1,R2,PP1,E1,A,B,PP2,E2,D)
   If DAB = 45 And(D = DoA Or D = DoB)Then
      Caso = Caso + 1 : Casi = Casi + 1
      Call Scrivi(String(89,"o") & " Casi Totali " & FormattaStringa(Casi,"0000"),1,,,1)
      Call Scrivi(String(80,"o") & " Estrazione " &(Es) & " caso " & FormattaStringa(Caso,"0000"),1,,,2)
      Call Scrivi(" Estrazione n." & Format2(Es) & " del " & DataEstrazione(Es),1,0)
      Call Scrivi("  " & SiglaRuota(R1) & " ",1,0)
      For PP1 = 1 To 5
         E1 = Estratto(Es,R1,PP1)
         If E1 = A Or E1 = B Then
            Call ColoreTesto(2)
         Else
            Call ColoreTesto(0)
         End If
         Call Scrivi(Format2(E1) & " ",1,0)
         Call ColoreTesto(0)
      Next
      Call Scrivi("  <-- Evidenziati Distanza 45",1)
      Call Scrivi(" Estrazione n." & Format2(Es) & " del " & DataEstrazione(Es),1,0)
      Call Scrivi("  " & SiglaRuota(R2) & " ",1,0)
      For PP2 = 01 To 05
         E2 = Estratto(Es,R2,PP2)
         If E2 = D Then
            Call ColoreTesto(2)
         Else
            Call ColoreTesto(0)
         End If
         Call Scrivi(Format2(E2) & " ",1,0)
         Call ColoreTesto(00)
      Next
      Call Scrivi()
      Call Scrivi()
      Dim ANum(3)
      ANum(1) = D
      ANum(2) = Fuori90(D * 2)
      ANum(3) = Diametrale(D)
      Scrivi Format2(ANum(1)) & " = Il doppio  di " & Format2(A) & " e " & Format2(B),1
      Scrivi Format2(ANum(2)) & " = Il doppio  di " & Format2(ANum(1)),1
      Scrivi Format2(ANum(3)) & " = Diametrale di " & Format2(D),1
      Call Scrivi()
      Call Giocata(ANum,R1,R2,Es,Clp)
   End If
End Sub
Sub AmbataAmboVersACD(DCD,DoC,DoD,Clp,Caso,Casi,Es,R1,R2,PP1,E1,A,PP2,E2,C,D)
   If DCD = 45 And(A = DoC Or A = DoD)Then
      Caso = Caso + 1 : Casi = Casi + 1
      Call Scrivi(String(89,"o") & " Casi Totali " & FormattaStringa(Casi,"0000"),1,,,1)
      Call Scrivi(String(80,"o") & " Estrazione " &(Es) & " caso " & FormattaStringa(Caso,"0000"),1,,,2)
      Call Scrivi(" Estrazione n." & Format2(Es) & " del " & DataEstrazione(Es),1,0)
      Call Scrivi("  " & SiglaRuota(R1) & " ",1,0)
      For PP1 = 1 To 5
         E1 = Estratto(Es,R1,PP1)
         If E1 = A Then
            Call ColoreTesto(2)
         Else
            Call ColoreTesto(0)
         End If
         Call Scrivi(Format2(E1) & " ",1,0)
         Call ColoreTesto(0)
      Next
      Call Scrivi()
      Call Scrivi(" Estrazione n." & Format2(Es) & " del " & DataEstrazione(Es),1,0)
      Call Scrivi("  " & SiglaRuota(R2) & " ",1,0)
      For PP2 = 01 To 05
         E2 = Estratto(Es,R2,PP2)
         If E2 = C Or E2 = D Then
            Call ColoreTesto(2)
         Else
            Call ColoreTesto(0)
         End If
         Call Scrivi(Format2(E2) & " ",1,0)
         Call ColoreTesto(0)
      Next
      Call Scrivi("  <-- Evidenziati Distanza 45",1)
      Call Scrivi()
      Dim ANum(3)
      ANum(1) = A
      ANum(2) = Fuori90(A * 2)
      ANum(3) = Diametrale(A)
      Scrivi Format2(ANum(1)) & " = Il doppio  di " & Format2(C) & " e " & Format2(D),1
      Scrivi Format2(ANum(2)) & " = Il doppio  di " & Format2(ANum(1)),1
      Scrivi Format2(ANum(3)) & " = Diametrale di " & Format2(A),1
      Call Scrivi()
      Call Giocata(ANum,R1,R2,Es,Clp)
   End If
End Sub
Sub AmbataAmboVersBCD(DCD,DoC,DoD,Clp,Caso,Casi,Es,R1,R2,PP1,E1,B,PP2,E2,C,D)
   If DCD = 45 And(B = DoC Or B = DoD)Then
      Caso = Caso + 1 : Casi = Casi + 1
      Call Scrivi(String(89,"o") & " Casi Totali " & FormattaStringa(Casi,"0000"),1,,,1)
      Call Scrivi(String(80,"o") & " Estrazione " &(Es) & " caso " & FormattaStringa(Caso,"0000"),1,,,2)
      Call Scrivi(" Estrazione n." & Format2(Es) & " del " & DataEstrazione(Es),1,0)
      Call Scrivi("  " & SiglaRuota(R1) & " ",1,0)
      For PP1 = 1 To 5
         E1 = Estratto(Es,R1,PP1)
         If E1 = B Then
            Call ColoreTesto(2)
         Else
            Call ColoreTesto(0)
         End If
         Call Scrivi(Format2(E1) & " ",1,0)
         Call ColoreTesto(0)
      Next
      Call Scrivi()
      Call Scrivi(" Estrazione n." & Format2(Es) & " del " & DataEstrazione(Es),1,0)
      Call Scrivi("  " & SiglaRuota(R2) & " ",1,0)
      For PP2 = 1 To 5
         E2 = Estratto(Es,R2,PP2)
         If E2 = C Or E2 = D Then
            Call ColoreTesto(2)
         Else
            Call ColoreTesto(0)
         End If
         Call Scrivi(Format2(E2) & " ",1,0)
         Call ColoreTesto(0)
      Next
      Call Scrivi("  <-- Evidenziati Distanza 45",1)
      Call Scrivi()
      Dim ANum(3)
      ANum(1) = B
      ANum(2) = Fuori90(B * 2)
      ANum(3) = Diametrale(B)
      Scrivi Format2(ANum(1)) & " = Il doppio  di " & Format2(C) & " e " & Format2(D),1
      Scrivi Format2(ANum(2)) & " = Il doppio  di " & Format2(ANum(1)),1
      Scrivi Format2(ANum(3)) & " = Diametrale di " & Format2(B),1
      Call Scrivi()
      Call Giocata(ANum,R1,R2,Es,Clp)
   End If
End Sub
Function Giocata(ANum,R1,R2,Es,Clp)
   Dim Ruo(2),Posta(3)
   Ruo(1) = R1 : Ruo(2) = R2
   Posta(2) = 1
   'Posta(3) = 1
   EliminaRipetuti ANum
   ImpostaGiocata 1,ANum,Ruo,Posta,Clp
   Gioca Es
End Function