Option Explicit
Class clsCoppiaRuote
Public r1
Public r2
Public sRelazione
Function IsPresentiZerati(idEstr,n1,n2,p1,p2)
Dim k,q1,q2
q1 = 0
q2 = 0
For k = 1 To 5
If Estratto(idEstr,r1,k) Mod 10 = 0 Then
q1 = q1 + 1
n1 = Estratto(idEstr,r1,k)
p1 = k
End If
If Estratto(idEstr,r2,k) Mod 10 = 0 Then
q2 = q2 + 1
n2 = Estratto(idEstr,r2,k)
p2 = k
End If
Next
IsPresentiZerati =(q1 = 1 And q2 = 1)
End Function
Function IsPresentiGemelli(idEstr,n1,n2,p1,p2)
Dim k,q1,q2
q1 = 0
q2 = 0
For k = 1 To 5
If Gemello(Estratto(idEstr,r1,k)) Then
q1 = q1 + 1
n1 = Estratto(idEstr,r1,k)
p1 = k
End If
If Gemello(Estratto(idEstr,r2,k)) Then
q2 = q2 + 1
n2 = Estratto(idEstr,r2,k)
p2 = k
End If
Next
IsPresentiGemelli =(q1 = 1 And q2 = 1)
End Function
Function IsPresentiConsecutivi(idEstr,n1,n2,p1,p2)
Dim k,kk,q
q = 0
For k = 1 To 5
For kk = 1 To 5
If Estratto(idEstr,r2,kk) - Estratto(idEstr,r1,k) = 1 Then
n1 = Estratto(idEstr,r1,k)
n2 = Estratto(idEstr,r2,kk)
p1 = k
p2 = kk
q = q + 1
End If
Next
Next
IsPresentiConsecutivi =(q = 1)
End Function
Function IsDecinaUguale(idEstr,pp1,pp2,n1,n2,p1,p2)
Dim d1,d2
n1 = Estratto(idEstr,r1,pp1)
p1 = pp1
n2 = Estratto(idEstr,r2,pp2)
p2 = pp2
d1 = Int(n1/10)
d2 = Int(n2/10)
IsDecinaUguale =(d1 = d2)
End Function
End Class
Sub Main
Dim coll
Dim idEstr
Dim clsCoppia
Dim n1,n2,p1,p2
Dim bEsci
Dim nGiocata
Dim sTestoInfo
Dim nScelti,nSorte , nColpi
ReDim aNum(0)
nScelti = ScegliNumeri(aNum)
nSorte = ScegliEsito
nColpi = Int (InputBox("Colpi di gioco" , ,10))
nGiocata = 0
If nScelti > 0 And nSorte > 0 And nColpi >0 Then
Call AlimentaCoppieRuote(coll)
For idEstr = EstrazioneIni To EstrazioneFin
For Each clsCoppia In coll
If clsCoppia.IsPresentiZerati(idEstr,n1,n2,p1,p2) Then
If GiocaNumeri(idEstr,clsCoppia,"Zerati",n1,n2,p1,p2,sTestoInfo) Then
Call GestioneGioca(clsCoppia,idEstr,nGiocata,sTestoInfo,aNum,nSorte, nColpi)
End If
End If
If clsCoppia.IsPresentiGemelli(idEstr,n1,n2,p1,p2) Then
If GiocaNumeri(idEstr,clsCoppia,"Gemelli",n1,n2,p1,p2,sTestoInfo) Then
Call GestioneGioca(clsCoppia,idEstr,nGiocata,sTestoInfo,aNum,nSorte, nColpi)
End If
End If
If clsCoppia.IsPresentiConsecutivi(idEstr,n1,n2,p1,p2) Then
If GiocaNumeri(idEstr,clsCoppia,"Consecutivi",n1,n2,p1,p2,sTestoInfo) Then
Call GestioneGioca(clsCoppia,idEstr,nGiocata,sTestoInfo,aNum,nSorte , nColpi)
End If
End If
If clsCoppia.IsDecinaUguale(idEstr,1,5,n1,n2,p1,p2) Then
If GiocaNumeri(idEstr,clsCoppia,"Decine uguali in pos I° e V°",n1,n2,p1,p2,sTestoInfo) Then
Call GestioneGioca(clsCoppia,idEstr,nGiocata,sTestoInfo,aNum,nSorte, nColpi)
End If
End If
If clsCoppia.IsDecinaUguale(idEstr,5,1,n1,n2,p1,p2) Then
If GiocaNumeri(idEstr,clsCoppia,"Decine uguali in pos V° e 1°",n1,n2,p1,p2,sTestoInfo) Then
Call GestioneGioca(clsCoppia,idEstr,nGiocata,sTestoInfo,aNum,nSorte, nColpi)
End If
End If
Next
If bEsci Then Exit For
Next
Call ScriviResoconto
End If
End Sub
Sub AlimentaCoppieRuote(coll)
Dim k
Dim clsCoppia
Set coll = GetNewCollection
For k = 1 To 9 Step 3
Set clsCoppia = New clsCoppiaRuote
clsCoppia.sRelazione = "Consecutive"
clsCoppia.r1 = k
clsCoppia.r2 = k + 1
coll.add clsCoppia
Next
For k = 1 To 5
Set clsCoppia = New clsCoppiaRuote
clsCoppia.sRelazione = "Gemelle"
clsCoppia.r1 = k
clsCoppia.r2 = 11 - k
coll.add clsCoppia
Next
For k = 1 To 5
Set clsCoppia = New clsCoppiaRuote
clsCoppia.sRelazione = "Diametrali"
clsCoppia.r1 = k
clsCoppia.r2 = 5 + k
coll.add clsCoppia
Next
End Sub
Function GiocaNumeri(idEstr,clsCoppia,sCondizione,n1,n2,p1,p2,sTesto)
sTesto = "Nell'estrazione " & GetInfoEstrazione(idEstr) & " si è verificata la condizione " & sCondizione & vbCrLf
sTesto = sTesto & "Ruote " & SiglaRuota(clsCoppia.r1) & " - " & SiglaRuota(clsCoppia.r2) & vbCrLf
sTesto = sTesto & "Le ruote sono " & clsCoppia.sRelazione & vbCrLf
sTesto = sTesto & SiglaRuota(clsCoppia.r1) & " Num " & n1 & " pos " & p1 & vbCrLf
sTesto = sTesto & SiglaRuota(clsCoppia.r2) & " Num " & n2 & " pos " & p2 & vbCrLf
GiocaNumeri = True
End Function
Sub GestioneGioca(clsCoppia,idEstr,nGiocata,sTestoInfo,aNum,nSorte,nColpi)
ReDim aPoste(5)
ReDim aRuote(2)
Call Scrivi(String(80,"="))
Call Scrivi(sTestoInfo,,,,vbBlue)
Call Scrivi(String(80,"="))
Call Scrivi
nGiocata = nGiocata + 1
aPoste(nSorte) = 1
aRuote(1) = clsCoppia.r1
aRuote(2) = clsCoppia.r2
Call ImpostaGiocata(nGiocata,aNum,aRuote,aPoste,nColpi,nSorte)
Call Gioca(idEstr)
End Sub