sergio1954
Member
Ottimo LuigiB
Io domani parto per il mare.
Quando torno a fine mese lo guardo con più calme .
Ciao
Sergio
Io domani parto per il mare.
Quando torno a fine mese lo guardo con più calme .
Ciao
Sergio
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Grazie per la risposta.
Io non sono un programmatore ,per la verita ho provato a ridurre da due a uno le ruote ,ma non parte ,perchè mi dice devi sciegliere due ruote.
Ma quando dici "tecnicamente possibile" cosa si deve cambiare?
Poi lo so che le regole del lotto sono contro il giocatore ,ma ogni tanto poter scoprire qualcosa di nuovo penso che sia un desiderio di tutti.
Ti saluto
Serpico 90
Option Explicit
Class clsGruppoCombInGioco
Private m_EstrazioneInizio
Private m_EstrazioneInizioGioco
Private collCombinazioni
Sub Class_Initialize
' codice
Set collCombinazioni = GetNewCollection
m_EstrazioneInizio = 0
m_EstrazioneInizioGioco = 0
End Sub
Sub Class_Terminate
' codice
' codice
End Sub
Public Property Get EstrazioneInizio
EstrazioneInizio = m_EstrazioneInizio
End Property
Public Property Let EstrazioneInizio(NewValue)
m_EstrazioneInizio = NewValue
End Property
Public Property Get EstrazioneInizioGioco
EstrazioneInizioGioco = m_EstrazioneInizioGioco
End Property
Public Property Let EstrazioneInizioGioco(NewValue)
m_EstrazioneInizioGioco = NewValue
End Property
Public Property Get Combinazioni
Set Combinazioni = collCombinazioni
End Property
Sub AddTripla(classeTripla)
collCombinazioni.Add classeTripla
End Sub
End Class
Class clsTripla
Dim cEstrazioniRitroso
Private aNumeri()
Private abNumInGioco()
Private m_Ruota
Private m_NumeroBase
Private m_PrimoNumeroTrovatoIndietro
Private m_IdEstrPrimoNumeroTrovatoIndietro
Private m_IdEstrEsito
Private m_NumUsciti
Private m_Scartata
Sub Class_Initialize
' codice
ReDim abNumInGioco(90)
m_IdEstrEsito = 0
m_NumUsciti = ""
m_PrimoNumeroTrovatoIndietro = ""
m_IdEstrPrimoNumeroTrovatoIndietro = 0
m_Scartata = False
cEstrazioniRitroso = 20
End Sub
Sub Class_Terminate
' codice
End Sub
Public Property Get Ruota
Ruota = m_Ruota
End Property
Public Property Let Ruota(NewValue)
m_Ruota = NewValue
End Property
Public Property Get NumeroBase
NumeroBase = m_NumeroBase
End Property
Public Property Let NumeroBase(NewValue)
m_NumeroBase = NewValue
End Property
Public Property Get Scartata
Scartata = m_Scartata
End Property
Public Property Let Scartata(NewValue)
m_Scartata = NewValue
End Property
Public Property Get IdEstrEsito
IdEstrEsito = m_IdEstrEsito
End Property
Public Property Get PrimoNumeroTrovatoIndietro
PrimoNumeroTrovatoIndietro = m_PrimoNumeroTrovatoIndietro
End Property
Public Property Get IdEstrPrimoNumeroTrovatoIndietro
IdEstrPrimoNumeroTrovatoIndietro = m_IdEstrPrimoNumeroTrovatoIndietro
End Property
Public Property Get NumUsciti
NumUsciti = m_NumUsciti
End Property
Public Property Get NumeriInGioco
NumeriInGioco = ArrayBToString(abNumInGioco)
End Property
Private Sub ArrayNumToArrayBNum(aNum,abRetNum)
Dim k
ReDim abRetNum(90)
For k = 1 To UBound(aNum)
abRetNum(aNum(k)) = True
Next
End Sub
Private Sub CopiaArray(aInput,aOutput)
Dim k
ReDim aOutput(UBound(aInput))
For k = LBound(aInput) To UBound(aInput)
aOutput(k) = aInput(k)
Next
End Sub
Private Function ArrayBToString(abNum)
Dim k
Dim s
s = ""
For k = LBound(abNum) To UBound(abNum)
If abNum(k) Then
s = s & Format2(k) & "."
End If
Next
If s <> "" Then
ArrayBToString = Left(s,Len(s) - 1)
Else
ArrayBToString = ""
End If
End Function
Sub SetNumeri(aNum)
Dim k
ReDim aNumeri(UBound(aNum))
For k = 1 To UBound(aNum)
aNumeri(k) = aNum(k)
Next
End Sub
Sub IndividuaCoppiaDaGiocare(idEstrInizio)
Dim k,e,nLottrone,nTrovati
ReDim abNum(90)
nTrovati = 0
m_PrimoNumeroTrovatoIndietro = ""
Call ArrayNumToArrayBNum(aNumeri,abNum)
For k = idEstrInizio - 1 To idEstrInizio - cEstrazioniRitroso Step - 1
For e = 1 To 5
nLottrone = Estratto(k,m_Ruota,e)
If nLottrone <> m_NumeroBase Then
If abNum(nLottrone) Then
abNum(nLottrone) = False
m_PrimoNumeroTrovatoIndietro = m_PrimoNumeroTrovatoIndietro & nLottrone & " "
m_IdEstrPrimoNumeroTrovatoIndietro = k
nTrovati = nTrovati + 1
End If
End If
Next
If nTrovati > 0 Then
Exit For
End If
Next
If nTrovati = 0 Then
' non ha trovato nessuno dei due
abNum(m_NumeroBase) = False
ElseIf nTrovati = 2 Then
' li ha trovati tutti e due nella stessa estr
ReDim abNum(90)
For k = 1 To UBound(aNumeri)
If aNumeri(k) <> m_NumeroBase Then
abNum(aNumeri(k)) = True
End If
Next
End If
Call CopiaArray(abNum,abNumInGioco)
End Sub
Sub Verifica(idEstr)
Dim e,nLottrone
m_NumUsciti = ""
For e = 1 To 5
nLottrone = Estratto(idEstr,m_Ruota,e)
If abNumInGioco(nLottrone) Then
m_NumUsciti = m_NumUsciti & nLottrone & " "
m_IdEstrEsito = idEstr
End If
Next
End Sub
Function GetNumeriInGioco(aRetNum)
Dim k,nTrov
ReDim aRetNum(0)
nTrov = 0
For k = 1 To 90
If abNumInGioco(k) Then
nTrov = nTrov + 1
ReDim Preserve aRetNum(nTrov)
aRetNum(nTrov) = k
End If
Next
End Function
End Class
Sub Main
Dim cColpiMax
Dim idEstr,e,k,nLottrone
Dim Inizio,Fine
Dim GruppoCombInGioco
Dim Tripla
Dim nColpi
Dim MatriceImporti
ReDim aRuote(0)
Dim nTipoAnalisi
Dim nGiocateTotali
Dim nEsitiPositivi
Call LeggiMatriceProgressione(MatriceImporti)
Inizio = EstrazioneIni
Fine = EstrazioneFin
nTipoAnalisi = ScegliTipoAnalisi
idEstr = Inizio
cColpiMax = 47
cColpiMax = Int(InputBox("Inserire i colpi di gioco da 1 a 47","Colpi",cColpiMax))
If nTipoAnalisi < 0 Or nTipoAnalisi > 1 Then
MsgBox "Tipo analisi non valido"
Exit Sub
End If
If cColpiMax <= 0 Or cColpiMax > 47 Then
MsgBox "Colpi massimi non validi"
Exit Sub
End If
If ScegliRuote(aRuote) = 1 Then
ReDim Preserve aRuote(1)
Do
If VerificaCadenzeDiverse(idEstr,aRuote) Then
Set GruppoCombInGioco = New clsGruppoCombInGioco
GruppoCombInGioco.EstrazioneInizio = idEstr
For k = 1 To UBound(aRuote)
For e = 1 To 5
nLottrone = Estratto(idEstr,aRuote(k),e)
Set Tripla = New clsTripla
ReDim aN(0)
Call GetTriplaCadenzaByNum(nLottrone,aN)
Call Tripla.SetNumeri(aN)
Tripla.Ruota = aRuote(k)
Tripla.NumeroBase = nLottrone
Call Tripla.IndividuaCoppiaDaGiocare(idEstr)
Call GruppoCombInGioco.AddTripla(Tripla)
Next
Next
Do
idEstr = idEstr + 1
For Each Tripla In GruppoCombInGioco.Combinazioni
If Tripla.Scartata = False Then
Call Tripla.Verifica(idEstr)
If Tripla.idEstrEsito <> 0 Then
Tripla.Scartata = True
End If
End If
Next
Loop While ContaCombSortite(GruppoCombInGioco) < 3
nGiocateTotali = nGiocateTotali + ContaCombNonSortite(GruppoCombInGioco)
GruppoCombInGioco.EstrazioneInizioGioco = idEstr + 1
nColpi = 0
Do
idEstr = idEstr + 1
For Each Tripla In GruppoCombInGioco.Combinazioni
If Tripla.idEstrEsito = 0 Then
Call Tripla.Verifica(idEstr)
If Tripla.idEstresito <> 0 Then
nEsitiPositivi = nEsitiPositivi + 1
End If
End If
Next
nColpi = nColpi + 1
If nColpi = cColpiMax Then Exit Do
Loop While ContaCombSortite(GruppoCombInGioco) < 5
Call ScriviProspetto(GruppoCombInGioco)
If nTipoAnalisi = 1 Then
Call GiocaCombinazioni(GruppoCombInGioco,cColpiMax,aRuote,MatriceImporti)
End If
Else
idEstr = idEstr + 1
End If
Call Messaggio("Estrazione " & idEstr)
Call AvanzamentoElab(Inizio,Fine,idEstr)
If ScriptInterrotto Then Exit Do
Loop While idEstr < Fine
Call Scrivi
Call Scrivi(String(100,"*"))
Call Scrivi("Giocate totali : " & nGiocateTotali)
Call Scrivi("Giocate con esito entro i colpi previsti : " & nEsitiPositivi & " (" & ProporzioneX(nEsitiPositivi,nGiocateTotali,100) & "%)")
Call Scrivi
Call Scrivi(String(100,"*"))
If nTipoAnalisi = 1 Then Call ScriviResoconto
Else
MsgBox "Il metodo prevede di selexionare 2 ruote"
End If
End Sub
Function ScegliTipoAnalisi
ReDim aV(2)
aV(0) = "Ricerca combinazioni"
aV(1) = "Ricerca combinazioni + Simulazione giocate"
ScegliTipoAnalisi = ScegliOpzioneMenu(aV,0)
End Function
Sub GetTriplaCadenzaByNum(n,aRetNum)
Dim k
ReDim aRetNum(3)
If n >= 1 And n <= 30 Then
aRetNum(1) = n
aRetNum(2) = n + 30
aRetNum(3) = n + 60
ElseIf n >= 31 And n <= 60 Then
aRetNum(1) = n - 30
aRetNum(2) = n
aRetNum(3) = n + 30
ElseIf n >= 61 And n <= 90 Then
aRetNum(1) = n - 60
aRetNum(2) = n - 30
aRetNum(3) = n
End If
End Sub
Function VerificaCadenzeDiverse(idEstr,aRuote)
Dim e,k,n,bRet,nLottrone
bRet = True
For k = 1 To UBound(aRuote)
ReDim ab(30)
For e = 1 To 5
nLottrone = Estratto(idEstr,aRuote(k),e)
ReDim aNum(0)
Call GetTriplaCadenzaByNum(nLottrone,aNum)
ab(aNum(1)) = True
Next
If ContaNumeriInArrayB(ab) <> 5 Then
bRet = False
Exit For
End If
Next
VerificaCadenzeDiverse = bRet
End Function
Function ContaNumeriInArrayB(aB)
Dim k,n
n = 0
For k = LBound(aB) To UBound(aB)
If aB(k) Then n = n + 1
Next
ContaNumeriInArrayB = n
End Function
Function ContaCombSortite(GruppoCombInGioco)
Dim tripla,n
n = 0
For Each tripla In GruppoCombInGioco.Combinazioni
If Tripla.IdEstrEsito <> 0 Then
n = n + 1
End If
Next
ContaCombSortite = n
End Function
Function ContaCombNonSortite(GruppoCombInGioco)
Dim tripla,n
n = 0
For Each tripla In GruppoCombInGioco.Combinazioni
If Tripla.IdEstrEsito = 0 Then
n = n + 1
End If
Next
ContaCombNonSortite = n
End Function
Sub ScriviProspetto(GruppoCombInGioco)
Dim Tripla
ReDim aV(12)
aV(1) = "Anno"
aV(2) = "N°Estr"
aV(3) = "Ruota"
aV(4) = "Numero Base"
aV(5) = "Uscite Prec"
aV(6) = "Coppia in gioco"
aV(7) = "Sortiti"
aV(8) = "N°Estr"
aV(9) = "Colpi"
aV(10) = "Inizio gioco"
aV(11) = "N°Estr"
aV(12) = "Colpi"
Call InitTabella(aV)
For Each Tripla In GruppoCombInGioco.Combinazioni
ReDim aV(12)
aV(1) = Anno(GruppoCombInGioco.EstrazioneInizio)
aV(2) = IndiceAnnuale(GruppoCombInGioco.EstrazioneInizio)
aV(3) = SiglaRuota(Tripla.Ruota)
aV(4) = Tripla.NumeroBase
aV(5) = Tripla.PrimoNumeroTrovatoIndietro
aV(6) = Tripla.NumeriInGioco
aV(7) = Tripla.NumUsciti
If Tripla.Scartata Then
aV(8) = IndiceAnnuale(Tripla.IdEstrEsito)
aV(9) =(Tripla.IdEstrEsito) - GruppoCombInGioco.EstrazioneInizio
Else
aV(10) = IndiceAnnuale(GruppoCombInGioco.EstrazioneInizioGioco)
If Tripla.IdEstrEsito > 0 Then
aV(11) = IndiceAnnuale(Tripla.IdEstrEsito)
aV(12) =(Tripla.IdEstrEsito + 1) - GruppoCombInGioco.EstrazioneInizioGioco
Else
aV(11) = "-"
aV(12) = "-"
End If
End If
Call AddRigaTabella(aV)
Next
Call CreaTabella
End Sub
Sub GiocaCombinazioni(GruppoCombInGioco,cColpiMax,aRuote,MatriceImporti)
Dim Tripla,k
ReDim aNumInGioco(1)
ReDim aRuota(1)
ReDim aPoste(1)
Dim idGiocata
ReDim aGiocateDaInterr(1)
For Each Tripla In GruppoCombInGioco.Combinazioni
If Tripla.Scartata = False Then
aRuota(1) = Tripla.Ruota
ReDim aNumInGiocoTmp(0)
Call Tripla.GetNumeriInGioco(aNumInGiocoTmp)
For k = 1 To UBound(aNumInGiocoTmp)
aNumInGioco(1) = aNumInGiocoTmp(k)
idGiocata = idGiocata + 1
If k = 1 Then
aGiocateDaInterr(1) = idGiocata + 1
ElseIf k = 2 Then
aGiocateDaInterr(1) = idGiocata - 1
End If
Call ImpostaGiocata(idGiocata,aNumInGioco,aRuota,aPoste,cColpiMax,1,,aGiocateDaInterr)
Call ImpostaProgressione(idGiocata,MatriceImporti)
Next
Call Gioca(GruppoCombInGioco.EstrazioneInizioGioco)
End If
Next
'Call Gioca(GruppoCombInGioco.EstrazioneInizioGioco)
End Sub
Sub LeggiMatriceProgressione(aProgressioni)
ReDim aProgressioni(10,255) ' preparo la matrice per leggere gli Importi di gioco
aProgressioni(1,1) = 1.00
aProgressioni(1,2) = 1.00
aProgressioni(1,3) = 1.00
aProgressioni(1,4) = 1.00
aProgressioni(1,5) = 1.50
aProgressioni(1,6) = 1.50
aProgressioni(1,7) = 2.00
aProgressioni(1,8) = 2.50
aProgressioni(1,9) = 3.00
aProgressioni(1,10) = 4.00
aProgressioni(1,11) = 4.50
aProgressioni(1,12) = 5.50
aProgressioni(1,13) = 7.00
aProgressioni(1,14) = 8.50
aProgressioni(1,15) = 10.50
aProgressioni(1,16) = 13.00
aProgressioni(1,17) = 16.00
aProgressioni(1,18) = 20.00
aProgressioni(1,19) = 24.50
aProgressioni(1,20) = 30.50
aProgressioni(1,21) = 37.50
aProgressioni(1,22) = 46.00
aProgressioni(1,23) = 57.00
aProgressioni(1,24) = 70.00
aProgressioni(1,25) = 86.50
aProgressioni(1,26) = 107.00
aProgressioni(1,27) = 132.00
aProgressioni(1,28) = 162.50
aProgressioni(1,29) = 200.50
aProgressioni(1,30) = 247.50
aProgressioni(1,31) = 305.50
aProgressioni(1,32) = 376.50
aProgressioni(1,33) = 464.50
aProgressioni(1,34) = 573.50
aProgressioni(1,35) = 707.50
aProgressioni(1,36) = 872.50
aProgressioni(1,37) = 1076.50
aProgressioni(1,38) = 1328.00
aProgressioni(1,39) = 1638.50
aProgressioni(1,40) = 2021.50
aProgressioni(1,41) = 2494.00
aProgressioni(1,42) = 3076.50
aProgressioni(1,43) = 3795.50
aProgressioni(1,44) = 4682.50
aProgressioni(1,45) = 5777.00
aProgressioni(1,46) = 7127.00
aProgressioni(1,47) = 8792.50
End Sub
Option Explicit
Class clsGruppoCombInGioco
Private m_EstrazioneInizio
Private m_EstrazioneInizioGioco
Private collCombinazioni
Sub Class_Initialize
' codice
Set collCombinazioni = GetNewCollection
m_EstrazioneInizio = 0
m_EstrazioneInizioGioco = 0
End Sub
Sub Class_Terminate
' codice
' codice
End Sub
Public Property Get EstrazioneInizio
EstrazioneInizio = m_EstrazioneInizio
End Property
Public Property Let EstrazioneInizio(NewValue)
m_EstrazioneInizio = NewValue
End Property
Public Property Get EstrazioneInizioGioco
EstrazioneInizioGioco = m_EstrazioneInizioGioco
End Property
Public Property Let EstrazioneInizioGioco(NewValue)
m_EstrazioneInizioGioco = NewValue
End Property
Public Property Get Combinazioni
Set Combinazioni = collCombinazioni
End Property
Sub AddTripla(classeTripla)
collCombinazioni.Add classeTripla
End Sub
End Class
Class clsTripla
Dim cEstrazioniRitroso
Private aNumeri()
Private abNumInGioco()
Private m_Ruota
Private m_NumeroBase
Private m_PrimoNumeroTrovatoIndietro
Private m_IdEstrPrimoNumeroTrovatoIndietro
Private m_IdEstrEsito
Private m_NumUsciti
Private m_Scartata
Sub Class_Initialize
' codice
ReDim abNumInGioco(90)
m_IdEstrEsito = 0
m_NumUsciti = ""
m_PrimoNumeroTrovatoIndietro = ""
m_IdEstrPrimoNumeroTrovatoIndietro = 0
m_Scartata = False
cEstrazioniRitroso = 20
End Sub
Sub Class_Terminate
' codice
End Sub
Public Property Get Ruota
Ruota = m_Ruota
End Property
Public Property Let Ruota(NewValue)
m_Ruota = NewValue
End Property
Public Property Get NumeroBase
NumeroBase = m_NumeroBase
End Property
Public Property Let NumeroBase(NewValue)
m_NumeroBase = NewValue
End Property
Public Property Get Scartata
Scartata = m_Scartata
End Property
Public Property Let Scartata(NewValue)
m_Scartata = NewValue
End Property
Public Property Get IdEstrEsito
IdEstrEsito = m_IdEstrEsito
End Property
Public Property Get PrimoNumeroTrovatoIndietro
PrimoNumeroTrovatoIndietro = m_PrimoNumeroTrovatoIndietro
End Property
Public Property Get IdEstrPrimoNumeroTrovatoIndietro
IdEstrPrimoNumeroTrovatoIndietro = m_IdEstrPrimoNumeroTrovatoIndietro
End Property
Public Property Get NumUsciti
NumUsciti = m_NumUsciti
End Property
Public Property Get NumeriInGioco
NumeriInGioco = ArrayBToString(abNumInGioco)
End Property
Sub SetNumeri(aNum)
Dim k
ReDim aNumeri(UBound(aNum))
For k = 1 To UBound(aNum)
aNumeri(k) = aNum(k)
Next
End Sub
Sub IndividuaCoppiaDaGiocare(idEstrInizio)
Dim k,e,nLottrone,nTrovati
ReDim abNum(90)
nTrovati = 0
m_PrimoNumeroTrovatoIndietro = ""
Call ArrayNumToArrayBNum(aNumeri,abNum)
For k = idEstrInizio - 1 To idEstrInizio - cEstrazioniRitroso Step - 1
For e = 1 To 5
nLottrone = Estratto(k,m_Ruota,e)
If nLottrone <> m_NumeroBase Then
If abNum(nLottrone) Then
abNum(nLottrone) = False
m_PrimoNumeroTrovatoIndietro = m_PrimoNumeroTrovatoIndietro & nLottrone & " "
m_IdEstrPrimoNumeroTrovatoIndietro = k
nTrovati = nTrovati + 1
End If
End If
Next
If nTrovati > 0 Then
Exit For
End If
Next
If nTrovati = 0 Then
' non ha trovato nessuno dei due
abNum(m_NumeroBase) = False
ElseIf nTrovati = 2 Then
' li ha trovati tutti e due nella stessa estr
ReDim abNum(90)
For k = 1 To UBound(aNumeri)
If aNumeri(k) <> m_NumeroBase Then
abNum(aNumeri(k)) = True
End If
Next
End If
Call CopiaArray(abNum,abNumInGioco)
End Sub
Sub Verifica(idEstr)
Dim e,nLottrone
m_NumUsciti = ""
For e = 1 To 5
nLottrone = Estratto(idEstr,m_Ruota,e)
If abNumInGioco(nLottrone) Then
m_NumUsciti = m_NumUsciti & nLottrone & " "
m_IdEstrEsito = idEstr
End If
Next
End Sub
Function GetNumeriInGioco(aRetNum)
Dim k,nTrov
ReDim aRetNum(0)
nTrov = 0
For k = 1 To 90
If abNumInGioco(k) Then
nTrov = nTrov + 1
ReDim Preserve aRetNum(nTrov)
aRetNum(nTrov) = k
End If
Next
End Function
End Class
Sub Main
Dim cColpiMax
Dim idEstr,e,k,nLottrone
Dim Inizio,Fine
Dim GruppoCombInGioco
Dim Tripla
Dim nColpi
Dim MatriceImporti
ReDim aRuote(0)
Dim nTipoAnalisi
Dim nGiocateTotali
Dim nEsitiPositivi
Dim nQCombDaAspettare
Dim nQRuoteDaUsare
Dim nCombMaxPossibili
Call LeggiMatriceProgressione(MatriceImporti)
Inizio = EstrazioneIni
Fine = EstrazioneFin
nTipoAnalisi = ScegliTipoAnalisi
nQRuoteDaUsare = Int(InputBox("Quante ruote usare","Quantità ruote","2"))
nCombMaxPossibili = nQRuoteDaUsare * 5 * 2
nQCombDaAspettare = Int(InputBox("Quante cmbinazioni aspettare su " & nCombMaxPossibili & " prima di giocare ?","Quantità combinazioni da aspettare",Int(nCombMaxPossibili /2)))
cColpiMax = 47
cColpiMax = Int(InputBox("Inserire i colpi di gioco da 1 a 47","Colpi",cColpiMax))
idEstr = Inizio
If nTipoAnalisi < 0 Or nTipoAnalisi > 1 Then
MsgBox "Tipo analisi non valido"
Exit Sub
End If
If cColpiMax <= 0 Or cColpiMax > 47 Then
MsgBox "Colpi massimi non validi"
Exit Sub
End If
If nQCombDaAspettare >= nCombMaxPossibili Then
MsgBox "Quantità di combinazioni da aspettare errata"
Exit Sub
End If
If nQRuoteDaUsare <= 0 Or nQRuoteDaUsare > 11 Then
MsgBox "Quantità di ruote errata"
Exit Sub
End If
If ScegliRuote(aRuote) = nQRuoteDaUsare Then
ReDim Preserve aRuote(nQRuoteDaUsare)
Do
If VerificaCadenzeDiverse(idEstr,aRuote) And VerificaFigureDiverse(idEstr,aRuote) Then
Set GruppoCombInGioco = New clsGruppoCombInGioco
GruppoCombInGioco.EstrazioneInizio = idEstr
For k = 1 To UBound(aRuote)
For e = 1 To 5
nLottrone = Estratto(idEstr,aRuote(k),e)
Set Tripla = New clsTripla
ReDim aN(0)
Call GetTriplaCadenzaByNum(nLottrone,aN)
Call Tripla.SetNumeri(aN)
Tripla.Ruota = aRuote(k)
Tripla.NumeroBase = nLottrone
Call Tripla.IndividuaCoppiaDaGiocare(idEstr)
Call GruppoCombInGioco.AddTripla(Tripla)
Set Tripla = New clsTripla
ReDim aN(0)
Call GetTriplaFiguraByNum(nLottrone,aN)
Call Tripla.SetNumeri(aN)
Tripla.Ruota = aRuote(k)
Tripla.NumeroBase = nLottrone
Call Tripla.IndividuaCoppiaDaGiocare(idEstr)
Call GruppoCombInGioco.AddTripla(Tripla)
Next
Next
Do
idEstr = idEstr + 1
For Each Tripla In GruppoCombInGioco.Combinazioni
If Tripla.Scartata = False Then
Call Tripla.Verifica(idEstr)
If Tripla.idEstrEsito <> 0 Then
Tripla.Scartata = True
End If
End If
Next
If idEstr >= Fine Then Exit Do
Loop While ContaCombSortite(GruppoCombInGioco) < nQCombDaAspettare
nGiocateTotali = nGiocateTotali + ContaCombNonSortite(GruppoCombInGioco)
GruppoCombInGioco.EstrazioneInizioGioco = idEstr + 1
nColpi = 0
Do
idEstr = idEstr + 1
For Each Tripla In GruppoCombInGioco.Combinazioni
If Tripla.idEstrEsito = 0 Then
Call Tripla.Verifica(idEstr)
If Tripla.idEstresito <> 0 Then
nEsitiPositivi = nEsitiPositivi + 1
End If
End If
Next
nColpi = nColpi + 1
If nColpi = cColpiMax Then
Exit Do
End If
If idEstr >= Fine Then Exit Do
Loop While ContaCombSortite(GruppoCombInGioco) < nCombMaxPossibili
If GruppoCombInGioco.EstrazioneInizioGioco > 0 Then Call ScriviProspetto(GruppoCombInGioco)
If nTipoAnalisi = 1 Then
If GruppoCombInGioco.EstrazioneInizioGioco > 0 Then
If idEstr <= Fine Then Call GiocaCombinazioni(GruppoCombInGioco,cColpiMax,aRuote,MatriceImporti)
End If
End If
Else
idEstr = idEstr + 1
End If
Call Messaggio("Estrazione " & idEstr)
Call AvanzamentoElab(Inizio,Fine,idEstr)
If ScriptInterrotto Then Exit Do
Loop While idEstr < Fine
Call Scrivi
Call Scrivi(String(100,"*"))
Call Scrivi("Giocate totali : " & nGiocateTotali)
Call Scrivi("Giocate con esito entro i colpi previsti : " & nEsitiPositivi & " (" & ProporzioneX(nEsitiPositivi,nGiocateTotali,100) & "%)")
Call Scrivi
Call Scrivi(String(100,"*"))
If nTipoAnalisi = 1 Then Call ScriviResoconto
Else
MsgBox "Il metodo prevede di selezionare " & nQRuoteDaUsare & "ruote"
End If
End Sub
Function ScegliTipoAnalisi
ReDim aV(2)
aV(0) = "Ricerca combinazioni"
aV(1) = "Ricerca combinazioni + Simulazione giocate"
ScegliTipoAnalisi = ScegliOpzioneMenu(aV,0)
End Function
Sub GetTriplaCadenzaByNum(n,aRetNum)
Dim k
ReDim aRetNum(3)
If n >= 1 And n <= 30 Then
aRetNum(1) = n
aRetNum(2) = n + 30
aRetNum(3) = n + 60
ElseIf n >= 31 And n <= 60 Then
aRetNum(1) = n - 30
aRetNum(2) = n
aRetNum(3) = n + 30
ElseIf n >= 61 And n <= 90 Then
aRetNum(1) = n - 60
aRetNum(2) = n - 30
aRetNum(3) = n
End If
End Sub
Sub GetTriplaFiguraByNum(n,aRetNum)
Dim k
ReDim aRetNum(3)
If n >= 1 And n <= 24 Then
aRetNum(1) = n
aRetNum(2) = n + 33
aRetNum(3) = n + 66
ElseIf n >= 25 And n <= 27 Then
aRetNum(1) = n
aRetNum(2) = n + 3
aRetNum(3) = n + 6
ElseIf n >= 28 And n <= 30 Then
aRetNum(1) = n - 3
aRetNum(2) = n
aRetNum(3) = n + 3
ElseIf n >= 31 And n <= 33 Then
aRetNum(1) = n - 6
aRetNum(2) = n - 3
aRetNum(3) = n
ElseIf n >= 34 And n <= 57 Then
aRetNum(1) = n - 33
aRetNum(2) = n
aRetNum(3) = n + 33
ElseIf n >= 58 And n <= 60 Then
aRetNum(1) = n
aRetNum(2) = n + 3
aRetNum(3) = n + 6
ElseIf n >= 61 And n <= 63 Then
aRetNum(1) = n - 3
aRetNum(2) = n
aRetNum(3) = n + 3
ElseIf n >= 64 And n <= 66 Then
aRetNum(1) = n - 6
aRetNum(2) = n - 3
aRetNum(3) = n
ElseIf n >= 67 And n <= 90 Then
aRetNum(1) = n - 66
aRetNum(2) = n - 33
aRetNum(3) = n
End If
End Sub
Function VerificaCadenzeDiverse(idEstr,aRuote)
Dim e,k,n,bRet,nLottrone
bRet = True
For k = 1 To UBound(aRuote)
ReDim ab(30)
For e = 1 To 5
nLottrone = Estratto(idEstr,aRuote(k),e)
ReDim aNum(0)
Call GetTriplaCadenzaByNum(nLottrone,aNum)
ab(aNum(1)) = True
Next
If ContaNumeriInArrayB(ab) <> 5 Then
bRet = False
Exit For
End If
Next
VerificaCadenzeDiverse = bRet
End Function
Function VerificaFigureDiverse(idEstr,aRuote)
Dim e,k,n,bRet,nLottrone
bRet = True
For k = 1 To UBound(aRuote)
ReDim ab(90)
For e = 1 To 5
nLottrone = Estratto(idEstr,aRuote(k),e)
ReDim aNum(0)
Call GetTriplaFiguraByNum(nLottrone,aNum)
ab(aNum(1)) = True
Next
If ContaNumeriInArrayB(ab) <> 5 Then
bRet = False
Exit For
End If
Next
VerificaFigureDiverse = bRet
End Function
Function ContaNumeriInArrayB(aB)
Dim k,n
n = 0
For k = LBound(aB) To UBound(aB)
If aB(k) Then n = n + 1
Next
ContaNumeriInArrayB = n
End Function
Function ContaCombSortite(GruppoCombInGioco)
Dim tripla,n
n = 0
For Each tripla In GruppoCombInGioco.Combinazioni
If Tripla.IdEstrEsito <> 0 Then
n = n + 1
End If
Next
ContaCombSortite = n
End Function
Function ContaCombNonSortite(GruppoCombInGioco)
Dim tripla,n
n = 0
For Each tripla In GruppoCombInGioco.Combinazioni
If Tripla.IdEstrEsito = 0 Then
n = n + 1
End If
Next
ContaCombNonSortite = n
End Function
Sub ScriviProspetto(GruppoCombInGioco)
Dim Tripla
ReDim aV(12)
aV(1) = "Anno"
aV(2) = "N°Estr"
aV(3) = "Ruota"
aV(4) = "Numero Base"
aV(5) = "Uscite Prec"
aV(6) = "Coppia in gioco"
aV(7) = "Sortiti"
aV(8) = "N°Estr"
aV(9) = "Colpi"
aV(10) = "Inizio gioco"
aV(11) = "N°Estr"
aV(12) = "Colpi"
Call InitTabella(aV)
For Each Tripla In GruppoCombInGioco.Combinazioni
ReDim aV(12)
aV(1) = Anno(GruppoCombInGioco.EstrazioneInizio)
aV(2) = IndiceAnnuale(GruppoCombInGioco.EstrazioneInizio)
aV(3) = SiglaRuota(Tripla.Ruota)
aV(4) = Tripla.NumeroBase
aV(5) = Tripla.PrimoNumeroTrovatoIndietro
aV(6) = Tripla.NumeriInGioco
aV(7) = Tripla.NumUsciti
If Tripla.Scartata Then
aV(8) = IndiceAnnuale(Tripla.IdEstrEsito)
aV(9) =(Tripla.IdEstrEsito) - GruppoCombInGioco.EstrazioneInizio
Else
aV(10) = IndiceAnnuale(GruppoCombInGioco.EstrazioneInizioGioco)
If Tripla.IdEstrEsito > 0 Then
aV(11) = IndiceAnnuale(Tripla.IdEstrEsito)
aV(12) =(Tripla.IdEstrEsito + 1) - GruppoCombInGioco.EstrazioneInizioGioco
Else
aV(11) = "-"
aV(12) = "-"
End If
End If
Call AddRigaTabella(aV)
Next
Call CreaTabella
End Sub
Sub GiocaCombinazioni(GruppoCombInGioco,cColpiMax,aRuote,MatriceImporti)
Dim Tripla,k
ReDim aNumInGioco(1)
ReDim aRuota(1)
ReDim aPoste(1)
Dim idGiocata
ReDim aGiocateDaInterr(1)
For Each Tripla In GruppoCombInGioco.Combinazioni
If Tripla.Scartata = False Then
aRuota(1) = Tripla.Ruota
ReDim aNumInGiocoTmp(0)
Call Tripla.GetNumeriInGioco(aNumInGiocoTmp)
For k = 1 To UBound(aNumInGiocoTmp)
aNumInGioco(1) = aNumInGiocoTmp(k)
idGiocata = idGiocata + 1
If k = 1 Then
aGiocateDaInterr(1) = idGiocata + 1
ElseIf k = 2 Then
aGiocateDaInterr(1) = idGiocata - 1
End If
Call ImpostaGiocata(idGiocata,aNumInGioco,aRuota,aPoste,cColpiMax,1,,aGiocateDaInterr)
Call ImpostaProgressione(idGiocata,MatriceImporti)
Next
'Call Gioca(GruppoCombInGioco.EstrazioneInizioGioco)
End If
Next
Call Gioca(GruppoCombInGioco.EstrazioneInizioGioco)
End Sub
Sub LeggiMatriceProgressione(aProgressioni)
ReDim aProgressioni(10,255) ' preparo la matrice per leggere gli Importi di gioco
aProgressioni(1,1) = 1.00
aProgressioni(1,2) = 1.00
aProgressioni(1,3) = 1.00
aProgressioni(1,4) = 1.00
aProgressioni(1,5) = 1.50
aProgressioni(1,6) = 1.50
aProgressioni(1,7) = 2.00
aProgressioni(1,8) = 2.50
aProgressioni(1,9) = 3.00
aProgressioni(1,10) = 4.00
aProgressioni(1,11) = 5.00
aProgressioni(1,12) = 6.50
aProgressioni(1,13) = 8.00
aProgressioni(1,14) = 10.00
aProgressioni(1,15) = 12.50
aProgressioni(1,16) = 16.00
aProgressioni(1,17) = 20.00
aProgressioni(1,18) = 25.00
aProgressioni(1,19) = 31.50
aProgressioni(1,20) = 39.50
aProgressioni(1,21) = 50.00
aProgressioni(1,22) = 62.50
aProgressioni(1,23) = 78.50
aProgressioni(1,24) = 99.00
aProgressioni(1,25) = 124.50
aProgressioni(1,26) = 156.50
aProgressioni(1,27) = 196.50
aProgressioni(1,28) = 247.00
aProgressioni(1,29) = 310.50
aProgressioni(1,30) = 390.50
aProgressioni(1,31) = 491.00
aProgressioni(1,32) = 617.50
aProgressioni(1,33) = 776.00
aProgressioni(1,34) = 975.50
aProgressioni(1,35) = 1226.50
aProgressioni(1,36) = 1542.00
aProgressioni(1,37) = 1938.50
aProgressioni(1,38) = 2437.00
aProgressioni(1,39) = 3064.00
aProgressioni(1,40) = 3852.00
aProgressioni(1,41) = 4843.00
aProgressioni(1,42) = 6088.50
aProgressioni(1,43) = 7654.50
aProgressioni(1,44) = 9623.00
aProgressioni(1,45) = 12098.00
aProgressioni(1,46) = 15210.00
aProgressioni(1,47) = 19122.00
End Sub
Professore, c'è un errore riga 215 : Call Tripla.IndividuaCoppiaDaGiocare(idEstr) errore 500, variabile non definita.....
io opero ancora con la versione 1.1.79
Ciao