frabelfagor_95 (Normal User)
Newbie
Messaggi: 17
Iscritto: 05/01/2011
|
Ciao a tutti !
Sono nuovo del forum e oggi vi voglio chiedere un buon codice che immesso in un timer ogni 5 secondi, in una textbox, mi venga fuori un numero casuale MA che esso non si debba ripetere mai !
PS: Uso il visual basic 6 !
Grazie a tutti
Attendo un vostro aiuto
|
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Ciao,
per avere un algoritmo con un tempo di risposta lineare fai in questo modo:
1) dichiara un array di 90 interi in cuimetti i relativi 90 numeri
2) dichiara una variabile intera Num e ponila al valore 90
3) ad ogni estrazione fai cosi':
3.1) prendi un numero casuale X tra 1 e Num
3.2) estrai il numero contenuto nell'array al posto X
3.3) scambia nell'array gli elementi di posti X e Num
3.4) Decrementa la variabile Num
Questo e' il modo in cui agirei io;
in alternativa, se vuoi, puoi usare una lista invece dell'array, in tal caso potrai eliminare l'elemento estratto invece di scambiarlo con l'ultimo.
Per la traduzione in VB6 tocca a te.
Ciao.
Luigi
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
Non so se hai letto il mio messaggio nella seconda discussione che ti ho chiuso, ma te lo riposto...
Poi vedo che ogni label contiene un numero e in base al numero uscito mostri la label corrispondente... ma scusa non potresti usare un'unica label dove mostri il numero uscito? (Con: lbl1.caption = txtestratto.text)
|
Ultima modifica effettuata da GrG il 07/01/2011 alle 12:35 |
|
delta (Member)
Rookie
Messaggi: 37
Iscritto: 25/08/2010
|
Postato originariamente da frabelfagor_95:
Ciao a tutti !
Sono nuovo del forum e oggi vi voglio chiedere un buon codice che immesso in un timer ogni 5 secondi, in una textbox, mi venga fuori un numero casuale MA che esso non si debba ripetere mai !
PS: Uso il visual basic 6 !
Grazie a tutti
Attendo un vostro aiuto
|
"vi voglio chiedere buon buon codice?"
io ti suggerisco di usare qualcosa di questo tipo
Codice sorgente - presumibilmente Visual Basic 6 |
Dim an_int As Integer = Random*numero_arbitrariamente_alto
|
poi il resto te lo vedi da te... |
|
frabelfagor_95 (Normal User)
Newbie
Messaggi: 17
Iscritto: 05/01/2011
|
Ciao Luigi!
Grazie molto per avermi risposto !
so che sicuramente quello che mi hai detto funziona, ma io sono alle prime con visual basic 6 e ti sarei grado se riusciresti a postarmi un codice facile
Ti ringrazio in anticipo, e ti saluto
|
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Postato originariamente da frabelfagor_95:
Ciao Luigi!
Grazie molto per avermi risposto !
so che sicuramente quello che mi hai detto funziona, ma io sono alle prime con visual basic 6 e ti sarei grado se riusciresti a postarmi un codice facile
Ti ringrazio in anticipo, e ti saluto
|
Salve,
se avessi voluto postarti il codice gia' pronto non credi che lo avrei gia' fatto?
Se lo avessi fatto, pero', non ti avrei fatto un favore, anzi, finirebbe che tu stai sempre qui' ( o da qualche altra parte ) a elemosinare del codice, senza mai imparare a fartelo da te.
Se sei alle prime armi, studia, inizia da esempi semplici, anche ca(biiiip)ate, l'importante e' che capisci come funziona il linguaggio, vedrai che piano piano riuscirai a fartelo da te il codice.
Se poi scrivi del codice che non funziona, e non riesci a capire perche', allora siamo qui', puoi postarlo ( possibilmente ben commentato, spiegando cosa non funziona, come vorresti che funzionasse, che errori da, se ne da, ecc... ) e ti daremo una mano a capire cosa non funziona, ma sempre col fine di imparare.
Ok?
Ciao.
Luigi |
|
frabelfagor_95 (Normal User)
Newbie
Messaggi: 17
Iscritto: 05/01/2011
|
Ehi !
ma cosa fai mi perseguiti ?
comunque si, hai ragione adesso ti posto il mio codice
Ho un timer1 con intervallo di 3000 e dentro ho inserito questo codice:
Codice sorgente - presumibilmente VB.NET |
Private Sub Timer1_Timer() Randomize txtestreatto= Int(Rnd * 15) if txtestratto.text = lbl1.caption then lbl1.visible = true end if if txtestratto.text = lbl2.caption then lbl2.visible = true end if if txtestratto.text = lbl3.caption then lbl3.visible = true end if if txtestratto.text = lbl4.caption then lbl4.visible = true end if 'ecc... End Sub
|
e i numeri escono in randomize ma come ho detto prima, purtroppo si ripetono !
poi, ho 90 label tutte numerate
Esempio:
la label che contiene il numero 1, si chiama lbl1 e così via... ovviamente ho messo nello stesso timer un controllo per rendere visibile le label in base al numero generato.
Ma ovviamente, l'unico problema è quello che i numeri estratti non devono ripetersi mai.
Ti basta ?
Grazie ancora !
Ultima modifica effettuata da frabelfagor_95 il 06/01/2011 alle 9:54 |
|
dedo93 (Normal User)
Newbie
Messaggi: 8
Iscritto: 03/01/2011
|
Io per una tombola avrei fatto una funzione che genera un numero da 1 a 90, controllando in un array se il valore è già presente
Dim numeriEstratti(1 to 90) as Boolean
se è già uscito richiamo la funzione nuovamente (funzione ricorsiva).
una volta trovato il nuovo numero lo aggiungo in una listbox per esempio. oppure faccio un append in una text box.. e via dicendo...
|
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Postato originariamente da dedo93:
Io per una tombola avrei fatto una funzione che genera un numero da 1 a 90, controllando in un array se il valore è già presente
Dim numeriEstratti(1 to 90) as Boolean
se è già uscito richiamo la funzione nuovamente (funzione ricorsiva).
una volta trovato il nuovo numero lo aggiungo in una listbox per esempio. oppure faccio un append in una text box.. e via dicendo...
|
Questo e' sicuramente il modo piu' sbrigativo, purtroppo man mano che i numeri ancora da estrarre diminuiscono il tempo di estrazione tende ad aumentare esponenzialmente; quello che avevo proposto io e' piu' elaborato, ma il tempo di estrazione e' lineare. |
|