countdown

kmXite

Grünschnabel
Also ich bin ein totaler n00b in vbasic. Heute angefangen :)
Und jetzt möchte ich gleich ein recht nützliches Tool schreiben. Die umgebung ahbe ich schon fertig: http://www.kmxite.de/ut2003/timer.jpg

So hier möchte ich jetzt timer einbauen: also das wenn man auf spiel starten klickt, der countdown oben von 20 -> 0 geht und zwar im sekunden takt.

DAs gleiche soll bei den ITEMs passieren, nur das ich da halt auf andere schaltflächen klicke. nun meine frage wie geht das ... wie gesagt ich bin totaler n00b und finde net gerade viele tuts dazu. Ich habe shcon nen tut hierzu gesehen aber da lief die Zeit in Minuten und hier kommt es halöt auf sekunden an.

schonma thx 4 help :)
 
doch ich meine es ernst, vieleicht suche ich auch einfach falsch :(

Auf jeden fall habe ich jetzt schoneima folgenden code aus dem minuten code *zusammengeflickt*:

Code:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Option Explicit

Dim intGame As Integer


Private Sub Form_Load()
    Timer1.Interval = 1000 ' setzten des Intervals auf 60000 Millisekunden = 60 Sekunde = 1 Minute
    Timer1.Enabled = False  ' wir schalten den Timer erst mal aus
    
    Timer2.Interval = 1000 ' setzten des Intervals auf 60000 Millisekunden = 60 Sekunde = 1 Minute
    Timer2.Enabled = False  ' wir schalten den Timer erst mal aus
    
    Timer3.Interval = 1000 ' setzten des Intervals auf 60000 Millisekunden = 60 Sekunde = 1 Minute
    Timer3.Enabled = False  ' wir schalten den Timer erst mal aus
    
    Timer4.Interval = 1000 ' setzten des Intervals auf 60000 Millisekunden = 60 Sekunde = 1 Minute
    Timer4.Enabled = False  ' wir schalten den Timer erst mal aus
    
    Timer5.Interval = 1000 ' setzten des Intervals auf 60000 Millisekunden = 60 Sekunde = 1 Minute
    Timer5.Enabled = False  ' wir schalten den Timer erst mal aus
End Sub

Private Sub Command3_Click()
    intGame = 1200                 ' die gezählten Minuten auf 20 setzten
    lblGame(1) = CStr(intGame)     ' setzen der Anzeige
    Timer1.Enabled = True          ' nun schalten wir unseren Timer ein

End Sub

Private Sub Label1_Click()
MsgBox "© 2003 by kmXite" & vbCrLf & "http://www.kmxite.de" & vbCrLf & "kmxite@gmx.de" & vbCrLf & vbCrLf & "This Tool is FREEWARE", vbOKOnly + vbInformation, "Copyright"
End Sub

Private Sub Timer1_Timer()
    intGame = intGame - 1          'beim Timerevent (tritt jede Minute auf) setzen wir den Minutenzähler um 1 runter
    If intGame <= 0 Then           '20 Minuten abgelaufen sind, dann setzen wir unseren Timer zurück und
       intGame = 20
    End If
    lblGame(1) = CStr(intGame)     ' setzen der Anzeige
End Sub

bloss habe ich jetzt da eine reine sekunden anzeige: wie formatiere ich diese anzeige so das da mm:ss steht?
 
Eine Möglichkeit wäre es, dass Du für jede Anzeige drei Labels nimmst. In dem linken zeigst Du die Anzahl der Minuten an, in dem mittleren den Doppelpunkt und in dem rechten die Sekunden.
Und dann kannst Du mit normalen If-Verzweigungen überprüfen, ob die Sekunden auf 0 runter sind. Wenn das so ist, verringerst Du die Minuten um eins und fängst bei den Sekunden wieder mit 59 an zu zählen.
 
Du könntest ja auch mit Steuerelementfeldern gruppieren. Dazu musst Du nur mehrere Labels gleich benennen und die Frage ob Du ein Steuerelementfeld anlegen willst mit ja beantworten. Dann kannst Du die Labels mehr oder weniger wie ein Array benutzen.

Oder Du nimmst den String in der Anzeige erst auseinander, rechnest dann im Timerereignis damit herum und schreibst nachher alles wieder zusammen.
Code:
Dim m As Integer
Dim s As Integer
Dim anzeige() As String

anzeige = Split(deinLabel.Caption, ":") 'aufteilen
m = CInt(anzeige(1)) 'Minuten
s = CInt(anzeige(2)) 'Sekunden

If s = 0 Then
    ' eine Minute runter und die Sekunden wieder auf 59 setzen
    m = m - 1
    s = 59
Else
    ' nur eine Sekunde runter, die Minuten gleich lassen
    s = s - 1
End If

deinLabel.Caption = CStr(m) & ":" & CStr(s)

Aber es kann auch sein, dass es mit der Format-Funktion deutlich einfacher geht. Bloss kenn ich mich damit nicht aus... :rolleyes:
 

Neue Beiträge

Zurück