Problema con ciclo

di il
23 risposte

Problema con ciclo

Salve 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

23 Risposte

  • Re: Problema con ciclo

    Scusate mi sono dimenticato un particolare. Sto lavorando con VB.NET 2010
  • Re: Problema con ciclo

    Si 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.
  • Re: Problema con ciclo

    No 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
  • Re: Problema con ciclo

    Ciao,
    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
  • Re: Problema con ciclo

    No 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
  • Re: Problema con ciclo

    Quindi 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...
  • Re: Problema con ciclo

    Ok allora pubblico il codice così si capisce meglio
  • Re: Problema con ciclo

    Sì direi che è una buona idea!
  • Re: Problema con ciclo

    Private 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
  • Re: Problema con ciclo

    Private 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
  • Re: Problema con ciclo

    Ovviamente secondi e' dichiarato pubblica
  • Re: Problema con ciclo

    Qualcuno mi potrebbe aiutare?
  • Re: Problema con ciclo

    Ciao ma non ti ho già fornito il codice per il conto alla rovescia nell'altro thread?
  • Re: Problema con ciclo

    Ciao 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
Devi accedere o registrarti per scrivere nel forum
23 risposte