Timer für Spiel

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Timer für Spiel

    Hi

    Ich habe vor Für die Schule fürn Informatik unterricht ein kleines Spiel zu schreiben.
    Das Spiel soll so aussehen:

    Man muss innerhalb einer Bestimmten Zeit so viele Buttons wie möglich anklicken; hierfür soll ein Timer von 60 Sekunden laufen, wenn der Timer beendet ist soll z.B. eine Message Box erscheinen.
    Das Mit den Buttons und alles ander ist eigentlich kein Problem blos beim Timer verzweifel ich hab auch schon geoogelt, Videos geschaut usw. allerdings wird da überall nur erklärt wie ich einen "echten" Timer machen kann also um Zeit zu stoppen und so. Ich möchte aber einen Timer bzw. Countdown der Nach 60 Sekunden irgendeine Meldung ausgibt.
    Bin Noch Anfänger und kenne mich mit VB noch nicht sehr gut aus.

    lg. Nico

    VB.NET-Quellcode

    1. Public Class Form
    2. Private WithEvents Tmr As New System.Windows.Forms.Timer
    3. Private Sub Form_OnLoad(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    4. Tmr.Interval = 60000 ' 60 Sekunden = 60000 Millisekunden
    5. Tmr.Start()
    6. End Sub
    7. Private Sub Tmr_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Tmr.Tick
    8. Tmr.Enabled = False
    9. ' abgelaufen
    10. End Sub
    11. End Class
    Was die Timer-Tick Sub ist weißt Du?
    Sollte so in der Richtung aussehen:
    Private Sub Timer_bla_Tick() Handles Timer_bla.Tick

    Du deklarierst eine globale Variable als Integer, die Du mit 60 initialisierst.

    In der Timer-Tick Sub zählst Du zuerst immer eins weg (VariablenName -= 1).

    Dann überprüfst Du, ob die Variable 0 ist.
    Wenn nein:
    Irgendwo die Zahl ausgeben.
    Ich vermute mal, dass es ein Label sein wird, darum Label_bla.Text = VariablenName.ToString
    Das .ToString ist wichtig. Wenn Dein Lehrer Ahnung hat wird er schon erklärt haben, dass man Option Strict auf On stellen muss. Falls er das noch nicht gesagt hat weise ihn bitte darauf hin (natürlich freundlich).

    Wenn ja:
    Wieder auf 60 stellen.
    Die .Enabled Eigenschaft des Timers auf False setzen.
    Eventuell den Text des Labels überschreiben (mit Label_bla.Text = "" bzw. Label_bla.Text = Nothing)
    ... ja, Spiel zu Ende.


    Edit: So wie haiyyu es löst sieht man halt nicht die sekunden herunterzählen.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Das ginge mit einer kleinen Modifizierung (-kation?) am Code:

    VB.NET-Quellcode

    1. Public Class Form
    2. Private WithEvents Tmr As New System.Windows.Forms.Timer
    3. Private TimeLeft As Integer = 60
    4. Private Sub Form_OnLoad(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    5. Tmr.Interval = 1000 ' 1000 Millisekunden = 1 Sekunde
    6. Tmr.Start()
    7. End Sub
    8. Private Sub Tmr_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Tmr.Tick
    9. TimeLeft -= 1
    10. If TimeLeft <= 0 Then
    11. Tmr.Stop()
    12. TimeLeft = 60
    13. ' Code, wenn die Zeit abgelaufen ist
    14. End If
    15. ' Code, der jede Sekunde ausgeführt wird (z.B. Label updaten)
    16. ' Beispiel:
    17. Label1.Text = TimeLeft.ToString() & " Sekunden übrig."
    18. End Sub
    19. End Class
    Noch eine Modifizierung:
    Der Timer sorgt sich nur um sich selbst und den Abbruch des Spiels. Mach Dir einen Start-Button, der eine neue Spielrunde startet.
    Ist wesentlich übersichtlicher.
    Dieser Button sollte aber während der Dauer des Spiels selbst unsichtbar sein, damit er nicht zufällig im Spiel gedrückt wird. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!