'Chiesto da Juri
'Script by Salvo50
Option Explicit
Sub Main()
Dim Ini,Fin,Es,R1,R2,E1,E2,Salvo50
Dim P1,P2,P3,P4,P5,P6,A,B,C,D,Manca
Dim Dac,Dad,Dbc,Dbd,M1,M2,M3,S1,S2,MM1,MM2
Dim Som1,Som2,Caso,Casi,Clp1,Clp2
Dim Ruote(2),Posta(2),Num(3)
Fin = EstrazioneFin
Posta(1) = 1
Posta(2) = 1
Clp1 = InputBox("Per quanti colpi vuoi giocare la terzina?",Salvo50,8)
Ini = InputBox("Da qual'è estrazione vuoi iniziare?",,9550)
Call ScegliRange(Ini,Fin,Ini,EstrazioneFin)
For Es = Ini To Fin
Caso = 0
Messaggio Es
AvanzamentoElab Ini,Fin,Es
For R1 = 1 To 10
For P1 = 1 To 4
For P2 = P1 + 1 To 5
For R2 = R1 + 1 To 12
If R2 = 11 Then R2 = 12
For P3 = 1 To 4
For P4 = P3 + 1 To 5
If P3 = P1 Or P3 = P2 Or P4 = P1 Or P4 = P2 Then
A = Estratto(Es,R1,P1)
B = Estratto(Es,R1,P2)
C = Estratto(Es,R2,P3)
D = Estratto(Es,R2,P4)
Dac = Differenza(A,C) : Dad = Differenza(A,D) : Dbc = Differenza(B,C) : Dbd = Differenza(B,D)
If((Dac = 30 Or Dac = 60)And B = D)Or((Dad = 30 Or Dad = 60)And B = C) _
Or((Dbc = 30 Or Dbc = 60)And A = D)Or((Dbd = 30 Or Dbd = 60)And A = C) Then
If(Dac = 30 Or Dac = 60) And B = D Then
If A > C And(A - C) = 60 Then Manca = Fuori90(A - 30)
If A > C And(A - C) = 30 Then Manca = Fuori90(A + 30)
If C > A And(C - A) = 60 Then Manca = Fuori90(C - 30)
If C > A And(C - A) = 30 Then Manca = Fuori90(C + 30)
Call Trova1(A,B,C,D,M1,M2,M3,MM1,MM2)
S1 = Space(8) & Format2(A) & Space(2) & Format2(C)
S2 = Space(8) & Format2(B) & Space(2) & Format2(D)
End If
'
If(Dad = 30 Or Dad = 60) And B = C Then
If A > D And(A - D) = 60 Then Manca = Fuori90(A - 30)
If A > D And(A - D) = 30 Then Manca = Fuori90(A + 30)
If D > A And(D - A) = 60 Then Manca = Fuori90(D - 30)
If D > A And(D - A) = 30 Then Manca = Fuori90(D + 30)
Call Trova1(A,B,C,D,M1,M2,M3,MM1,MM2)
S1 = Space(8) & Format2(A) & Space(2) & Format2(D)
S2 = Space(8) & Format2(B) & Space(2) & Format2(C)
End If
If(Dbc = 30 Or Dbc = 60) And A = D Then
If B > C And(B - C) = 60 Then Manca = Fuori90(B - 30)
If B > C And(B - C) = 30 Then Manca = Fuori90(B + 30)
If C > B And(C - B) = 60 Then Manca = Fuori90(C - 30)
If C > B And(C - B) = 30 Then Manca = Fuori90(C + 30)
Call Trova2(A,B,C,D,M1,M2,M3,MM1,MM2)
S1 = Space(8) & Format2(B) & Space(2) & Format2(C)
S2 = Space(8) & Format2(A) & Space(2) & Format2(D)
End If
If(Dbd = 30 Or Dbd = 60)And A = C Then
If B > D And(B - D) = 60 Then Manca = Fuori90(B - 30)
If B > D And(B - D) = 30 Then Manca = Fuori90(B + 30)
If D > B And(D - B) = 60 Then Manca = Fuori90(D - 30)
If D > B And(D - B) = 30 Then Manca = Fuori90(D + 30)
Call Trova2(A,B,C,D,M1,M2,M3,MM1,MM2)
S1 = Space(8) & Format2(B) & Space(2) & Format2(D)
S2 = Space(8) & Format2(A) & Space(2) & Format2(C)
End If
Scrivi
Caso = Caso + 1
Casi = Casi + 1
ColoreTesto 1
Scrivi String(89,"*") & " Casi Totali " & FormattaStringa(Casi,"0000")
ColoreTesto 2
Scrivi String(80,"*") & " Estrazione " &(Es) & " caso " & FormattaStringa(Caso,"0000")
ColoreTesto 0
Scrivi(" Estrazione n." & Format2(Es) & " del " & DataEstrazione(Es)),1,0
Scrivi " " & SiglaRuota(R1) & " ",1,0
For P5 = 1 To 5
E1 = Estratto(Es,R1,P5)
If E1 = A Or E1 = B Then
ColoreTesto 2
Else
ColoreTesto 0
End If
Scrivi Format2(E1) & " ",1,0
ColoreTesto 0
Next
Scrivi
Scrivi(" Estrazione n." & Format2(Es) & " del " & DataEstrazione(Es)),1,0
Scrivi " " & SiglaRuota(R2) & " ",1,0
For P6 = 1 To 5
E2 = Estratto(Es,R2,P6)
If E2 = C Or E2 = D Then
ColoreTesto 2
Else
ColoreTesto 0
End If
Scrivi Format2(E2) & " ",1,0
ColoreTesto 0
Next
Scrivi
Scrivi
Scrivi " Estratti con Distanza 30 o 60 " &(S1),1
Scrivi " Estratti con numeri uguali " &(S2),1
Scrivi
Scrivi " Numeri Mancanti per completare le terzine Simmetriche",1,0
Scrivi Space(5) & Format2(Manca) & " " & Format2(MM1) & " " & Format2(MM2)
Num(1) = Manca : Num(2) = MM1 : Num(3) = MM2
Ruote(1) = R1
Ruote(2) = R2
ImpostaGiocata 1,Num,Ruote,Posta,Clp1
Gioca Es
End If
End If
Next
Next
Next
Next
Next
Next
If ScriptInterrotto Then Exit Sub
Next
ScriviResoconto
End Sub
Function Trova1(A,B,C,D,M1,M2,M3,MM1,MM2)
If B < 31 Then M1 = B : M2 = B + 30 : M3 = B + 60 : MM1 = M2 : MM2 = M3
If B > 30 And B < 61 Then M1 = B - 30 : M2 = B : M3 = B + 30 : MM1 = M1 : MM2 = M3
If B > 60 Then M1 = B - 60 : M2 = B - 30 : M3 = B : MM1 = M1 : MM2 = M2
End Function
Function Trova2(A,B,C,D,M1,M2,M3,MM1,MM2)
If A < 31 Then M1 = A : M2 = A + 30 : M3 = A + 60 : MM1 = M2 : MM2 = M3
If A > 30 And A < 61 Then M1 = A - 30 : M2 = A : M3 = A + 30 : MM1 = M1 : MM2 = M3
If A > 60 Then M1 = A - 60 : M2 = A - 30 : M3 = A : MM1 = M1 : MM2 = M2
End Function