Public Class Form1
    Dim Tipp As New ToolTip                     ' kurzinformationen
    'Private booSpielAktiv As Boolean = False    ' spiel gestartet?    
    Private Const strSPIELANLEITUNG = "rechenkuenstler.pdf"
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        '--- die 20 zahlen
        AlleZahlen.Add(Label0) : AlleZahlen.Add(Label1) : AlleZahlen.Add(Label2) : AlleZahlen.Add(Label3) : AlleZahlen.Add(Label4)
        AlleZahlen.Add(Label5) : AlleZahlen.Add(Label6) : AlleZahlen.Add(Label7) : AlleZahlen.Add(Label8) : AlleZahlen.Add(Label9)
        AlleZahlen.Add(Label10) : AlleZahlen.Add(Label11) : AlleZahlen.Add(Label12) : AlleZahlen.Add(Label13) : AlleZahlen.Add(Label14)
        AlleZahlen.Add(Label15) : AlleZahlen.Add(Label16) : AlleZahlen.Add(Label17) : AlleZahlen.Add(Label18) : AlleZahlen.Add(Label19)
        '--- alle bildfelder für die würfel
        ZeichneWuerfel.Add(Pic0) : ZeichneWuerfel.Add(Pic1) : ZeichneWuerfel.Add(Pic2) : ZeichneWuerfel.Add(Pic3) : ZeichneWuerfel.Add(Pic4) : ZeichneWuerfel.Add(Pic5)
        ZeichneWuerfel.Add(Pic6) : ZeichneWuerfel.Add(Pic7) : ZeichneWuerfel.Add(Pic8) : ZeichneWuerfel.Add(Pic9) : ZeichneWuerfel.Add(Pic10) : ZeichneWuerfel.Add(Pic11)
        '--- rechenzeichen 
        BildNr.Add(FrmBilder.Pic0) : BildNr.Add(FrmBilder.Pic1) : BildNr.Add(FrmBilder.Pic2) : BildNr.Add(FrmBilder.Pic3)
        BildNr.Add(FrmBilder.Pic4) : BildNr.Add(FrmBilder.Pic5) : BildNr.Add(FrmBilder.Pic6)
        '--- kurzinformation
        RechenZeichen.Add(LblR0) : RechenZeichen.Add(LblR1) : RechenZeichen.Add(LblR2) : RechenZeichen.Add(LblR3) : RechenZeichen.Add(LblR4)
        '--- kurzinformation
        Tipp.AutoPopDelay = 5000 : Tipp.InitialDelay = 1000 : Tipp.ReshowDelay = 500 : Tipp.IsBalloon = True : Tipp.ShowAlways = False
        Tipp.SetToolTip(CmdBeenden, "Spiel beenden") : Tipp.SetToolTip(CmdWuerfeln, "Klicken um das Spiel zu beginnen") : Tipp.SetToolTip(CmdAnleitung, "Öffnet die Spielanleitung im PDF-Format")
        Tipp.SetToolTip(CmdOk, "Ergebnis der Berechung übernehmen") : Tipp.SetToolTip(cmdNeuerVersuch, "Alle Würfel zurück in den Würfelbecher")
        Tipp.SetToolTip(LblAktuell, "Aktuelles Ergebnis dieser Spielrunde") : Tipp.SetToolTip(LblPunkte, "Bisher erreichte Gesamtpunktzahl")
        Tipp.SetToolTip(LblR, "Zwischebnergebnis der aktuellen Berechnung")
        Tipp.SetToolTip(CmdPlus, "Addition") : Tipp.SetToolTip(CmdMinus, "Subtraktion")
        Tipp.SetToolTip(CmdTeilen, "Division") : Tipp.SetToolTip(CmdMal, "Multiplikation")
        '--- schaltflächen
        CmdOk.Text = "Ü&bernehmen" : cmdNeuerVersuch.Text = "Neuer &Versuch" : CmdBeenden.Text = "B&eenden" : CmdAnleitung.Text = "S&pielanleitung"
        CmdWuerfeln.Text = "&Neues Spiel"
        LblInfo.Text = "Klicke auf >Neues Spiel<," & vbCrLf & "um ein neues Spiel zu beginnen."
        GrpRechenOperationen.Text = "Rechensymbole"
        GrundEinstellung()
        StarteDasSpiel()
        CmdWuerfeln.Text = "Würfel&n"
        'booSpielAktiv = True
        '--------------------- 000
        iniArrays()
        LeseDatenBesterSpieler()       '-- 000
    End Sub
    Private Sub CmdWuerfeln_Click(sender As Object, e As EventArgs) Handles CmdWuerfeln.Click

        If CmdWuerfeln.Text = "&Neues Spiel" Then
            CmdWuerfeln.Text = "Würfel&n"
            Tipp.SetToolTip(CmdWuerfeln, "Klicken um zu Würfeln")
            GrundEinstellung()
            StarteDasSpiel()
        Else
            booGesperrt = True                    ' auswahl der würfel sperren
            CmdWuerfeln.Enabled = False
            Timer1.Interval = 30 : Timer1.Start()
            Timer2.Interval = 900 : Timer2.Start()
            WuerfelZuruecklegen()
            If mnuSoundAn.Checked Then
                Try
                    My.Computer.Audio.Play("RATTLE.WAV", AudioPlayMode.Background)
                Catch ex As Exception
                End Try
            End If
        End If
    End Sub

    Private Sub BeendeDasSpiel()

        Dim strMeldung As String = "Bist Du sicher," _
           & vbCrLf & "dass Du das Spiel beenden möchtest?"
        Dim strTitel As String = "Spiel beenden"
        Dim buttons As MessageBoxButtons = MessageBoxButtons.YesNo
        Dim DefaultButton As MessageBoxDefaultButton = MessageBoxDefaultButton.Button2
        Dim Icon As MessageBoxIcon = MessageBoxIcon.Question
        Dim intResultat As DialogResult
        If mnuSoundAn.Checked Then
            Try
                My.Computer.Audio.PlaySystemSound(
                                System.Media.SystemSounds.Question)
            Catch ex As Exception
                ' keine aktion
            End Try
        End If
        intResultat = MessageBox.Show(strMeldung, strTitel, buttons, Icon, DefaultButton)
        '-- reaktion
        If (intResultat = DialogResult.Yes) Then
            Close()
            'ElseIf (intResultat = DialogResult.No) Then
            '-- nicht schlie0en
        End If
    End Sub
    '-------------------------- aufruf der timer
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        NeuWuerfeln()
        BilderZuweisen()
    End Sub
    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        Timer1.Stop()
        Timer2.Stop()
        '-- noch eimal würfeln und liste füllen
        NeuWuerfeln()
        BilderZuweisen()
        LstWuerfel.Items.Clear()
        For i = 0 To 5
            LstWuerfel.Items.Add(intAugenZahlen(i).ToString)
        Next
        GrpBerechnungen.Enabled = True
        LblInfo.Text = "Klicke auf einen Würfel" & vbCrLf &
            "um mit der Bechnung zu beginnen!"
        booGesperrt = False       '-- auswahl der würfel freigeben
        GrpBerechnungen.Enabled = True
    End Sub
    Private Sub SoundUmschalten()
        If mnuSoundAn.Checked Then
            mnuSoundAn.Checked = False : mnuSoundAus.Checked = True
        Else
            mnuSoundAn.Checked = True : mnuSoundAus.Checked = False
        End If
    End Sub
    Private Sub ZeigeSpielAnleitung()
        Try
            Process.Start(System.IO.Path.Combine(Application.StartupPath, strSPIELANLEITUNG))
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub MnuSoundAn_Click(sender As Object, e As EventArgs) Handles mnuSoundAn.Click
        SoundUmschalten()
    End Sub
    Private Sub MnuSoundAus_Click(sender As Object, e As EventArgs) Handles mnuSoundAus.Click
        SoundUmschalten()
    End Sub
    Private Sub CmdAnleitung_Click(sender As Object, e As EventArgs) Handles CmdAnleitung.Click
        ZeigeSpielAnleitung()
    End Sub

    Private Sub CmdBeenden_Click(sender As Object, e As EventArgs) Handles CmdBeenden.Click
        BeendeDasSpiel()
    End Sub
    Private Sub BesteSpielerAufrufen()
        booNurAnsehen = True
        ZeigeBesteSpielerDialog()
        'MessageBox.Show("Das Dialogfenster >Beste Spieler<" & vbCrLf &
        '                "ist Ihre Aufgabe in dieses Spiet einzubinden.", "Rechenkünstler")
    End Sub

    '-------------------------------- klicks auf einen der würfel
    Private Sub Pic0_Click(sender As Object, e As EventArgs) Handles Pic0.Click
        If booGesperrt Or booGewaehlt(0) Then Exit Sub
        VerschiebeWuerfel(0)  ' würfelbild verschieben
    End Sub
    Private Sub Pic1_Click(sender As Object, e As EventArgs) Handles Pic1.Click
        If booGesperrt Or booGewaehlt(1) Then Exit Sub
        VerschiebeWuerfel(1)
    End Sub
    Private Sub Pic2_Click(sender As Object, e As EventArgs) Handles Pic2.Click
        If booGesperrt Or booGewaehlt(2) Then Exit Sub
        VerschiebeWuerfel(2)
    End Sub
    Private Sub Pic3_Click(sender As Object, e As EventArgs) Handles Pic3.Click
        If booGesperrt Or booGewaehlt(3) Then Exit Sub
        VerschiebeWuerfel(3)
    End Sub
    Private Sub Pic4_Click(sender As Object, e As EventArgs) Handles Pic4.Click
        If booGesperrt Or booGewaehlt(4) Then Exit Sub
        VerschiebeWuerfel(4)
    End Sub
    Private Sub Pic5_Click(sender As Object, e As EventArgs) Handles Pic5.Click
        If booGesperrt Or booGewaehlt(5) Then Exit Sub
        VerschiebeWuerfel(5)
    End Sub
    '-------------------------------- klick auf ein rechensymbol
    Private Sub CmdPlus_Click(sender As Object, e As EventArgs) Handles CmdPlus.Click
        RechenZeichen(intPosRechenzeichen).Text = CmdPlus.Text     ' rechenzeichen anzeigen
        BerechneZwischenergebnis(1)                                 ' berechnung durchführen
    End Sub
    Private Sub CmdMinus_Click(sender As Object, e As EventArgs) Handles CmdMinus.Click
        RechenZeichen(intPosRechenzeichen).Text = CmdMinus.Text
        BerechneZwischenergebnis(2)
    End Sub
    Private Sub CmdMal_Click(sender As Object, e As EventArgs) Handles CmdMal.Click
        RechenZeichen(intPosRechenzeichen).Text = CmdMal.Text
        BerechneZwischenergebnis(3)
    End Sub
    Private Sub CmdTeilen_Click(sender As Object, e As EventArgs) Handles CmdTeilen.Click
        RechenZeichen(intPosRechenzeichen).Text = CmdTeilen.Text
        BerechneZwischenergebnis(4)
    End Sub
    '-------------------------------- klick auf eine schaltfläche
    Private Sub CmdNeuerVersuch_Click(sender As Object, e As EventArgs) Handles cmdNeuerVersuch.Click
        WuerfelZuruecklegen()
    End Sub
    Private Sub CmdOk_Click(sender As Object, e As EventArgs) Handles CmdOk.Click
        ProbeIstZahlVorhanden()
    End Sub

    Private Sub MnuInfoBeste_Click(sender As Object, e As EventArgs) Handles MnuInfoBeste.Click
        BesteSpielerAufrufen()
        '-- FrmBesteSpieler und erforderliche module
    End Sub
    Private Sub MnuInfoAllgemein_Click(sender As Object, e As EventArgs) Handles MnuInfoAllgemein.Click
        MessageBox.Show("Rechenkünstler" & vbCrLf & vbCrLf &
                        "Spielidee und Programmierung:" & vbCrLf &
                        "Klaus Pawlik", "Allgemeine Info",
                        MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Sub

    Private Sub MnuInfoAnleitung_Click(sender As Object, e As EventArgs) Handles MnuInfoAnleitung.Click
        ZeigeSpielAnleitung()
    End Sub

    Private Sub MnuSpielEnde_Click(sender As Object, e As EventArgs) Handles MnuSpielEnde.Click
        BeendeDasSpiel()
    End Sub

    Private Sub MnuSpielNeu_Click(sender As Object, e As EventArgs) Handles MnuSpielNeu.Click
        MessageBox.Show("Übung:" & vbCrLf & "Schreiben Sie Programmcode" & vbCrLf &
                        "um ein neues Spiel zu beginnen.", "Rechenkünstler")
    End Sub
End Class
