Novità

Vi risulta che c'è un limite nel numero di colpi di gioco implementati nel programma?

Ciao claudio, GRAZIE 1000 però ancora non ho ben chiaro la cosa... :rolleyes:

1) Innanzi tutto dove è l'HELP che provo a leggermelo? :D

2) Mi spiegheresti elemento per elemento cosa significa questa tua modifica?

ImpostaGiocata 1,am,ruote,poste,ColpiDiGioco,2,,2

Grazie 1000 comunque :o

X L'Help vai all'icona con il punto interrogativo "?" tra la stella e la bacchetta magica sulla linea delle icone comandi di
spazioscript ( la pagina degli script) ti si aprirà un menù a tendina, ora scegli help.... quando avrai tempo, leggi anche
gli altri indirizzamenti, sevono ad imparare a fare gli script.
L'help è molto chiaro nello specificare tutti i parametri da dare alla "funzione" che intendi usare.
Inoltre, se poni il cursore subito dopo qualsiasi "funzione" e schiacci la barra spaziatrice, vedrai che ti si apre una linea
di suggerimento che ti da la possibilità di capire, spostando il cursore con le freccie in avanti ed indietro, in quale parametro
ti trovi con il cursore. ( ricordati di eliminare gli spazi che crei con la barra, potrebbero darti problemi.

Un consiglio importantissimo, usa sempre l'indentatura (autoformattazione del codice) solo in questo modo comincerai ad avere vhiara in fase di lettura il funzionamento del costrutto (insieme di righe di programma/script).
Non usare i " : " perchè poco funzionale per i principianti e per chi deve scrivere centinaia di righe di costrutto.
 
X Claudio.

Sono daccordo con te. La richiesta di Tom è chiarissima: "Esiste un limite?"

Le risposta sia mia, prima che di Luigi poi ... come peraltro dello stesso, Tom, che ha testato questa ipotesi è altrettanto chiara:

Si c'è un limite.

Luigi ha scritto che c'è ed è giusto che ci sia. Sono daccordo con lui ed'io ho ampiamente motivato il perchè del mio assenso.

Ho proposto alcune soluzioni efficaci ... ma subordinate alla richiesta. (Peraltro mutevole)

Quindi nella Terza richiesta, di questa sera, Tom ha modificato il quesito ... meglio specificando:

Quanti colpi servirebbero per avere la "certezza" di risultato dell' 89%?

Qui le risposte sono 2. Una puramente Statistica ed una seconda, più materiale, legata al conteggio ...

La formulazione di un dato di ipotesi statistica mi alletterebbe di più.

Quella di conteggio ... per quanto tu dica sbagliata la mia soluzione è già li con tutti i dati per computarla.

Come ho scritto non l'ho fatto ... ma ...

Per ambo le soluzioni c'è un numero "che" risponde e soddisfa il quesito.

Penso, anche, sia molto simile al vero risultato del conteggio.

Ti lascio l'onore di soddisfare la sua richiesta.

:) Cordiali saluti
 
In sostanza anche con l'ultima soluzione i colpi massimi sembrerebbero restare 255... almeno nel

resoconto...

Infatti nell'ultima riga del resoconto leggo ancora : In corso per altre 255 estrazioni

mentre dovrei visualizzare per intenderci... (ad es.) In corso per altre 350 estrazioni nell'ultima

riga dello stesso...

Comunque fa nulla :p a quanto pare questo blocco di 255 colpi non bisogna sorpassarlo nemmeno in via

del tutto teorica... ;) Ciao :D

Non guardare ciò che leggi, in maniera superficiale.

A me lo script si conclude con:

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Caso n°1001
02.09.2014 -- BA - 72.81.35.85.71 -- BA - 72.81.35.85.71 ** Previsione : Ambate 52 - 25 *** X Ambo 2 - 20
---------------------------------------------------------------------- sommare 255 in caso di non esito alla 1a giocata
Estrazione generatrice del pronostico 08895 [105 - 02/09/2014]
G 0001
Numeri in gioco : 52.25.02.20 su BA per Ambo
In corso per altre 254 estrazioni
G 0002
Numeri in gioco : 52.25.02.20 su BA per Ambo
In corso per altre 255 estrazioni

****************************************************************************************************
casi trovati : 1001

Quindi relativamente a questo ultimo 101° caso tu hai in corso 244 della giocata 1, e 255 della giocata 2 sempre per gli stessi numeri ( totale colpi impostati sono 255X2= 510)

Lo script per ovviare al limite di 255 opera con 2 giocate separate entrambe di 255 colpi quindi per un totale di 510 colpi per la stessa quartina. Se vuoi avere il limite di 300 colpi, inserisci nell'inbut box- colpi il valore 150 e lo script ti eleborerà tutto con max 300 colpi giocabili.
Se non sono stato chiari chedi.
Ciao
 
Ultima modifica:
Eccoti raggirato il n° colpi in inputbox .


Codice:
Sub Main
	Dim idEstr
	Dim Inizio
	Dim Fine
	Dim ruote(2)
	Dim posta(1)
	Dim poste(2)
	Dim Analisi
	Dim ColpiDiGioco
	Dim n(2)
	Dim am(4)
	posta(1) = 1
	poste(2) = 1
	Analisi = CInt(InputBox(" Quante estrazioni vuoi controllare ? ",,"1000"))
	Colpi = CInt(InputBox(" Per quanti colpi di gioco? ", "Max 510 solo numero pari ","300"))
	ColpiDiGioco =(colpi/2)
	Inizio = EstrazioneFin - Analisi
	Fine = EstrazioneFin
	co = 0
	For idEstr = Inizio To Fine
		Messaggio "elab. estr. [" &(idEstr) & "] di " & DataEstrazione(idEstr,1)
		Call AvanzamentoElab(Inizio,Fine,idEstr)
		ruote(1) = 1
		ruote(2) = 1
		a = Estratto(idEstr,1,1)
		b = Estratto(idEstr,2,1)
		c = Differenza(a,b)
		n(1) = c
		n(2) = Vert(n(1))
		am(1) = n(1)
		am(2) = n(2)
		am(3) = Fuori90(a + b)
		am(4) = Vert(am(3))
		co = co + 1
		Scrivi String(110,"°") & " Caso n°" & co,1
		Scrivi DataEstrazione(idEstr) & " -- " & SiglaRuota(1) & " - " & StringaEstratti(idEstr,1) & " -- " & SiglaRuota(1) & " - " & StringaEstratti(idEstr,1) & " ** " & " Previsione :  Ambate " & n(1) & " - " & n(2) & "  ***  X Ambo " & am(3) & " - " & am(4),1
		ColoreTesto 3 
		Scrivi String(2,"-") & "In caso di non esito alla 1a giocata, per conoscere il coplo d'esito effetivo, sommare " & ColpiDiGioco & " all'esito della 2a giocata",1
		ColoreTesto 0
		ImpostaGiocata 1,am,ruote,poste,ColpiDiGioco,2,,2
		ImpostaGiocata 2,am,ruote,poste,ColpiDiGioco,2,ColpiDiGioco
		Gioca idEstr,1,,1
	Next
	Scrivi
	Scrivi String(100,"*")
	ColoreTesto 2
	Scrivi" casi trovati : " & co,1
	ColoreTesto 0
	Scrivi String(100," * ")
	ScriviResoconto

End Sub
 
Ultima modifica:
ragazzi faccio un po' di chiarezza su sta faccenda dei 255 colpi , in realtà lo scopo non è quello di impedire ad un giocatore di giocare per piu di 255 colpi ... se ha i pozzi di petrolio o è un sultano per me lo potrebbe fare tranquillamente.
Il problema è semplicemente tecnico , quando si scrive un programma si deve pensare alle strutture dati che servono per immagazinare le informazioni, ora quando si pensa a queste strutture bisogna sempre tenere presente che le risorse di un computer non sono infinite, 255 è il valore massimio che puo contenere una variabile di un solo byte ovvero la piu piccola variabile dichiarabile in vb6.
Ora questa variabile di tipo byte è utilizzata internamente al programma per conteggiare i colpi dato che un byte è composto da 8 bit e che 2^8 che soarebbero le possibili combinazioni degli 8 bit del byte fa 256 ovvero da 0 a 255 è chiaro che non è in grado di mantenere un valore piu alto del 255 famoso.
Anche se non ho visto bene la richiesta di tom sono praticamente certo che nell'illusione dis cegliere la strada secondo lui piu semplice si è andato invece a ficcare in un buio tunnel da dove sia Claudio che Joe stanno tentando di tirarlo fuori...
Ciao ...
 
X Luigi
A prescindere dalla possibilità di arrivare al dato statistico o economico con costrutti che utilizzano altre funzioni, a tuo parere il modo in cui ho operato per con l'inserimento nella pima "ImpostaGiocata" del parametro -aGiocateDaInterrompere- e nella seconda, con il parametro -Attesa- , " ti elenco sotto il costrutto,

ImpostaGiocata 1,am,ruote,poste,ColpiDiGioco,2,,2
ImpostaGiocata 2,am,ruote,poste,ColpiDiGioco,2,ColpiDiGioco
Gioca idEstr,1,,1

la funzione "ScriviResoconto" opera correttamente i suoi calcoli di rendicontazione giocate?

Un grazie ed un saluto.
 
Ciao Claudio , penso di si perche non dovrebbe ..
il resoconto è una sommatoria della spesa e della vincita totale , se uno ripete la stessa giocata
con un ritardo di 255 colpi non c'è niente di male ..viene conteggiata sia come spesa che come vincite..
 
Ringrazio Luigi ...

per la precisazione ... piuttosto intuibile e ritrovabile in molte delle cose, dell' informatica.

Numero di Colori / livelli dell' audio / sfumature del grigio ... per citarne alcune.

Quindi un limite tecnico (Superabile volendo).

Ma deve essere chiaro che l'artificio ... deve avere uno scopo lecito.

"Il fuoco" dell' artificio è uno spettacolo nel cielo aperto ... un disatro tra le pareti domestiche.

Quindi non ha senso e NON SI DEVE superare "a prescindere" dalle regole che motivano la esistenza degli artifici.

La regola è che non si deve andare oltre 255 colpi. E' sbagliato tentare la sorte dell' Ambo in quartina per olte 250 colpi.

Sarebbe come impegnarsi in un dispendio enorme, per una fotocamera da 1000 megapixel quando il nostro occhio ne percepisce 16.

Questo andare OLTRE con la giocata è da sconsigliare nel modo più assoluto.

Poi si trasgredisce e si può trasgredire. Ma la trasgressione DEVE essere chiamata trasgressione.

Quindi è una curiosità statistica che DEVE essere differente da GIOCA.

Ciò detto ... ho eseguito il mio script presente al messaggio #13 senza gli inputbox ... dal 1945 ad oggi.

Ho raggruppato tutti i ritardi ... senza limiti artificiosi e tecnici (ove 255 è un limite tecnico, come ha ben descritto Luigi).

Non sofferrmandosi a riflettere, innanzi ad esso, si dimostra che "uno" potrebbe portare il suo obolo concorsuale di un Euro ...

ininterrottamente per 1400 volte ... (MILLEQUATTROCENTO EURO (servirebbe anche una progressione che lo moltiplica di X volte))

in un impegno lungo 10 Anni ... per poi alla fine della fiera ... "Vincere"

Se la vince ... una pizza, con un piatto di patatine fritte, un caffè, forse un dolce, ed una bevanda.

Se il pizzaiolo è onesto perchè con 40 Euro di vincita non si fa molto di più. (Quella ... "a colpo")

Certo si, si può ... potrebbe essere ... ma normalmente alcune cose vengono definite pazzie.

In grafica ... appare evidente che con 250 concorsi gli ambi sono caduti praticamente tutti ... si è "toccato il fondo".

Trend.jpg

E ... quale curiosita statistica elenco che, oltre le mille Estrazioni, sono rilevabili sono stati 12 casi caduti nelle rimanenti 400.

Quindi 12 casi sparsi in poco meno di 3 anni ... Sommariamente 1 a stagione ?

Ricordo a beneficio delle finanze pubbliche che ... lo stato ha sempre tanto bisogno di buoni giocatori.

Coraggio, fatevi sotto, vi attende a braccia aperte, prodigo di allettanti lusinghe.

:) Buona Domenica.
 
Ciao ragazzi... :)
grazie per tutti i vostri interventi.

Chiuderei questo thread con questa ultimissima domanda:

Ho trovato nella guida questa spiegazione della funzione ImpostaGiocata qui in esame...

ImpostaGiocata(NumGiocata, vetNumeri, vetRuote, vetPoste, Optional Durata = 1, Optional SorteInterr = 0, Optional Attesa = 0, Optional aGiocateDaInterrompere = 0)

Alla luce di questa sintetica spiegazione...
qualcuno di voi mi "tradurrebbe" questo mio esempio sotto riportato per ogni spazio... = parametro (8 in tutto) ?

ImpostaGiocata 2,am,ruote,posta,ColpiDiGioco,1,2,3

I primi 4 parametri in realtà mi sembra di averli abbastanza chiari... sono gli altri 4 che non riesco a comprendere... e gestire... :rolleyes: Mi servirebbero degli esempi "raccontati.." se fosse possibile... per questi ultimi 4 parametri evidenziati in rosso nella stessa funzione...

Vorrei sviscerare il più possibile questa intrigante funzione ma mi rendo conto che è assai complessa almeno per me... :p :o

Buon Week End a tutti/e :)
 
Ultima modifica:
ero sicuro che solo l'ottavo poteva creare perplessita....
scusa Tom se io ti dico durata e nell'help c'èe scritto "Specifica i colpi di gioco che verranno analizzati dal momento in cui si pone in gioco la combinazione"

tu mi vorresti dire che non capisci che vulo dire tanto per fare un esempio ?
Non ci credo ...
 
Tom , tieni conto che ImpostaGiocata prevede anche l'uso consequenziale della funzione Gioca, altrimenti la sua <funzione intrinseca> non avrebbe senso.
detto questo passiamo a :

Durata : Specifica i colpi di gioco che verranno analizzati dal momento in cui si pone in gioco la combinazione (ti ricordo che deve esserci nello script la funzione "Gioco", il cui 1° parametro richesto è "Inizio" (della giocata), questo termine "Durata" indica il numero di colpi di gioco.)Come avrai notato io ho usato questo parametro nella 2a giocata in modo che al termine della prima la seconda parta con un ritado di inizio dellla stessa quantita di "Colpidigioco"

SorteInterr: Valore numerico che indica se la giocata dovrà essere interrotta non appena produrrà l'esito specificato da questo valore ( 1 x estratto, 2 x ambo 3 x terno ecc.ecc.)

Attesa: Consente di introdurre un ritardo che consente di analizzare la giocata non subito dopo il suo rilevamento bensì aspettando prima il numero di colpi definito da questo valore ( nel caso tu voglia iniziare la giocata al 10°colpo successivo alla estrazione di rilevamento, con questo parametroimpostato a 10, ritardi l'inizio della giocata di 10 colpi)

aGiocateDaInterrompere : array contenente i numeri identficativi delle giocate da interrompere ( nel tuo script, io ho inserito la 2a giocata) in caso la giocata corrente sia vincente, se invece di un array si passa un valore diverso da 0 p. es <1>( io ho inserito il valore 2 che identifica la seconda giocata). se la giocata corrente è vincente tutte le giocate in memoria(o specificate con valore numerico) vengono interrotte ottenendo lo stesso effetto senza bisogno di passare l'array che va usato invece se bisogna interrompere solo alcune giocate specifiche ma non tutte.


Dimenticavo, le virgole specificano la separazione dei paramentri quindi se vuoi inserire parametri non aventi valore, quindi nulli, devi sempre inserire le virgole, per indicare a Vbscript che non vuoi utilizzarlo, questa operazione va fatta solo se successivamente al parametro vuoto devi o vuoi inserire altri parametri della funzione.

Spero di essere stato esaustivo, comunque è norma per chi vuole imparare, quella di provare, provare, provare per rendersi conto di che succede..se faccio questo o quello.

Buon proseguimento e spero di aver alleggerito Luigi di ulteriori ripetizioni di nozioni basilari.
 
Ultima modifica:
Tom , tieni conto che ImpostaGiocata prevede anche l'uso consequenziale della funzione Gioca, altrimenti la sua <funzione intrinseca> non avrebbe senso.
detto questo passiamo a :

Durata : Specifica i colpi di gioco che verranno analizzati dal momento in cui si pone in gioco la combinazione (ti ricordo che deve esserci nello script la funzione "Gioco", il cui 1° parametro richesto è "Inizio" (della giocata), questo termine "Durata" indica il numero di colpi di gioco.)Come avrai notato io ho usato questo parametro nella 2a giocata in modo che al termine della prima la seconda parta con un ritado di inizio dellla stessa quantita di "Colpidigioco"

SorteInterr: Valore numerico che indica se la giocata dovrà essere interrotta non appena produrrà l'esito specificato da questo valore ( 1 x estratto, 2 x ambo 3 x terno ecc.ecc.)

Attesa: Consente di introdurre un ritardo che consente di analizzare la giocata non subito dopo il suo rilevamento bensì aspettando prima il numero di colpi definito da questo valore ( nel caso tu voglia iniziare la giocata al 10°colpo successivo alla estrazione di rilevamento, con questo parametroimpostato a 10, ritardi l'inizio della giocata di 10 colpi)

aGiocateDaInterrompere : array contenente i numeri identficativi delle giocate da interrompere ( nel tuo script, io ho inserito la 2a giocata) in caso la giocata corrente sia vincente, se invece di un array si passa un valore diverso da 0 p. es <1>( io ho inserito il valore 2 che identifica la seconda giocata). se la giocata corrente è vincente tutte le giocate in memoria(o specificate con valore numerico) vengono interrotte ottenendo lo stesso effetto senza bisogno di passare l'array che va usato invece se bisogna interrompere solo alcune giocate specifiche ma non tutte.


Dimenticavo, le virgole specificano la separazione dei paramentri quindi se vuoi inserire parametri non aventi valore, quindi nulli, devi sempre inserire le virgole, per indicare a Vbscript che non vuoi utilizzarlo, questa operazione va fatta solo se successivamente al parametro vuoto devi o vuoi inserire altri parametri della funzione.

Spero di essere stato esaustivo, comunque è norma per chi vuole imparare, quella di provare, provare, provare per rendersi conto di che succede..se faccio questo o quello.

Buon proseguimento e spero di aver alleggerito Luigi di ulteriori ripetizioni di nozioni basilari.

Grazie claudio8 sei stato gentilissimo ed esaustivo ora guardo di esercitarmi un pò...
L'unica cosa che mi sta facendo impazzire... è come far considerare POSITIVA e quindi chiusa la giocata che presenti tutte le condizioni impostate per tutti i giorni... del mese... per quella data condizione... e non anche quelle che ne presentino solo alcune...

Cerco di spiegare questa mia ultima... perplessità con un es. spero sufficiente...

Voglio considerare tutte le terzine consecutive per E per ogni estrazione...
Al momento il resoconto finale mi segnerebbe come "chiuso" in positivo anche il caso in cui una delle terzine consecutive per quel dato giorno (es. fittizio 2.8.2014) non sfaldi l'E in terzina entro i colpi impostati... mentre io vorrei che se.. non risultano TUTTE le terzine sfaldate per E per quel dato giorno entro i colpi stabiliti nel resoconto questo giorno (caso) mi risulti come "negativo".

spero di essere stato abbastanza chiaro nell'esporti questa mia spero ultima "ossessione programmatica :D" e ancor piu' che tu la riesca a disintegrare... con poche righe di codice :p

di nuovo complimenti e grazie e buon week end grandissimo :o

x luigi : in effetti i parametri che non avevo troppo chiari erano gli ultimi 3 della funzione ImpostaGiocata non gli ultimi 4. I colpi di gioco li ho messi nei fattori "da comprendere" per errore ;)
 
solo a scopo teorico per chi è interessato ecco uno script che implementa internamente le
funzioni ImpostaGiocata , Gioca , ScriviResoconto , queste tre funzioni nello script
si chiamano MyImpostaGiocata , MyGioca , MyScriviResoconto
ricevono gli stessi parametri delle funzioni del programma.

in pratica se lasciate tutto intatto ma modificate solo il contenuto della sub main con il vostro script
potete usare queste funzioni implementate direttamente nello script come nell'esempio sotto.
Nota : Non c'è nessun limite di 255
dato che è a scopo teorico non funziona con estratto determinato
anche l'output è un po' diverso ma l'ho fatot apposta ci sono tanti modi di mostrare i dati
e volendo uno puo prendere spunto e fare diversamente

ciao a tutti

Codice:
Option Explicit
Class clsGiocata
	Private m_Posta
	Private m_Ruote
	Private m_Numeri
	Private m_Sorte
	Private m_SorteInterruzione
	Private m_Attesa
	Private m_Id
	Private m_GiocateDaInterrompere
	Private m_Durata
	Private m_MotivoInterruzione
	Sub Class_Initialize
		' codice
	End Sub
	Sub Class_Terminate
		' codice
	End Sub
	Public Property Get Posta
		Posta = m_Posta
	End Property
	Public Property Let Posta(NewValue)
		m_Posta = NewValue
	End Property
	
	Public Property Get Ruote
		Ruote = m_Ruote
	End Property
	Public Property Let Ruote(NewValue)
		m_Ruote = NewValue
	End Property
	Public Property Get Numeri
		Numeri = m_Numeri
	End Property
	Public Property Let Numeri(NewValue)
		m_Numeri = NewValue
	End Property
	Public Property Get Sorte
		Sorte = m_Sorte
	End Property
	Public Property Let Sorte(NewValue)
		m_Sorte = NewValue
	End Property
	Public Property Get SorteInterruzione
		SorteInterruzione = m_SorteInterruzione
	End Property
	Public Property Let SorteInterruzione(NewValue)
		m_SorteInterruzione = NewValue
	End Property
	Public Property Get Attesa
		Attesa = m_Attesa
	End Property
	Public Property Let Attesa(NewValue)
		m_Attesa = NewValue
	End Property
	Public Property Get Durata
		Durata = m_Durata
	End Property
	Public Property Let Durata(NewValue)
		m_Durata = NewValue
	End Property
	Public Property Get Id
		Id = m_Id
	End Property
	Public Property Let Id(NewValue)
		m_Id = NewValue
	End Property
	Public Property Get GiocateDaInterrompere
		GiocateDaInterrompere = m_GiocateDaInterrompere
	End Property
	Public Property Let GiocateDaInterrompere(NewValue)
		m_GiocateDaInterrompere = NewValue
	End Property
	Public Property Get MotivoInterruzione
		MotivoInterruzione = m_MotivoInterruzione
	End Property
	Public Property Let MotivoInterruzione(NewValue)
		m_MotivoInterruzione = NewValue
	End Property
	Function GetSommaPoste()
		Dim k,t
		t = 0
		For k = 1 To UBound(m_Posta)
			t = t + m_Posta(k)
		Next
		GetSommaPoste = t
	End Function
	Function IsSorteVincente(nSorte)
		Dim k
		For k = nSorte To 1 Step - 1
			If k <= UBound(m_Posta) Then
				If m_Posta(k) > 0 Then
					IsSorteVincente = True
					Exit For
				End If
			End If
		Next
	End Function
	Function QuantitaNumeri
		QuantitaNumeri = UBound(m_Numeri)
	End Function
	Function QuantitaRuote
		QuantitaRuote = UBound(m_Ruote)
	End Function
	Function GetStringaRuote
		Dim s,k
		s = ""
		For k = 1 To UBound(m_Ruote)
			s = s & SiglaRuota(m_Ruote(k)) & "."
		Next
		GetStringaRuote = RimuoviLastChr(s,".")
		
	End Function
	Function GetStringaSorte
		Dim s,k
		s = ""
		For k = 1 To UBound(m_Posta)
			If m_Posta(k) > 0 Then
				s = s & Left(NomeSorte(k),1) & "/"
			End If
		Next
		GetStringaSorte = RimuoviLastChr(s,"/")


	End Function
End Class
Dim collGiocate
Dim nSpesaTotale
Dim nVincitaTot
Dim aPuntiPerRuota
Dim nBolletteGioc,nBolletteVinc,nCasi,nPrimaGioc,nUltimaGioc, aAndamento , aSpesa , aVincita
Const cInterrottaEsitoVerificato = 1
Const cInterrottaRaggiuntaDurata = 2
Const cInterrottaAltraCombVerificata = 3
Function IsCollection(coll)
	On Error Resume Next
	
	If coll.count >= 0 Then
		IsCollection = True
	
	End If
	
	If Err <> 0 Then
		IsCollection = False
	End If
End Function
Sub MyImpostaGiocata(id,aNumeri,aRuote,aPoste,Durata,SorteInterr,Attesa,GiocateDaInterr)
	Dim clsGioc
	If IsCollection(collGiocate) = False Then 	
		Set collGiocate = GetNewCollection
	End If
	If IsEmpty(aPuntiPerRuota) Then
		
		ReDim aPuntiPerRuota(11,5)
		ReDim aAndamento (0)
		ReDim aSpesa (0)
		ReDim aVincita (0)
		
		nBolletteGioc = 0
		nBolletteVinc = 0
		nPrimaGioc = 0
		nUltimaGioc = 0
		nCasi = 0
		nSpesaTotale  = 0
		nVincitaTot = 0 
	End If
	Set clsGioc = New clsGiocata
	clsGioc.id = id
	clsGioc.Numeri = aNumeri
	clsGioc.Ruote = aRuote
	clsGioc.Posta = aPoste
	clsGioc.Durata = Durata
	clsGioc.Attesa = Attesa
	clsGioc.SorteInterruzione = Iif(SorteInterr > 0,SorteInterr,100)
	clsGioc.GiocateDaInterrompere = GiocateDaInterr
	clsGioc.MotivoInterruzione = 0
	collGiocate.Add clsGioc
End Sub
Sub MyGioca(idEstr)
	Dim clsGioc
	Dim nColpi
	Dim nMaxEstr
	Dim idEstrTmp
	Dim bAlmenoUnaTrovata
	nMaxEstr = EstrazioniArchivio
	nColpi = 0
	
	Call Scrivi("Estrazione generatrice del pronostico : " & GetInfoEstrazione(idEstr))
	
	nCasi = nCasi + 1
	If nPrimaGioc = 0 Then nPrimaGioc = idEstr
	nUltimaGioc = idEstr
	
	For idEstrTmp = idEstr + 1 To nMaxEstr
		nColpi = nColpi + 1
		bAlmenoUnaTrovata = False
		For Each clsGioc In collGiocate
			If clsGioc.MotivoInterruzione = 0 Then
				bAlmenoUnaTrovata = True
				If nColpi > clsGioc.Attesa Then
					If nColpi <= clsGioc.Durata Then

						
						Call EseguiGiocata(clsGioc,idEstrTmp,nColpi)
						If clsGioc.MotivoInterruzione <> 0 Then
							Call ScriviMotivoInterruzione(clsGioc.MotivoInterruzione)
							Exit For
						End If
					Else
						clsGioc.MotivoInterruzione = cInterrottaRaggiuntaDurata
						Call ScriviMotivoInterruzione(clsGioc.MotivoInterruzione)

						Exit For
					End If
				End If
			
			End If
			
		Next
		If bAlmenoUnaTrovata = False Then Exit For
		For Each clsGioc In collGiocate
			If clsGioc.MotivoInterruzione <> 0 Then
				Call InterrompiGiocateCollegate(clsGioc.GiocateDaInterrompere)
			End If 
		Next
	Next
	
	ReDim Preserve aAndamento (nCasi)
	ReDim Preserve aSpesa (nCasi)
	ReDim Preserve aVincita(nCasi)
	aAndamento (nCasi) = nVincitaTot - nSpesaTotale
	aSpesa (nCasi) = nSpesaTotale
	aVincita(nCasi) = nVincitaTot
	
	Set collGiocate = Nothing
End Sub
Sub EseguiGiocata(clsGioc,idEstr,nColpo)
	nSpesaTotale = nSpesaTotale + clsGioc.GetSommaPoste
	ReDim aNumeriEstrazione(0)
	Dim abNum
	Dim k,r,e,nPunti,nQComb
	Dim ruota,sRuota
	Dim sRigaOutput,sRigaOutputTmp
	Dim sRigaEstratti
	Dim aRuote,aPoste
	
	nBolletteGioc = nBolletteGioc + 1
	sRigaOutput = FormatSpace(StringaNumeri(clsGioc.numeri),30) & " su " & FormatSpace(clsGioc.GetStringaRuote,30) & " per " & FormatSpace(clsGioc.GetStringaSorte,30)
	sRigaOutput = sRigaOutput & " Colpo : " & FormatSpace(nColpo,6,True) & "  "
	
	Call GetEstrazioneCompleta(idEstr,aNumeriEstrazione)
	abNum = ArrayNumeriToBool(clsGioc.Numeri)
	
	aRuote = clsGioc.ruote
	aPoste = clsGioc.Posta
	For r = 1 To UBound(aRuote)
		nPunti = 0
		ruota = aRuote(r)
		sRuota = SiglaRuota(ruota)
		If ruota = 12 Then ruota = 11
		sRigaEstratti = ""
		For e = 1 To 5
			If abNum(aNumeriEstrazione(ruota,e)) Then
				nPunti = nPunti + 1
				sRigaEstratti = sRigaEstratti & Format2(aNumeriEstrazione(ruota,e)) & "."
			Else
				sRigaEstratti = sRigaEstratti & "__" & "."
			End If
		Next
		
		
		If clsGioc.IsSorteVincente(nPunti) Then
			nBolletteVinc = nBolletteVinc + 1
			sRigaOutput = sRigaOutput & " [" & sRuota & " " & sRigaEstratti & "] (" & NomeSorte(nPunti) & ") "
			For k = nPunti To 1 Step - 1
				If k <= UBound (aPoste) Then 
					If aPoste(k) > 0 Then
						nQComb = Combinazioni(nPunti,k)
						aPuntiPerRuota(ruota,k) = aPuntiPerRuota(ruota,k) + nQComb
						
						nVincitaTot = nVincitaTot + nQComb * GetPremioLotto(clsGioc.QuantitaNumeri,k,clsGioc.QuantitaRuote,False) * aPoste(k)
					End If
				End If
				
			Next
			If nPunti >= clsGioc.SorteInterruzione Then
				clsGioc.MotivoInterruzione = cInterrottaEsitoVerificato
			End If
			Call Scrivi(sRigaOutput,True,,,vbRed)
		Else
			Call Scrivi(sRigaOutput)

		End If
	Next
End Sub

Sub InterrompiGiocateCollegate(GiocateDaInterrompere)
	Dim clsG,k
	
	If IsArray(GiocateDaInterrompere) Then
		For k = 1 To UBound(GiocateDaInterrompere)
			For Each clsG In collGiocate
				If clsG.MotivoInterruzione = 0 Then
					If clsG.ID = GiocateDaInterrompere(k) Then
						clsG.MotivoInterruzione = cInterrottaAltraCombVerificata
					End If
				End If
			Next	

		Next
	Else
		If(GiocateDaInterrompere) <> 0 Then
			For Each clsG In collGiocate
				If clsG.MotivoInterruzione = 0 Then
					clsG.MotivoInterruzione = cInterrottaAltraCombVerificata
				
				End If
			Next	
		End If
	End If
End Sub
Sub ScriviMotivoInterruzione(Codice)
	
	Select Case Codice
	
	Case cInterrottaEsitoVerificato
		Call Scrivi("Interrotta per esito verificato")
	Case cInterrottaRaggiuntaDurata
		Call Scrivi("Interrotta per raggiunta durata")

	Case cInterrottaAltraCombVerificata
		Call Scrivi("Interrotta per esito verificato su giocata collegata")

	End Select
End Sub
Sub MyScriviResoconto
	
	 
	
	Dim nTempomedioRilev
	Dim r , ruota , e 
	
	nTempomedioRilev = Dividi((nUltimaGioc -(nPrimaGioc - 1)),nCasi)

	Call Scrivi
	Call Scrivi

	Call Scrivi(FormatSpace("Casi esaminati ",30) & " : " & nCasi)
	Call Scrivi(FormatSpace("Prima estrazione generatrice ",30) & " : " & nPrimaGioc)
	Call Scrivi(FormatSpace("Ultima estrazione generatrice ",30) & " : " & nUltimaGioc)
	Call Scrivi(FormatSpace("Tempo medio rilevamento ",30) & " : " & nTempomedioRilev)
	Call Scrivi(FormatSpace("Capitale speso ",30) & " : " & nSpesaTotale )
	Call Scrivi(FormatSpace("Vincita   ",30) & " : " & nVincitaTot )
	Call Scrivi(FormatSpace("Guadagno    ",30) & " : " & nVincitaTot - nSpesaTotale )
	
	Call Scrivi
	
	
	ReDim aT(6)
	
	aT(1)= "Ruota"
	aT(2)= "Estratto"
	aT(3)= "Ambo"
	aT(4)= "Terno"
	aT(5)= "Quaterna"
	aT(6) =  "Cinquina"
	
	Call InitTabella (aT)
	
	For r = 1 To 11
		If r  =11 Then 
			ruota = 12 
		Else
			ruota = r
		End If
		aT (1) = NomeRuota(ruota)
		For e = 1 To 5
			aT(e +1) = aPuntiPerRuota(r,e)	
		Next
		Call AddRigaTabella( aT )
	Next
	Call CreaTabella
	
	Call Scrivi 
	
	
	DisegnaGrafico 

End Sub
Sub LeggiValoriPerGrafico (aValori , aValoriDaleggere)
	Dim k 
	ReDim aValori ( nCasi , 2)
	
	For k = 1 To nCasi 
		aValori (k ,1) = k
		aValori(k,2) = aValoriDaleggere(k)
	Next
End Sub 
Function GetDivisorePreGrafico (nValore)
	
	Dim nDivisore 
	If nValore > 0 And nValore <= 10 Then
		nDivisore = 1 
	ElseIf nValore >10  And nValore <= 100 Then
		nDivisore = 10
	ElseIf nValore >100  And nValore <= 1000 Then
		nDivisore = 100
	ElseIf nValore >1000  And nValore <= 10000 Then
		nDivisore = 1000
	Else
		nDivisore = nValore / 4
	End If
	GetDivisorePreGrafico  = nDivisore
	
End Function 
Sub DisegnaGrafico 

	Dim nValMax , nValMin
	ReDim aValori (0)
	Dim nDivisore 
	
	If nSpesaTotale > nVincitaTot Then
		nValMax = nSpesaTotale
	Else
		nValMax = nVincitaTot 
	End If 
	
	nValMin =   MinimoV(aAndamento ) -100
	
	If nValMin > 0 Then
		 nValMin =0
	Else
		nValMin = nValMin -1
	End If 
	
	
	
	Call PreparaGrafico ( "",0 ,nCasi ,nValMin ,  nValMax ,nCasi /10 ,  (nValMax +Abs(nValMin)) / 10)
	Call LayOutGrafico ( vbBlue , RGB(239,239,239), vbBlue ,"Casi" , "Euro")
	
	Call LeggiValoriPerGrafico (aValori , aAndamento)
	Call DisegnaLineaGrafico (aValori ,vbMagenta , "Andamento economico")
	
	Call LeggiValoriPerGrafico (aValori , aSpesa)
	Call DisegnaLineaGrafico (aValori ,vbRed , "Spesa")
	
	Call LeggiValoriPerGrafico (aValori , aVincita)
	Call DisegnaLineaGrafico (aValori ,vbGreen , "Vincita")
	

	
	Call InserisciGrafico
	
End Sub 
Sub Main

	
	ReDim aPoste(1)
	ReDim aNum(1)
	Dim k 
	
	' GIOCO SU BARI PER ESTRATTO
	ReDim aRuote(1)
	aRuote(1) = BA_
	
	
	
	For k = 4000 To 8000 Step 300
		 
		ReDim aPoste(1)
ReDim aNum(1)
		aPoste(1) = 1
		
		' La prima giocata è il numero 45 , non ha sorte interruzione e non ha giocate collegate da interrompere , dura per 300 colpi
		aNum(1) = 45
		Call MyImpostaGiocata(1,aNum,aRuote,aPoste,300, 0,0,0 )
		
		' La seconda giocata è il numero 90 , ha sorte interruzione  e appena esce l'esito si interrompono tutte le giocate in corso e le i stessa
		' anche questa duura 300 colpi ma si interrompe  alla sorte verificata
		
		aNum(1) = 90
		Call MyImpostaGiocata(2,aNum,aRuote,aPoste,300,1,0,1)
		
		ReDim aNum(2)
		aNum(1) = 45
		aNum(2) = 90
		ReDim aPoste (2)
		aPoste(2) =1 
		Call MyImpostaGiocata(3,aNum,aRuote,aPoste,300,2,0,1)
		
		' gioco all'estrazione 8000
		Call MyGioca(k)
	Next
	
	Call MyScriviResoconto
	
End Sub
 
Ultima modifica di un moderatore:
Ciao Luigi, senza parole in quanto questo livello rimane ostico nella comprensione scriptica ( almeno per quel che mi riguarda ).

Solo una testimonianza di lettura.
 
ciao Mike , invece il concetto è piu semplice di quello che sembra e se lo riesci ad apprendere ti sara di sicuro utile.
c'era la necessita di sostituire le funzioni del programma quindi si è dovuto predisporre delle funzioni sostitutive dentro
lo script.
Fin qui ci siamo.
Ora queste funzioni dovevano essere in grda di memorizzare un quantitativo n di giocate diverse , e per questo ho usato una collection che è un contenitore
ogni gicata a sua volta ha diverse proprietà come ad esempio i numeri e le ruote in gioco ma anche diverse altre percio si è creata una classe ovvero un oggetto con le proprieta che servivano.
detto questo il flusso dello script inizia con l'istruzione myimpostagiocata che crea una nuova istanza della classe giocata , ne valorizza le proprieta e la inserisce nella collection
myimpostagiocata si puo chiamare dal proprio script quante volte si vuole .
Quando invece si chiama la funzione MyGioca lo script controlla tutte le giocate che aveva in memoria dentro la collection , al termine svuota la collection che si riempira nuovamente quando lo scripter richiamerà ancora myimpostagiocata .
Durante tutto questo in alcune variabili globali sono mantenuti dei valori che serviranno per il resoconto.

ciao ...
 
Certo Luigi, questo lo avevo anche capito, ma è proprio il concetto delle collection che mi è duro nella comprensione del mio ordine mentale.
Certo anche che poi ognuno di noi e a secondo delle necessità deve far tesoro di tutto.

Sicuramente utile, ma lo spazio del mio hard-disk mentale sarebbe un po' pieno (speriamo non vada in Tilt ).
ovviamente sto scherzando il mio impegno a crescere è sempre presente.

ciao
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 21 gennaio 2025
    Bari
    78
    09
    70
    03
    23
    Cagliari
    32
    88
    30
    13
    45
    Firenze
    87
    23
    15
    39
    86
    Genova
    71
    48
    67
    59
    23
    Milano
    58
    50
    80
    85
    29
    Napoli
    90
    81
    79
    82
    62
    Palermo
    70
    33
    90
    05
    10
    Roma
    15
    71
    55
    85
    76
    Torino
    89
    09
    18
    33
    69
    Venezia
    44
    80
    82
    73
    58
    Nazionale
    80
    25
    13
    63
    17
    Estrazione Simbolotto
    Bari
    39
    36
    34
    14
    31
Indietro
Alto