Public Class Form1

    Private Tipp As New ToolTip                  ' tooltipp deklarieren
    Private booSpielIstAktiv As Boolean = False  ' True = das spiel läuft
    Private Const strSPIELANLEITUNG As String = "summen.pdf"
    '------------------
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        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)
        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)
        '-------------------------------------- erweitert
        Ausgewaehlt.Add(Cmd0) : Ausgewaehlt.Add(Cmd1) : Ausgewaehlt.Add(Cmd2) : Ausgewaehlt.Add(Cmd3)
        Ausgewaehlt.Add(Cmd4) : Ausgewaehlt.Add(Cmd5) : Ausgewaehlt.Add(Cmd6)
        ZurueckSetzen.Add(PicA0) : ZurueckSetzen.Add(PicA1) : ZurueckSetzen.Add(PicA2) : ZurueckSetzen.Add(PicA3)
        ZurueckSetzen.Add(PicA4) : ZurueckSetzen.Add(PicA5) : ZurueckSetzen.Add(PicA6)
        SummenAnzeigen.Add(Lbl0) : SummenAnzeigen.Add(Lbl1) : SummenAnzeigen.Add(Lbl2) : SummenAnzeigen.Add(Lbl3)
        SummenAnzeigen.Add(Lbl4) : SummenAnzeigen.Add(Lbl5) : SummenAnzeigen.Add(Lbl6) : SummenAnzeigen.Add(Lbl7)
        '--------------- 
        Tipp.AutoPopDelay = 5000 : Tipp.InitialDelay = 1000 : Tipp.ReshowDelay = 500 : Tipp.IsBalloon = True  ' : Tipp.ShowAlways = True
        Tipp.SetToolTip(CmdBeenden, "Das Spiel beenden") : Tipp.SetToolTip(CmdWuerfeln, "Klicken um zu Würfeln")
        Tipp.SetToolTip(Lbl1, "Summe aller Würfel mit der Augenzahl 1") : Tipp.SetToolTip(Lbl2, "Summe aller Würfel mit der Augenzahl 2")
        Tipp.SetToolTip(Lbl3, "Summe aller Würfel mit der Augenzahl 3") : Tipp.SetToolTip(Lbl4, "Summe aller Würfel mit der Augenzahl 4")
        Tipp.SetToolTip(Lbl5, "Summe aller Würfel mit der Augenzahl 5") : Tipp.SetToolTip(Lbl6, "Summe aller Würfel mit der Augenzahl 6")
        Tipp.SetToolTip(Lbl7, "Summe der erspielten Boni")
        Tipp.SetToolTip(Cmd1, "Klicken um die Summe der 1'er zu wählen") : Tipp.SetToolTip(Cmd2, "Klicken um die Summe der 2'er zu wählen")
        Tipp.SetToolTip(Cmd3, "Klicken um die Summe der 3'er zu wählen") : Tipp.SetToolTip(Cmd4, "Klicken um die Summe der 4'er zu wählen")
        Tipp.SetToolTip(Cmd5, "Klicken um die Summe der 5'er zu wählen") : Tipp.SetToolTip(Cmd6, "Klicken um die Summe der 6'er zu wählen")
        Tipp.SetToolTip(PicA1, "Zurücknehmen") : Tipp.SetToolTip(PicA2, "Zurücknehmen") : Tipp.SetToolTip(PicA3, "Zurücknehmen")
        Tipp.SetToolTip(PicA4, "Zurücknehmen") : Tipp.SetToolTip(PicA5, "Zurücknehmen") : Tipp.SetToolTip(PicA6, "Zurücknehmen")
        '--------------------------------------
        CmdBeenden.Text = "B&eenden"
        CmdWuerfeln.Text = "&Würfeln"
        CmdNeuesSpiel.Text = "&Neues Spiel" : CmdNeuesSpiel.Enabled = False
        Dim i As Integer
        For i = 1 To 6
            Ausgewaehlt(i).Text = "Nur " & i.ToString & "'er" : Ausgewaehlt(i).Enabled = False
        Next
        StarteNeuesSpiel()  '++ neu 
        CmdNeuesSpiel.Enabled = False
        CmdWuerfeln.Enabled = True : CmdWuerfeln.Focus()
        LblInfo.Text = "Klicke auf >Würfeln<" & vbCrLf & "um zu beginnen."
    End Sub
    Private Sub CmdBeenden_Click(sender As Object, e As EventArgs) Handles CmdBeenden.Click
        SpielBeenden()
    End Sub
    Private Sub SpielBeenden()
        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  ' nur abspielen wenn soundan
            Try
                My.Computer.Audio.Play("CHIMES.WAV", AudioPlayMode.Background)
            Catch ex As Exception
            End Try
        End If
        intResultat = MessageBox.Show(strMeldung, strTitel, buttons, Icon, DefaultButton)
        '-- reaktion
        If (intResultat = DialogResult.Yes) Then
            Close()
        End If
    End Sub
    Private Sub CmdWuerfeln_Click(sender As Object, e As EventArgs) Handles CmdWuerfeln.Click
        booSpielIstAktiv = True
        Timer1.Interval = 30 : Timer1.Start()
        Timer2.Interval = 900 : Timer2.Start()
        CmdWuerfeln.Enabled = False
        booWurfelGesperrt = True
        If mnuSoundAn.Checked Then  ' nur abspielen wenn soundan
            Try
                My.Computer.Audio.Play("RATTLE.WAV", AudioPlayMode.Background)
            Catch ex As Exception
            End Try
        End If
    End Sub

    Private Sub BilderZuweisen()
        Dim i As Integer
        For i = 1 To 5
            If booWuerfelAktiv(i) Then
                ZeichneWuerfel(i).Image = BildNr(intAugenZahlen(i)).Image
            End If
        Next
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        NeuWuerfeln()      ' im modul modWuerfeln
        BilderZuweisen()
    End Sub

    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        Timer1.Stop() : Timer2.Stop()
        NeuWuerfeln()         ' im modul modWuerfeln
        BilderZuweisen()
        booWurfelGesperrt = False
        lstZahlen.Items.Clear()
        Dim i As Integer
        For i = 1 To 5
            lstZahlen.Items.Add(intAugenZahlen(i).ToString)
        Next        
        ErgebnisAuswerten()
        '-------------------- zählen der klicks und auswertung
        intAnzahlGewuerfelt += 1
        If intAnzahlGewuerfelt >= intMAXIMAL Then
            CmdWuerfeln.Enabled = False : booWurfelGesperrt = True
            LblInfo.Text = "Du hast drei Mal gewürfelt." & vbCrLf &
                "Treffe eine Auswahl für die Summe!"
        Else                           ' es kann weiter gehen
            CmdWuerfeln.Enabled = True : booWurfelGesperrt = False
            CmdWuerfeln.Select()
            LblInfo.Text = "Du kannst noch " & (intMAXIMAL - intAnzahlGewuerfelt).ToString &
                " Mal würfeln," & vbCrLf & "oder eine Auswahl treffen."
        End If
        '-------------------
    End Sub
    Private Sub VerschiebeWuerfel(intWuerfelNr As Integer)
        If booWurfelGesperrt Then Exit Sub
        If Not booWuerfelAktiv(intWuerfelNr) Then Exit Sub
        '---------------  verschieben
        If intWuerfelNr <= 5 Then
            ZeichneWuerfel(intWuerfelNr + 5).Image = ZeichneWuerfel(intWuerfelNr).Image
            booWuerfelAktiv(intWuerfelNr + 5) = True
        Else
            ZeichneWuerfel(intWuerfelNr - 5).Image = ZeichneWuerfel(intWuerfelNr).Image
            booWuerfelAktiv(intWuerfelNr - 5) = True
        End If
        ZeichneWuerfel(intWuerfelNr).Image = Nothing
        booWuerfelAktiv(intWuerfelNr) = False
        Dim i As Integer
        Dim intWuerfelImBecher As Integer = 0
        For i = 1 To 5
            If booWuerfelAktiv(i) Then
                intWuerfelImBecher += 1
            End If
        Next
        If intWuerfelImBecher = 0 Then
            CmdWuerfeln.Enabled = False
            If mnuSoundAn.Checked Then  ' nur abspielen wenn soundan
                Try
                    My.Computer.Audio.Play("ding.wav", AudioPlayMode.Background)
                Catch ex As Exception
                End Try
            End If
            LblInfo.Text = "Um Würfeln zu können" & vbCrLf & "muss sich ein Würfel im Becher befinden."
        Else
            CmdWuerfeln.Enabled = True
            CmdWuerfeln.Select()
        End If
    End Sub

    Private Sub Pic1_Click(sender As Object, e As EventArgs) Handles Pic1.Click
        VerschiebeWuerfel(1)
    End Sub

    Private Sub Pic2_Click(sender As Object, e As EventArgs) Handles Pic2.Click
        VerschiebeWuerfel(2)
    End Sub

    Private Sub Pic3_Click(sender As Object, e As EventArgs) Handles Pic3.Click
        VerschiebeWuerfel(3)
    End Sub

    Private Sub Pic4_Click(sender As Object, e As EventArgs) Handles Pic4.Click
        VerschiebeWuerfel(4)
    End Sub

    Private Sub Pic5_Click(sender As Object, e As EventArgs) Handles Pic5.Click
        VerschiebeWuerfel(5)
    End Sub

    Private Sub Pic6_Click(sender As Object, e As EventArgs) Handles Pic6.Click
        VerschiebeWuerfel(6)
    End Sub

    Private Sub Pic7_Click(sender As Object, e As EventArgs) Handles Pic7.Click
        VerschiebeWuerfel(7)
    End Sub

    Private Sub Pic8_Click(sender As Object, e As EventArgs) Handles Pic8.Click
        VerschiebeWuerfel(8)
    End Sub

    Private Sub Pic9_Click(sender As Object, e As EventArgs) Handles Pic9.Click
        VerschiebeWuerfel(9)
    End Sub

    Private Sub Pic10_Click(sender As Object, e As EventArgs) Handles Pic10.Click
        VerschiebeWuerfel(10)
    End Sub

    Private Sub mnuSoundAn_Click(sender As Object, e As EventArgs) Handles mnuSoundAn.Click
        SoundEffektUmschalten()
    End Sub

    Private Sub mnuSoundAus_Click(sender As Object, e As EventArgs) Handles mnuSoundAus.Click
        SoundEffektUmschalten()
    End Sub
    Private Sub SoundEffektUmschalten()
        If mnuSoundAn.Checked Then
            mnuSoundAn.Checked = False : mnuSoundAus.Checked = True
        Else
            mnuSoundAn.Checked = True : mnuSoundAus.Checked = False
        End If
    End Sub
    Private Sub BeendenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BeendenToolStripMenuItem.Click
        SpielBeenden()
    End Sub
    Private Sub cmd1_Click(sender As Object, e As EventArgs) Handles Cmd1.Click
        AuswahlDerSummenAuswerten(1)
    End Sub

    Private Sub cmd2_Click(sender As Object, e As EventArgs) Handles Cmd2.Click
        AuswahlDerSummenAuswerten(2)
    End Sub
    Private Sub cmd3_Click(sender As Object, e As EventArgs) Handles Cmd3.Click
        AuswahlDerSummenAuswerten(3)
    End Sub

    Private Sub cmd4_Click(sender As Object, e As EventArgs) Handles Cmd4.Click
        AuswahlDerSummenAuswerten(4)
    End Sub

    Private Sub cmd5_Click(sender As Object, e As EventArgs) Handles Cmd5.Click
        AuswahlDerSummenAuswerten(5)
    End Sub

    Private Sub cmd6_Click(sender As Object, e As EventArgs) Handles Cmd6.Click
        AuswahlDerSummenAuswerten(6)
    End Sub

    Private Sub picA1_Click(sender As Object, e As EventArgs) Handles PicA1.Click
        AuswahlZurueckSetzen(1)
    End Sub
 
    Private Sub picA2_Click(sender As Object, e As EventArgs) Handles PicA2.Click
        AuswahlZurueckSetzen(2)
    End Sub

    Private Sub picA3_Click(sender As Object, e As EventArgs) Handles PicA3.Click
        AuswahlZurueckSetzen(3)
    End Sub

    Private Sub picA4_Click(sender As Object, e As EventArgs) Handles PicA4.Click
        AuswahlZurueckSetzen(4)
    End Sub

    Private Sub picA5_Click(sender As Object, e As EventArgs) Handles PicA5.Click
        AuswahlZurueckSetzen(5)
    End Sub

    Private Sub picA6_Click(sender As Object, e As EventArgs) Handles PicA6.Click
        AuswahlZurueckSetzen(6)
    End Sub
    Public Sub AuswahlZurueckSetzen(intAktuelleAuswahl As Integer)
        booAusgewaehlteSumme(intAktuelleAuswahl) = False
        CmdWuerfeln.Enabled = False
        booWurfelGesperrt = True
        Dim i As Integer
        For i = 1 To 6
            ZurueckSetzen(i).Visible = False
            If Not booAusgewaehlteSumme(i) Then Ausgewaehlt(i).Enabled = True
        Next
        LblInfo.Text = "Du hast die Auswahl zurückgesetz!" & vbCrLf &
            "Treffe eine neue Auswahl."
    End Sub

    Private Sub cmdNeuesSpiel_Click(sender As Object, e As EventArgs) Handles CmdNeuesSpiel.Click
        StarteNeuesSpiel()
        CmdNeuesSpiel.Enabled = False
        CmdWuerfeln.Enabled = True : CmdWuerfeln.Focus()

    End Sub

    Private Sub mnuInfoSpielanleitung_Click(sender As Object, e As EventArgs) Handles mnuInfoSpielanleitung.Click
        SpielAnleitungAnzeigen()
    End Sub
    Private Sub SpielAnleitungAnzeigen()
        Try
            Process.Start(System.IO.Path.Combine(
                  Application.StartupPath,
                  strSPIELANLEITUNG))
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class
