Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    [VB6] reazione ad uno stimolo visivo

    ciao innanzitutto grazie per l'aiuto che mi avete offerto nel post precedente.

    ora posto un problema più difficile almeno per me.
    vorrei realizzare una specie di test di reazione ad uno stimolo visivo.
    avevo pensato a questo:
    uno shape che si illumina per dare lo start
    un pulsante che arresta il tempo e da in millisecondi il tempo di reazione.
    questo però deve avvenire ciclicamente in 1 minuto ma in modo random.
    E' possibile fare ciò.
    avete da darmi qualche codice?
    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Metti un timer. Lo regoli, per esempio, ad un secondo. Fai generare un numero random. Se il numero è più grande di un tot, fai partire la sequenza cambiamento colore/cronometro, altrimenti. Così hai garantita una certa casualità.
    Se vuoi ti scrivo un pò di codice.

  3. #3
    Originariamente inviato da pprllo
    Metti un timer. Lo regoli, per esempio, ad un secondo. Fai generare un numero random. Se il numero è più grande di un tot, fai partire la sequenza cambiamento colore/cronometro, altrimenti. Così hai garantita una certa casualità.
    Se vuoi ti scrivo un pò di codice.
    se ne hai voglia ok lo accetto molto volentieri.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Per esempio:
    codice:
    Dim TempoTrascorso
    
    Private Sub Command1_Click()
    Randomize (TempoTrascorso)
    MsgBox "Hai impiegato " + Str(TempoTrascorso / 100) + " secondi !"
    Command1.Visible = False
    End Sub
    
    Private Sub Timer1_Timer()
    TempoTrascorso = TempoTrascorso + 1
    If Rnd() * 100 > 99 Then
        Command1.Visible = True
        TempoTrascorso = 0
    End If
    End Sub
    Allora, si suppone che ci sia un bottone (Command1) ed un Timer(Timer1) regolato a 10 millesimi di secondo.
    Il generatore di numeri random viene reinizializzato ogni volta che si preme il bottone secondo il tempo impiegato a reagire in modo di assicurare la casualità dei tempi di comparsa. Questo è tutto. Puoi sostituire con una forma. Potresti anche far spostare il bottone/forma caso dentro la form, sempre in base a valori casuali.

  5. #5
    Originariamente inviato da pprllo
    Per esempio:
    codice:
    Dim TempoTrascorso
    
    Private Sub Command1_Click()
    Randomize (TempoTrascorso)
    MsgBox "Hai impiegato " + Str(TempoTrascorso / 100) + " secondi !"
    Command1.Visible = False
    End Sub
    
    Private Sub Timer1_Timer()
    TempoTrascorso = TempoTrascorso + 1
    If Rnd() * 100 > 99 Then
        Command1.Visible = True
        TempoTrascorso = 0
    End If
    End Sub
    Allora, si suppone che ci sia un bottone (Command1) ed un Timer(Timer1) regolato a 10 millesimi di secondo.
    Il generatore di numeri random viene reinizializzato ogni volta che si preme il bottone secondo il tempo impiegato a reagire in modo di assicurare la casualità dei tempi di comparsa. Questo è tutto. Puoi sostituire con una forma. Potresti anche far spostare il bottone/forma caso dentro la form, sempre in base a valori casuali.
    forse non mi sono spiegato bene.il segnale mi deve venire da uno shape (cerchio) che si illumina e si deve reagire premendo un pulsante.questo deve avvenire in modo random nell'arco ad esempio di un minuto.
    quindi in pratica ti spiego meglio il mio progetto.
    ho un text1.text dove inserisco i secondi della durata del test.
    con commandbutton1 faccio partire il test che dura tot minuti.
    inizia lo stimolo visivo (shape che si illumina) e si reagisce cliccando un commandbutton2.l'operazione si ripete più volte nell'arco dei secodi stabiliti all'inizio in modo random (questo per non avere l'anticipazione ossia la previsione dello stimolo)
    in una listbox vengone registrati i tempi di reazione.
    spero di essre stato un pò più chiaro.
    se riesci a tradurre in codice tutto questo sei un grande.
    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    codice:
    Dim TempoTrascorso As Integer
    Dim TempoAllaFine As Single
    
    Private Function ToSeconds(str As String) As Double
    ToSeconds = Val(Mid$(str, 1, 2)) * 60 + Val(Mid$(str, 4, 2))
    End Function
    
    Private Sub Command1_Click()
    TempoAllaFine = ToSeconds(Text1.Text) * 100
    Timer1.Interval = 10
    Randomize (Timer)
    End Sub
    
    Private Sub Command2_Click()
    If Shape1.FillColor = &HFF Then
        List1.AddItem (str(TempoTrascorso))
        Shape1.FillColor = &H80
        Randomize (TempoTrascorso)
    End If
    End Sub
    
    Private Sub Timer1_Timer()
    If Shape1.FillColor = &H80 Then
        If Rnd() * 100 > 99 Then
            Shape1.FillColor = &HFF
            TempoTrascorso = 0
        End If
    Else
        TempoTrascorso = TempoTrascorso + 1
    End If
    TempoAllaFine = TempoAllaFine - 1
    If TempoAllaFine = 0 Then Timer1.Interval = 0
    End Sub
    Qui si presuppone che nel campo text1 si mettono i minuti/secondi in formato ##.##
    Per il resto credo si spieghi da solo.

  7. #7
    Originariamente inviato da pprllo
    codice:
    Dim TempoTrascorso As Integer
    Dim TempoAllaFine As Single
    
    Private Function ToSeconds(str As String) As Double
    ToSeconds = Val(Mid$(str, 1, 2)) * 60 + Val(Mid$(str, 4, 2))
    End Function
    
    Private Sub Command1_Click()
    TempoAllaFine = ToSeconds(Text1.Text) * 100
    Timer1.Interval = 10
    Randomize (Timer)
    End Sub
    
    Private Sub Command2_Click()
    If Shape1.FillColor = &HFF Then
        List1.AddItem (str(TempoTrascorso))
        Shape1.FillColor = &H80
        Randomize (TempoTrascorso)
    End If
    End Sub
    
    Private Sub Timer1_Timer()
    If Shape1.FillColor = &H80 Then
        If Rnd() * 100 > 99 Then
            Shape1.FillColor = &HFF
            TempoTrascorso = 0
        End If
    Else
        TempoTrascorso = TempoTrascorso + 1
    End If
    TempoAllaFine = TempoAllaFine - 1
    If TempoAllaFine = 0 Then Timer1.Interval = 0
    End Sub
    Qui si presuppone che nel campo text1 si mettono i minuti/secondi in formato ##.##
    Per il resto credo si spieghi da solo.



    grazie innanzitutto per la pazienza e la competenza.
    però a me non va niente come mai?
    il codice che mi hai scritto è tutto ho devo inserire qualcosa?

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Devi inserire i controlli
    Nel form ci vuole:
    - una TextBox (Nome:Text1) dove scrivi i minuti ed i secondi in formato ##.##
    - 2 Button (Nome: Command1 e Command2) Command1 fa partire la prova. Command2 è quello da premere quando si accende la Shape
    - una Shape (Nome: Shape1) che è quella che si illumina
    - una ListBox (Nome: List1) Dove verranno scritti i tempi di reazione
    - 2 Timer (Nome: Timer1 e Timer2)
    Mettili come preferisci nella form e il tutto funzionerà

  9. #9
    Originariamente inviato da pprllo
    Devi inserire i controlli
    Nel form ci vuole:
    - una TextBox (Nome:Text1) dove scrivi i minuti ed i secondi in formato ##.##
    - 2 Button (Nome: Command1 e Command2) Command1 fa partire la prova. Command2 è quello da premere quando si accende la Shape
    - una Shape (Nome: Shape1) che è quella che si illumina
    - una ListBox (Nome: List1) Dove verranno scritti i tempi di reazione
    - 2 Timer (Nome: Timer1 e Timer2)
    Mettili come preferisci nella form e il tutto funzionerà
    scusami ancora:
    formato ##.## che significa?
    lo shape non mi si accende.
    nella list box escono dei numeri ma che sono millisecondi o secondi?
    il codice per il timer 2 non c'è

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Allora significa se vuoi dire test di 5 minuti e 4 secondi allora scrivi nella listbox
    codice:
    05.04
    Se vuoi fare di 20 secondi scrivi
    codice:
    00.20
    Dopo aver scritto nella listbox il valore, premi il Command1. Quindi lo Shape (dimenticavo, devi settare il colore iniziale dello Shape a rosso scuro, codice &H80) Si illuminerà ad intervalli random fino a che non scade il tempo e poi smette. Premi il Command2 quando vedi la luce. I tempi di reazione sono in centesimi di secondo.
    PS: Il Timer2 non serve, errore mio, mi ero confuso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.