Lezioni di Script By Robyca!

« Older   Newer »
 
  Share  
.
  1.  
    .
    Avatar

    sean69

    Group
    Administrator
    Posts
    5,897
    Location
    Provincia di Roma..

    Status
    Offline

    lottoscript





    Lezioni di Script By Robyca!








    Lezione 1



    Premesso che non sono un docente........ma l'ultimo degli asini in fatto di informatica, come ho imparato a fare listati smontando, rimontando ed incasinando quelli degli altri................vediamo se riesco ad incasinarVi alcuni consigli iniziali !!!!!!!!!!

    Alcune indicazioni: Prima di iniziare con i listati vediamo di capire come sono scritti ed il significato di certi colori:

    Le righe verdi (precedute dall'apice .'. sono righe di commento che servono per spiegare o per tenere traccia di quanto fà quello che si scrive.

    Le parole azzurre sono istruzioni che si richiamano al Visual Basic originale e non sono tante quelle che servono per fare un normale listatino.

    Le parole rosse sono istruzioni che richiamano "routine" dedicate al Lotto, create apposta dal programmatore per facilitare la vita a chi scrive.E le potete trovare dettagliatamente spiegate nell'Help di L8.................peccato però manchino, nella gran parte, di esempi !!!.........mica si può avere tutto dalla vita !!!!!!!!!


    Analizziamo quanto troveremo nel listato che segue:

    Sub main()
    End Sub
    Tra queste due parole viene svolto tutto il listato ed indicano la parte centrale di uno Script che in teoria può essere composto anche da altre parti.

    Dim
    E' una dichiarazione di variabile con indice () e riserva una parte di memoria per la variabile dichiarata, tra parentesi si mette la quantità di valori che può avere.

    EstrazioneFin
    Routine del programma che riporta l'ultima estrazione dell'archivio in uso

    For.....To.....Next
    Questo è il cuore di quasi tutti i listati per Lotto, è un contatore e visto ci sarà da fare la scansione dell'archivio, delle ruote e dei cinque numeri possono essere svariati nello stesso listato, se scrivo:

    For es = EstrazioneFin - 100 To EstrazioneFin
    ..........................................
    Next
    "es" assumerà il numero dell'estrazione dall'ultima meno 100 all'ultima

    Invece se scrivo:
    For r = 1 To 10
    .............
    Next
    "r" avrà il numero di ogni singola ruota da Bari Venezia.

    AvanzamentoElab
    Serve per vedere se il listato gira, fà avanzare la barra di stato del prg., potrebbe capitare di sbagliare qualcosa e far entrare il listato in un Loop infinito !!!

    If........Then
    ..............
    End If
    Evento condizionato, se scrivo:

    If Indicemensile(es) = 1 Then
    ...........................
    End If
    Tutte le istruzioni e comandi inseriti tra l'If ...Then e l'End If vengono eseguite se si avvera la condizione richiesta, in questo caso, che l'estrazione in esame sia la 1° di ogni mese.

    Indicemensile(es)
    Come detto sopra, ogni estrazione ha tre numerazioni:
    la prima misura il numero totale delle stesse nell'archivio,
    la seconda "IndiceAnnuale" ci dice a che estr. dell'anno siamo,
    la terza "IndiceMensile" ci dà il numero di una estr. nel corso del mese.

    Estratto(es,r,p)
    Ci rende il numero che è sortito alla tal estr.(es), su una certa ruota(r) e in una data Posizione(p).

    Fuori90(x)
    Nel lotto esistono 90 numeri per cui questa istruzione riporta nei 90 automaticamente un numero maggiore semplicemente togliendo 90 tante volte quante necessarie perchè sia compreso nella novantina:
    ......120-90=30.......oppure....200-90-90=20......tanto per dire

    ImpostaGiocata x,numeri,ruota,posta,colpi,sorte
    Dove "x" è il numero della giocata, "numeri" una variabile che contiene il numero o i numeri da giocare, "ruota" la ruota su cui giocare, "posta" quanto giochiamo, "colpi" per quante volte si
    Gioca e "sorte" ( facoltativo ) dirà al listato di interrompere il gioco se sortirà l'ambata(1), se
    invece sarà l'ambo(2), per il terno(3) e via dicendo.

    Gioca es
    E' l'ordine di eseguire il gioco ad una data estr.

    ScriviResoconto
    Chiama una routine che fà la cassa di quanto ci costa il gioco o quanto ci rende.

    Circa una Decina di istruzioni in tutto per fare un listatino, non tante e nemmeno difficile metterle insieme !!!!!!!!..........come adesso vedremo:


    Proviamo a metterle insieme perchè il listato che faremo verifichi questo semplice metodino:

    Alla 1°estrazione del Mese si prende il 1° ed il 5° Estratto di Bari si sommano ed il risultato lo si mette in gioco x 9 colpi. Si verificano gli esiti x un periodo di 100 estrazioni.




    Ogni istruzione è preceduta da un Minimo di spiegazione, ma vi potete aiutare anche con l'help o con "ab?" in alto a destra di L8 per sapere esattamente come và composta l'istruzione.

    Ops !!! .............dimenticavo !!! Il programma di riferimento per questi listati è L8 di Flavio Perona ..............se qualcuno non se ne fosse accorto !!!!!!!!!!!! Non perchè ci sia solo questo, ma perchè è stato il Primo che ho trovato e che mi ha dato la possibilità di iniziare il listamento, ho provato altri programmi ed eventualmente più avanti si potrà dire qualcosa anche di loro !!!

    Non c'è bisogno di riscriverlo basta fare il copiaincolla del listato o al limite scaricare il file subito sotto il listato.Per la cronaca:VI = Variabile con indice.............quelle con () VF= Variabile Fissa..........tipo: a, b, es, ini, fin...ecc...ecc...Questo listato gira dalla versione 4.2....in sù di L8............scaricando il file !!! Copiaincollato..........così com'è..........anche sulla 4.1....!!!
    ============================================================'

    Inizio fisso per tutti i listati
    Sub main()
    ' Dichiaro le variabili con indice "()" che userò e la dimensione
    ' delle stesse (procedura obbligatoria)
    Dim ambata(1)
    Dim ruota(1)
    Dim posta(1)
    ' Attribuisco un valore ad alcune "VI"(variabile indicizzata)
    ruota(1) = 1 ' 1 = bari
    posta(1) = 1 ' 1 lira x ambata
    ' Dò a due variabili fisse "VF" il periodo di escursione sull'archivio
    ' estr. nel quale fare la verifica, solo per evitare di scrivere
    ' istruzioni + lunghe se si ripetono spesso
    fin=EstrazioneFin
    ini=fin -100
    ' Faccio avanzare la verifica estr. x estr. nell'archivio
    For es=ini To fin
    AvanzamentoElab ini,fin,es ' Serve solo x vedere se il listato lavora
    ' facendo avanzare la barra di stato dello Script Manager

    ' Condizione......se siamo alla 1° estr. del mese allora procedi con i
    ' conteggi, ma evita tutte le altre
    If Indicemensile(es) = 1 Then
    'Attribuisco a 2 VF il valore degli estratti nell'estr.(es), sulla ruota
    '(1=Bari), in posizione(1° e 5°)
    a=Estratto(es,1,1)
    b=Estratto(es,1,5)
    ' Dò ad una VI (solo queste sono accettate dall'Impostagiocata) il
    ' risultato della somma dei 2 estratti col Fuori90
    ambata(1) = Fuori90(a + b)
    ' Imposto la giocata con: numero della giocata, numeri da giocare, ruota
    ' o ruote sù cui giocare, soldi da giocare, x quanti colpi e se l'esito
    ' é positivo interrompere o no la giocata
    ImpostaGiocata 1,ambata,ruota,posta,9,1
    ' Attivo la giocata all'estrz. scelta(es)
    Gioca es
    ' Chiudo la condizione "If IndiceMensile(es)=1 Then"
    End If
    ' Avanzo fino a chiudere il conteggio chiesto dal "For....To....Next"
    Next
    ' Chiedo il resoconto della giocata
    ScriviResoconto
    ' ultima istruzione, fissa come la 1°
    End Sub



    Lezione 2



    Si va avanti


    Allora questo sotto è il listato "Prova 1" pulito dalle spiegazioni, così iniziamo a prendere confidenza con l'architettura del listato e con l'armonia del suo scorrere...........eh eh eh !!!..........sembrerà una baggianata, ma il più delle volte trovo un errore dove la fluidità del listato si intoppa e non corrisponde più a quanto lo sviluppo del metodo mi aveva fatto pensare ...................mai detto che sono normale !!!!!



    Sub main()
    Dim ambata(1)
    Dim ruota(1)
    Dim posta(1)
    ruota(1)=1
    posta(1)=1fin=EstrazioneFin
    ini=fin -100
    For es=ini To fin
    AvanzamentoElab ini,fin,es

    If Indicemensile(es)=1 Then
    a=Estratto(es,1,1)
    b=Estratto(es,1,5)
    ambata(1)=Fuori90(a + b)

    ImpostaGiocata 1,ambata,ruota,posta,9,1
    Gioca es

    End If
    Next
    ScriviResoconto
    End Sub



    Bene...............adesso cosa ci aggiungiamo ???????????

    1°) Mettiamo un'altra ambata (che sarà il vertibile della 1°) e quattro abbinamenti x ambo, le giocate saranno così......2 ambate e 8 ambi

    2°) Per semplificare l'output del listato si può usare l'istruzione ",,True" dopo il "Gioca es", in tal modo verranno visualizzati solo gli esiti positivi.....(poi spiegheremo meglio la fazenda !!!!)

    Per adesso basta così, tanto più che andando assolutamente a caso, gli esiti mi sembrano del tutto felici................per cui me li vado a giocare..............hai visto mai !!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Nuova istruzione: y = Vert(x)Attribuisce a y il numero x ........ letto al contrario, spiegare cos'è il vertibile a chi mastica di lotto ...............sich !!! ................siamo seri !!!




    Sub main()
    Dim ambata(2) 'Aumento a 2 la dimensione della VI (variabile indicizzata) "ambata"
    Dim abb(4) 'Dichiaro la VI "abb(4)" per gli abbinamenti x ambo
    Dim numeri(2) 'Dichiaro la VI "numeri(2)" x l'ImpostaGiocata ambi
    Dim ruota(1)
    Dim posta(1)
    Dim poste(2) 'Dichiaro la VI "poste(2)" per il gioco d'ambo
    ruota(1)=1
    posta(1)=1 'Dò valore 1 (lira, euro, cent ....... pesos !!!) alle poste del gioco
    poste(2)=1
    abb(1)=10 'Dò alle 4 VI "abb" valori casuali per formare gli ambi
    abb(2)=20
    abb(3)=30
    abb(4)=40

    fin=EstrazioneFin
    ini=fin -100
    For es=ini To fin
    AvanzamentoElab ini,fin,es

    If Indicemensile(es)=1 Then
    a=Estratto(es,1,1)
    b=Estratto(es,1,5)
    ambata(1)=Fuori90(a + b)
    ambata(2)=Vert(ambata(1)) 'Attribuisco alla 2°VI (ambata(2)) come valore il vertibile della 1°ambata

    co=1 'metto ad 1 il contatore della giocate
    ImpostaGiocata co,ambata,ruota,posta,9,1 'Imposto le giocate per ambata

    For x=1 To 2 'conto le ambate
    For y=1 To 4 'conto gli abbinamenti
    co=co+1 'x ogni abbinamento ambata + abb incremento il contagiocate
    numeri(1)=ambata(x) 'Dò a numeri(1) e (2) i vari valori di ambata e abb
    numeri(2)=abb(y)
    ImpostaGiocata co,numeri,ruota,poste,9,2 'imposto le giocate x ambo
    Next 'chiudo i due for precedenti
    Next

    Gioca es ',True 'Se si vogliono vedere solo gli esiti positivi, basta aggiungere ",True"
    'all' istruzione "Gioca es" togliendo l'apostrofo davanti alla virgola
    End If
    Next
    ScriviResoconto
    End Sub




    Lezione 3



    La nave và
    Facciamo 3 aggiuntine alla nostra nave scuola:

    1°) Eliminiamo eventuali ambi con numeri ripetuti in gioco, inutili ai fini del gioco
    2°) Mettiamo un blocco alle giocate in caso di un' esito positivo
    3°) Razionalizziamo il "Gioca es"

    Pulito il listato da tutte le spiegazioni precedenti:


    Sub main()
    Dim ambata(2)
    Dim abb(4)
    Dim numeri(2)
    Dim ruota(1)
    Dim posta(1)
    Dim poste(2)
    ruota(1)=1
    posta(1)=1
    poste(2)=1
    abb(1)=10
    abb(2)=20
    abb(3)=30
    abb(4)=40

    fin=EstrazioneFin
    ini=fin -100
    For es=ini To fin
    AvanzamentoElab ini,fin,es

    If Indicemensile(es)=1 Then
    a=Estratto(es,1,1)
    b=Estratto(es,1,5)
    ambata(1)=Fuori90(a + b)
    ambata(2)=Vert(ambata(1))

    co=1
    ImpostaGiocata co,ambata,ruota,posta,9,1
    For x=1 To 2
    For y=1 To 4
    co=co+1
    numeri(1)=ambata(x)
    numeri(2)=abb(y)
    ImpostaGiocata co,numeri,ruota,poste,9,2
    Next
    Next

    Gioca es

    End If
    Next
    ScriviResoconto
    End Sub



    Subito dopo aver composto l'ambo con:

    For x=1 To 2
    For y=1 To 4
    co=co+1
    numeri(1)=ambata(x)
    numeri(2)=abb(y)

    può succedere che i due numeri siano uguali per cui la giocata sarebbe inutile, ma il listato visualizzerebbe una giocata, non valida, ( un numero x ambo ) creando confusione, si può eliminare il fatto con questa istruzione:If NumeriRipetuti (numeri) = True Then Erase numeri

    Che vuol dì, se i due numeri sono uguali allora me li cancelli tutti e due per cui l'ImpostaGiocata non trovando numeri da giocare mi salta la giocata relativa, e questo lo si può vedere disattivando il ",True" del "Gioca es" in modo da vedere tutte le giocate, si noterà che sulle 9 giocate può capitare che ne manchi una, lì c'era un ambo ripetuto che è stato eliminato.

    Terminati gli " ImpostaGiocata " vediamo di dire al listato come mi deve bloccare tutto il " Gioca es " al 1° Esito positivo:

    For x=2 To 9
    ImpostaInterruzioni x,1,1
    ImpostaInterruzioni 1,x,2
    Next

    Ovvero, attivato un contatore da 2 a 9 (quanti sono gli ambi) col 1° ImpostaInterruzioni x,1,1, gli dirò bloccami le giocate da 2 a 9 (x) se la giocata numero 1 (,1,) e sarebbe quella dell'ambata, avrà dato esito positivo per ambata (,1).

    Viceversa......col secondo " ImpostaInterruzioni 1,x,2 " gli dico, mi blocchi la giocata numero 1 (ambata) se la giocata x ( da 2 a 9........gli ambi) hanno dato Esito positivo per 2 numeri.........un ambo appunto !!!!!!!


    Arriviamo al " Gioca es "

    Se la scrivo così com' è mi fa vedere in Output tutte e nove le giocate con tanto di esiti negativi per ogni estrazione scelta, ovvero mi fà un casino della Mianonna da rimbeccilirmi le palle degli occhi.........d'altro canto se uso " Gioca es,True " mi fà veder sì, solo gli esiti positivi, ma il vigliacco mi nasconde anche gli esiti eventualmente in corso, per cui non sò se devo giocarli ancora o no .............aluuuuuuuuura ???????

    Basta dirgli le cose nelle dovute maniere !!!

    If es<fin-9 Then
    Gioca es,True
    Else
    Gioca es
    End If

    Se l'estrazione che stai analizzando è inferiore alla finale meno 9 colpi (quelli scelti come tempo di gioco) allora mi fai vedere solo gli esiti positivi altrimenti mi fai vedere tutto..................tonto !!!!!!!!!!!!!!!!!!

    Semplice...............no ????????????? eheheheheheheh !!!!!!!!

    E mi raccomando gente sfrucugliate, incasinate e modificate il listato cercando di capire sia quello che fate voi, che le pernacchie che vi farà L8..........o si stufa lui e farà quello che volete voi...............o vi stufate voi ed è meglio allora che vi Date all'ortobotanica !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Questo è il listato completo.....................per adesso !!!!!!!!!!!!!!

    Ciao apprendisti Stregoni !!!!!!!!

    Roby




    Sub main()
    Dim ambata(2)
    Dim abb(4)
    Dim numeri(2)
    Dim ruota(1)
    Dim posta(1)
    Dim poste(2)
    ruota(1)=1
    posta(1)=1
    poste(2)=1
    abb(1)=10
    abb(2)=20
    abb(3)=30
    abb(4)=40

    fin=EstrazioneFin
    ini=fin -100
    For es=ini To fin
    AvanzamentoElab ini,fin,es

    If Indicemensile(es)=1 Then
    a=Estratto(es,1,1)
    b=Estratto(es,1,5)
    ambata(1)=Fuori90(a + b)
    ambata(2)=Vert(ambata(1))

    co=1
    ImpostaGiocata co,ambata,ruota,posta,9,1
    For x=1 To 2
    For y=1 To 4
    co=co+1
    numeri(1)=ambata(x)
    numeri(2)=abb(y)

    '****************
    If NumeriRipetuti (numeri)=True Then Erase numeri
    '****************

    ImpostaGiocata co,numeri,ruota,poste,9,2
    Next
    Next

    '*********************
    For x=2 To 9
    ImpostaInterruzioni x,1,1
    ImpostaInterruzioni 1,x,2
    Next
    '*********************

    '*********************
    If es<fin-9 Then
    Gioca es,True
    Else
    Gioca es
    End If
    '*********************


    End If
    Next
    ScriviResoconto
    End Sub






    Qui' trovate le lezioni sopra in modo da essere visualizzate con L8+,cioe' con estensione.ls:

    www.2shared.com/file/pSsW_3I_/Lezioni_Robyca.html



    Sono graditi i vostri voti per aiutare questo Forum a crescere.Grazie! Clicca qui bottone3


    Saluti,sean69!!


    novita_blu_f



    Edited by sean69 - 6/3/2012, 17:16
     
    Top
    .
  2. Alfredo1975
     
    .

    User deleted


    se volessi abbinare dei numeri con delle operazioni mie come de fare, se lascio abb=10 mi da il numero 10, invece vorrei mettere estratto(es,1,4) come devo fare?
    grazie anticipatamente
     
    Top
    .
1 replies since 6/3/2012, 16:46   2599 views
  Share  
.