Ddna_programmerUtente AttivoIscritto daapr, 2012Messaggi37320 mag 2012, 19:00Salve a tutti, ho un problema con un ciclo do-while; in pratica ho un timer che decrementa ogni secondo una variabile che inizializzata a 20. in pratica il ciclo, fin quando secondi(la variabile che si decrementa) e' diverso da 0 deve calcolare un numero random. il problema e' che quando compilo il programma e inizia il ciclo il programma si "frizza" si blocca e devo stoppare il debug; per provare al posto della while ho messo una if(ovviamente non mi da i risultati che mi aspettavo era solo per provare) e non mi da questo problema; Ecco il codice del ciclo per capirci meglio: Do Label3.Text = "ENTRATO" x.next(3) 'calcolo numero random Loop While secondi <> 0 'quando esce dalla while If secondi = 0 Then time_game.Stop() MsgBox("ciao") End If Mi potreste aiutare nel capire dov'è l'errore, perché da codice non lo riesco proprio a capire
Ddna_programmerUtente AttivoIscritto daapr, 2012Messaggi37320 mag 2012, 19:16Scusate mi sono dimenticato un particolare. Sto lavorando con VB.NET 2010
/Anonimizzato10403Utente anonimizzato20 mag 2012, 20:37Si frizza perchè è in loop infinito: la variabile secondi non la tocchi nel ciclo do while! Tra l'altro anche quell'if appena fuori dal ciclo non ha molto senso: quando arrivi lì è sempre 0 secondi altrimenti non ci arriveresti.
Ddna_programmerUtente AttivoIscritto daapr, 2012Messaggi37320 mag 2012, 20:41No perché la variabile secondi si decrementa nel codice del timer, che non ho postato qui, In pratica a ogni secondo si decrementa la variabile secondi
/Anonimizzato7887Utente anonimizzato20 mag 2012, 21:41Ciao, non so come hai impostato il tuo timer ma quando dici alla variabile secondi che deve diminuire di uno ogni secondo non puoi anche generare un valore casuale? Poi quando il conteggio è terminato effettivamente è inutile mettere quell' if secondi = 0
Ddna_programmerUtente AttivoIscritto daapr, 2012Messaggi37320 mag 2012, 21:54No perché la generazione della variabile casuale sta dentro un evento di click di un button,non so se mi sono spiegato, se non lo sono stato ditemelo così lo rispiego
/Anonimizzato7887Utente anonimizzato20 mag 2012, 21:57Quindi il timer va avanti per i fatti suoi e quando si clicca sul button deve essere generato un numero casuale? Se è così non c'è bisogno di fare nessun ciclo. Però non credo sia così facile, quindi non so se ho capito molto bene il problema...
Ddna_programmerUtente AttivoIscritto daapr, 2012Messaggi37320 mag 2012, 22:10Ok allora pubblico il codice così si capisce meglio
Ddna_programmerUtente AttivoIscritto daapr, 2012Messaggi37320 mag 2012, 22:12Private Sub time_game_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles time_game.Tick secondi = secondi - 1 If secondi >= 0 Then lbl_timer.Text = secondi End If End Sub 'questo e' del timer
Ddna_programmerUtente AttivoIscritto daapr, 2012Messaggi37320 mag 2012, 22:17Private Sub btn_start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_start.Click If flag = True Then 'Procedura che fa iniziare il gioco time_game.Enabled = True start_game() 'procedure di gioco Else me.hide() End If End Sub Private Sub start_game() 'procedure start_game Do Label3.Text = "ENTRATO" t.Next(3) Loop While secondi <>0 'non sto qui a spiegare cosa fa il controllo in alto del flag ecc, perché centra poco col mio problema, se però ti può aiutare a capire come risolvere il problema dimmelo che los crivo
Ddna_programmerUtente AttivoIscritto daapr, 2012Messaggi37320 mag 2012, 22:18Ovviamente secondi e' dichiarato pubblica
Ddna_programmerUtente AttivoIscritto daapr, 2012Messaggi37321 mag 2012, 09:28Qualcuno mi potrebbe aiutare?
TokiModeratoreIscritto dagen, 2001Messaggi390021 mag 2012, 10:00Ciao ma non ti ho già fornito il codice per il conto alla rovescia nell'altro thread?
Ddna_programmerUtente AttivoIscritto daapr, 2012Messaggi37321 mag 2012, 10:04Ciao toki, si quello l'ho risolto e ti ringrazio ancora, il problema di adesso è che ho un ciclo che va in loop infinito e si frizza il programma, se vuoi dacci un'occhiata , ho postato il codice sopra