ich habe eine progressbar die mir eine Zeit simuliert (z.b. 10 sekunden). Es wird eine Rechenaufgabe angezeigt,in dem Fall für 10 sekunden, innerhalb dieser zeit muss man die aufgabe beantworten. Abhängig von der Geschwindigkeit der beantwortung der Aufgabe erfolgt eine Bepunktung.
Wie kann ich das jetzt realisieren,dass wenn man schneller eine Aufgabe beantwortet mehr Punkte bekommt als wenn ich für die Frage länger gebraucht hätte, dass heisst, dass die Bepunktung von der Zeit abhängt.
Hoffe ihr könnt mir weiterhelfen!!! _________________
Also ich würde beim starten der Zeit (also wenn die Zeit anfängt zu laufen) Die aktuelle Zeit in einer Variable speichern. Am besten holst du dir die Zeit mithilfe von der Funktion GetTickCount. Die gibt die Zeit seit dem Systemstart in Millisekunden zurück.
Code:
Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
Dann erstellst du einen Timer der in einem bestimmten Intervall überprüft ob die Zeit um ist und die Progress Bar aktualisiert. Wie viel Zeit vergangen ist kannst du ausrechnen indem du den Anfangswert von GetTickCount den du dir geholt hast vom neuen abziehst.
Beispiel:
(Bitte folgende Elemente hinzufügen: 1 Progressbar, 1 Command Button und 1 Timer, alle mit den standard Namen)
Code:
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private startTime As Long
Private Sub Command1_Click()
Dim timeDiff As Long
timeDiff = GetTickCount() - startTime 'Wie viel Zeit ist vergangen?
MsgBox "Du hast " & (timeDiff / 1000) & " Sekunden gebraucht!" 'Zeit ausgeben
Timer1.Enabled = False 'Den Timer stoppen
End Sub
Private Sub Form_Load()
startTime = GetTickCount() 'Zeit speichern
'Timer initialiseren
Timer1.Interval = 250 'alle 250 Millisekunden aktualiseren
Timer1.Enabled = True 'Timer starten
'Progressbar initialiseren
ProgressBar1.Min = 0 'Bei 0 Anfangen
ProgressBar1.Max = 10000 'Bei 10.000 Millisekunden ist der Balken voll durch gelaufen
ProgressBar1.Value = 0 'Die Bar startet bei 0
End Sub
Private Sub Timer1_Timer()
Dim timeDiff As Long
timeDiff = GetTickCount() - startTime 'Wie viel Zeit ist vergangen?
If timeDiff < 10000 Then 'Wenn noch nicht 10.000 Millisekunden vergangen sind
ProgressBar1.Value = timeDiff 'Die ProgressBar aktualiserieren
Else 'Wenn DIe Zeit um ist
Timer1.Enabled = False 'Timer wieder deaktivieren
MsgBox "Zeit ist um!"
End If