Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        '-----------  bilder auf der form
        Spielfelder.Add(PictureBox1) : Spielfelder.Add(PictureBox2) : Spielfelder.Add(PictureBox3) : Spielfelder.Add(PictureBox4) : Spielfelder.Add(PictureBox5) : Spielfelder.Add(PictureBox6)
        Spielfelder.Add(PictureBox7) : Spielfelder.Add(PictureBox8) : Spielfelder.Add(PictureBox9) : Spielfelder.Add(PictureBox10) : Spielfelder.Add(PictureBox11) : Spielfelder.Add(PictureBox12)
        Spielfelder.Add(PictureBox13) : Spielfelder.Add(PictureBox14) : Spielfelder.Add(PictureBox15) : Spielfelder.Add(PictureBox16) : Spielfelder.Add(PictureBox17) : Spielfelder.Add(PictureBox18)
        Spielfelder.Add(PictureBox19) : Spielfelder.Add(PictureBox20) : Spielfelder.Add(PictureBox21) : Spielfelder.Add(PictureBox22) : Spielfelder.Add(PictureBox23) : Spielfelder.Add(PictureBox24)
        '------ zahlen ----------------
        Anzeigen.Add(Label1) : Anzeigen.Add(Label2) : Anzeigen.Add(Label3) : Anzeigen.Add(Label4) : Anzeigen.Add(Label5) : Anzeigen.Add(Label6) : Anzeigen.Add(Label7) : Anzeigen.Add(Label8)
        Anzeigen.Add(Label9) : Anzeigen.Add(Label10) : Anzeigen.Add(Label11) : Anzeigen.Add(Label12) : Anzeigen.Add(Label13) : Anzeigen.Add(Label14) : Anzeigen.Add(Label15) : Anzeigen.Add(Label16)
        Anzeigen.Add(Label17) : Anzeigen.Add(Label18) : Anzeigen.Add(Label19) : Anzeigen.Add(Label20) : Anzeigen.Add(Label21) : Anzeigen.Add(Label22) : Anzeigen.Add(Label23) : Anzeigen.Add(Label24)
        '-----
        Bild.Add(FrmBilder25.PicFrei) : Bild.Add(FrmBilder25.PicGesperrt)
        Me.Text = "Finde 25"
        CmdAnleitung.Text = "&Spielanleitung" : CmdNeu.Text = "&Neues Spiel" : CmdVorschau.Text = "&Vorschau" : CmdEnde.Text = "B&eenden"
        StarteNeuesSpiel()
    End Sub
    Private Sub StarteNeuesSpiel()
        LblSum.Text = CStr(intSumme)
        intFehlVersuche = "0" : LblFalsch.Text = CStr(intFehlVersuche)
        ErzeugeDieZahlen()
    End Sub
    Private Sub CmdNeu_Click(sender As Object, e As EventArgs) Handles CmdNeu.Click
        StarteNeuesSpiel()
    End Sub

    Private Sub CmdEnde_Click(sender As Object, e As EventArgs) Handles CmdEnde.Click
        BeendeDasSpiel()
    End Sub
    Private Sub BeendeDasSpiel()
        SpieleSound(3)
        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
        intResultat = MessageBox.Show(strMeldung, strTitel, buttons, Icon, DefaultButton)
        '-- reaktion
        If (intResultat = DialogResult.Yes) Then
            Close()
        End If
    End Sub

    Private Sub CmdVorschau_Click(sender As Object, e As EventArgs) Handles CmdVorschau.Click
        VorSchauAnzeigen()
    End Sub

    Private Sub VorSchauAnzeigen()
        SpieleSound(4)
        Timer1.Interval = 4000
        Timer1.Start()
        LblInfo.Text = "Die Vorschau ist aktiv."
        CmdVorschau.Enabled = False : MnuVorschau.Enabled = False
        Dim i As Integer
        For i = 0 To LstZahlen.Items.Count - 1
            Spielfelder(i).Image = Nothing
            Anzeigen(i).Text = LstZahlen.Items(i)
        Next
        For i = 0 To 23 : booBereitsGewaehlt(i) = True : Next
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim i As Integer
        For i = 0 To 23
            Anzeigen(i).Text = ""
            booBereitsGewaehlt(i) = False
            Spielfelder(i).Image = Bild(0).image
        Next
        Timer1.Stop()
        LblInfo.Text = "Klicke auf ein Quadrat."
        SpieleSound(4)
    End Sub

    Private Sub KlicksAuswerten(intPosition As Integer)
        CmdVorschau.Enabled = False : MnuVorschau.Enabled = False
        If booBereitsGewaehlt(intPosition) = True Then Exit Sub     '-- schon gewählt   -->
        If LstPositionen.Items.Count >= 3 Then Exit Sub             '-- schon 3 klicks  -->
        LstPositionen.Items.Add(CStr(intPosition))                  '-- in liste schreiben
        booBereitsGewaehlt(intPosition) = True                      '-- aktuell gewählt
        Spielfelder(intPosition).Image = Nothing                    '-- bild ausblenden
        Anzeigen(intPosition).text = LstZahlen.Items(intPosition)   '-- zahl anzeigen
        If LstPositionen.Items.Count = 3 Then
            LblInfo.Text = "Warte auf die Auswertung." & vbCrLf &
                "Merke dir die aufgeckten Zahlen."
            Timer2.Interval = 2000 : Timer2.Start()
        Else
            LblInfo.Text = "Klicke auf ein weiteres Quadrat."
        End If
    End Sub
    Private Sub ProbeSummeBerechnen()
        Dim i As Integer
        Dim intBerechnung(2) As Integer
        Dim intAktiv(2) As Integer
        For i = 0 To 2
            intBerechnung(i) = LstZahlen.Items(LstPositionen.Items(i))
            intAktiv(i) = LstPositionen.Items(i)
        Next
        '----- 
        If intBerechnung(0) + intBerechnung(1) = 25 Then
            LblInfo.Text = "Treffer  " & CStr(intBerechnung(0)) & " + " &
                CStr(intBerechnung(1)) & " ergibt 25."
            Spielfelder(intAktiv(0)).Image = Bild(1).Image : booBereitsGewaehlt(intAktiv(0)) = True

            Spielfelder(intAktiv(1)).Image = Bild(1).Image : booBereitsGewaehlt(intAktiv(1)) = True

            Spielfelder(intAktiv(2)).Image = Bild(0).Image : booBereitsGewaehlt(intAktiv(2)) = False
        ElseIf intBerechnung(0) + intBerechnung(2) = 25 Then
            LblInfo.Text = "Treffer  " & CStr(intBerechnung(0)) & " + " &
                CStr(intBerechnung(2)) & " ergibt 25."
            Spielfelder(intAktiv(0)).Image = Bild(1).Image : booBereitsGewaehlt(intAktiv(0)) = True
            Spielfelder(intAktiv(2)).Image = Bild(1).Image : booBereitsGewaehlt(intAktiv(2)) = True
            Spielfelder(intAktiv(1)).Image = Bild(0).Image : booBereitsGewaehlt(intAktiv(1)) = False
        ElseIf intBerechnung(1) + intBerechnung(2) = 25 Then
            LblInfo.Text = "Treffer  " & CStr(intBerechnung(1)) & " + " &
                CStr(intBerechnung(2)) & " ergibt 25"
            Spielfelder(intAktiv(1)).Image = Bild(1).Image : booBereitsGewaehlt(intAktiv(1)) = True
            Spielfelder(intAktiv(0)).Image = Bild(0).Image : booBereitsGewaehlt(intAktiv(0)) = False
            Spielfelder(intAktiv(2)).Image = Bild(1).Image : booBereitsGewaehlt(intAktiv(2)) = True
        Else
            For i = 0 To 2
                Spielfelder(intAktiv(i)).Image = Bild(0).Image
                booBereitsGewaehlt(intAktiv(i)) = False
            Next
            intFehlVersuche += 1
            LblInfo.Text = "Keine der aufgedeckten Zahlen" & vbCrLf &
                "ergibt in Kombination die Summe 25." & vbCrLf &
               "Klicke auf ein Quadrat."
            LblFalsch.Text = CStr(intFehlVersuche)
        End If
        For i = 0 To 2 : Anzeigen(intAktiv(i)).Text = "" : Next
        LstPositionen.Items.Clear()
        Dim intEnde As Integer
        For i = 0 To 23
            If booBereitsGewaehlt(i) = True Then intEnde += 1
        Next
        If intEnde >= 22 Then
            SpieleSound(1)
            MessageBox.Show("Es bleiben nur noch zwei Zahlen." & vbCrLf &
                      "Du hast mit " & CStr(intFehlVersuche) &
                      " Fehlversuchen das Spiel erfolgreich beendet.", "Finde 25",
                      MessageBoxButtons.OK,
                      MessageBoxIcon.Information)
            LblInfo.Text = "Klicke auf die Schaltfläche >Neues Spiel<," & vbCrLf &
                "wenn Du ein weiteres Spiel beginnen möchtest."
            CmdNeu.Enabled = True
        End If
    End Sub
    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
        KlicksAuswerten(0)
    End Sub
    Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles PictureBox2.Click
        KlicksAuswerten(1)
    End Sub

    Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click
        KlicksAuswerten(2)
    End Sub
    Private Sub PictureBox4_Click(sender As Object, e As EventArgs) Handles PictureBox4.Click
        KlicksAuswerten(3)
    End Sub
    Private Sub PictureBox5_Click(sender As Object, e As EventArgs) Handles PictureBox5.Click
        KlicksAuswerten(4)
    End Sub
    Private Sub PictureBox6_Click(sender As Object, e As EventArgs) Handles PictureBox6.Click
        KlicksAuswerten(5)
    End Sub
    Private Sub PictureBox7_Click(sender As Object, e As EventArgs) Handles PictureBox7.Click
        KlicksAuswerten(6)
    End Sub
    Private Sub PictureBox8_Click(sender As Object, e As EventArgs) Handles PictureBox8.Click
        KlicksAuswerten(7)
    End Sub
    Private Sub PictureBox9_Click(sender As Object, e As EventArgs) Handles PictureBox9.Click
        KlicksAuswerten(8)
    End Sub
    Private Sub PictureBox10_Click(sender As Object, e As EventArgs) Handles PictureBox10.Click
        KlicksAuswerten(9)
    End Sub
    Private Sub PictureBox11_Click(sender As Object, e As EventArgs) Handles PictureBox11.Click
        KlicksAuswerten(10)
    End Sub
    Private Sub PictureBox12_Click(sender As Object, e As EventArgs) Handles PictureBox12.Click
        KlicksAuswerten(11)
    End Sub
    Private Sub PictureBox13_Click(sender As Object, e As EventArgs) Handles PictureBox13.Click
        KlicksAuswerten(12)
    End Sub
    Private Sub PictureBox14_Click(sender As Object, e As EventArgs) Handles PictureBox14.Click
        KlicksAuswerten(13)
    End Sub
    Private Sub PictureBox15_Click(sender As Object, e As EventArgs) Handles PictureBox15.Click
        KlicksAuswerten(14)
    End Sub
    Private Sub PictureBox16_Click(sender As Object, e As EventArgs) Handles PictureBox16.Click
        KlicksAuswerten(15)
    End Sub
    Private Sub PictureBox17_Click(sender As Object, e As EventArgs) Handles PictureBox17.Click
        KlicksAuswerten(16)
    End Sub
    Private Sub PictureBox18_Click(sender As Object, e As EventArgs) Handles PictureBox18.Click
        KlicksAuswerten(17)
    End Sub
    Private Sub PictureBox19_Click(sender As Object, e As EventArgs) Handles PictureBox19.Click
        KlicksAuswerten(18)
    End Sub
    Private Sub PictureBox20_Click(sender As Object, e As EventArgs) Handles PictureBox20.Click
        KlicksAuswerten(19)
    End Sub
    Private Sub PictureBox21_Click(sender As Object, e As EventArgs) Handles PictureBox21.Click
        KlicksAuswerten(20)
    End Sub
    Private Sub PictureBox22_Click(sender As Object, e As EventArgs) Handles PictureBox22.Click
        KlicksAuswerten(21)
    End Sub
    Private Sub PictureBox23_Click(sender As Object, e As EventArgs) Handles PictureBox23.Click
        KlicksAuswerten(22)
    End Sub
    Private Sub PictureBox24_Click(sender As Object, e As EventArgs) Handles PictureBox24.Click
        KlicksAuswerten(23)
    End Sub
    '---  menue
    Private Sub MnuVorschau_Click(sender As Object, e As EventArgs) Handles MnuVorschau.Click
        VorSchauAnzeigen()
    End Sub

    Private Sub MnuNeu_Click(sender As Object, e As EventArgs) Handles MnuNeu.Click
        StarteNeuesSpiel()
    End Sub

    Private Sub MnuBeenden_Click(sender As Object, e As EventArgs) Handles MnuBeenden.Click
        BeendeDasSpiel()
    End Sub

    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        Timer2.Stop()
        ProbeSummeBerechnen()
    End Sub

    Private Sub MnuSoundAn_Click(sender As Object, e As EventArgs) Handles MnuSoundAn.Click
        SoundEinstellungen()
    End Sub
    Private Sub MnuSoundAus_Click(sender As Object, e As EventArgs) Handles MnuSoundAus.Click
        SoundEinstellungen()
    End Sub
    Private Sub SoundEinstellungen()
        If MnuSoundAn.Checked Then
            MnuSoundAn.Checked = False : MnuSoundAus.Checked = True
        Else
            MnuSoundAn.Checked = True : MnuSoundAus.Checked = False
        End If
    End Sub

    Private Sub MnuInfoAllgemein_Click(sender As Object, e As EventArgs) Handles MnuInfoAllgemein.Click
        FrmAbout.ShowDialog()
    End Sub

    Private Sub CmdAnleitung_Click(sender As Object, e As EventArgs) Handles CmdAnleitung.Click
        ZeigeAnleitung()
    End Sub
    Private Sub ZeigeAnleitung()
        Dim strSPIELANLEITUNG = "sp_finde25.pdf"
        Try
            Process.Start(System.IO.Path.Combine(
                  Application.StartupPath,
                  strSPIELANLEITUNG))
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

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


