
Public Class Form1

    Dim TextFelder As New ArrayList
    Dim Bilder As New ArrayList
    Dim Tastatur As New ArrayList
    '----
    Dim intPunkteAktuell As Integer     '-- punkte in der spielrunde
    Dim intFehlversuche As Integer      '-- anzahl fehlversuche
    Dim intSpielrunde As Integer = 0    '-- anzahl spielrunden
    Dim intAllePunkte As Integer = 200  '-- startwert

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        TextFelder.Add(Txt0) : TextFelder.Add(Txt1) : TextFelder.Add(Txt2) : TextFelder.Add(Txt3) : TextFelder.Add(Txt4) : TextFelder.Add(Txt5) : TextFelder.Add(Txt6)
        TextFelder.Add(Txt7) : TextFelder.Add(Txt8) : TextFelder.Add(Txt9) : TextFelder.Add(Txt10) : TextFelder.Add(Txt11) : TextFelder.Add(Txt12) : TextFelder.Add(Txt13) : TextFelder.Add(Txt14)
        '----------------------
        Bilder.Add(FrmBilder.PicB0) : Bilder.Add(FrmBilder.PicB1) : Bilder.Add(FrmBilder.PicB2) : Bilder.Add(FrmBilder.PicB3) : Bilder.Add(FrmBilder.PicB4)
        Bilder.Add(FrmBilder.PicB5) : Bilder.Add(FrmBilder.PicB6) : Bilder.Add(FrmBilder.PicB7)
        '---------------
        Tastatur.Add(CmdA) : Tastatur.Add(CmdB) : Tastatur.Add(CmdC) : Tastatur.Add(CmdD) : Tastatur.Add(CmdE) : Tastatur.Add(CmdF) : Tastatur.Add(CmdG) : Tastatur.Add(CmdH) : Tastatur.Add(CmdI)
        Tastatur.Add(CmdJ) : Tastatur.Add(CmdK) : Tastatur.Add(CmdL) : Tastatur.Add(CmdM) : Tastatur.Add(CmdN) : Tastatur.Add(CmdO) : Tastatur.Add(CmdP) : Tastatur.Add(CmdQ) : Tastatur.Add(CmdR)
        Tastatur.Add(CmdS) : Tastatur.Add(CmdT) : Tastatur.Add(CmdU) : Tastatur.Add(CmdV) : Tastatur.Add(CmdW) : Tastatur.Add(CmdX) : Tastatur.Add(CmdY) : Tastatur.Add(CmdZ)
        '-------------
        cmdAnleitung.Text = "&Spielanleitung" : CmdEnde.Text = "B&eenden" : CmdBegriff.Text = "Erster &Begriff"
        IstDateiVorhanden()
        Grundeinstellung()
    End Sub
    Private Sub Grundeinstellung()
        Dim i As Integer
        For i = 0 To 14
            TextFelder(i).Enabled = False
            TextFelder(i).Text = ""
            TextFelder(i).BackColor = Color.Yellow
            TextFelder(i).Visible = False
        Next
        '------------------------------------ neu ende
        GroupBox1.Enabled = False : CmdBeste.Enabled = False : GroupBox2.Enabled = False
        LblInfo.Text = "Klicke auf die Schaltfäche > Erster Begriff <" & vbCrLf &
            "um das Spiel zu beginnen."
        LblAktuell.Text = "0"
        LblEnde.Text = "0"
        LblAlle.Text = CStr(intAllePunkte)
    End Sub
    Private Sub SucheBuchstabe(strAuswahl As String)
        Dim strBegriff As String, strInformation As String
        Dim intPosition As Integer, intFaktor As Integer
        Dim intSuchStart As Integer = 0
        Dim intAnzahl As Integer = 0
        strBegriff = TxtBegriff.Text '-- Textfeld mit Begriff einlesen
        Do      '-- Zeichenweise durchsuchen
            intPosition = strBegriff.IndexOf(strAuswahl, intSuchStart)
            intSuchStart = intPosition + 1
            If intPosition = -1 Then
                Exit Do '-- Ende des strings erreicht
            Else      '-- buchstaben zählen und schreiben
                TextFelder(intPosition).Text = strAuswahl
                intAnzahl += 1
            End If
        Loop
        If intAnzahl = 0 Then
            strInformation = "Der Buchstabe " & strAuswahl &
                " ist nicht enthalten."
            intFehlversuche += 1
            If intFehlversuche <= 7 Then
                picBild0.Image = Bilder(intFehlversuche).Image
            End If
            intPunkteAktuell -= 5
            strInformation = strInformation & vbCrLf &
                "Es werden 5 Punkte abgezogen."
        Else
            strInformation = "Der Buchstabe " & strAuswahl &
                " ist " & CStr(intAnzahl) & " Mal enthalten."
            If strAuswahl = "A" Or strAuswahl = "E" Or
                strAuswahl = "I" Or strAuswahl = "O" Or
                strAuswahl = "U" Then
                intFaktor = 5
            Else
                intFaktor = 10
            End If
            intPunkteAktuell = (intAnzahl * intFaktor)
            strInformation = strInformation & vbCrLf &
                "Du erhälst " & CStr((intAnzahl * intFaktor)) &
                " Punkte."
        End If
        LblAktuell.Text = CStr(intPunkteAktuell)
        LblInfo.Text = strInformation
        ProbeSpielrundenEnde()
    End Sub
    Private Sub ProbeSpielrundenEnde()
        Dim i As Integer, intCount As Integer
        For i = 0 To Len(TxtBegriff.Text)
            If TextFelder(i).Text <> "" Then
                intCount += 1
            End If
        Next
        If intCount = Len(TxtBegriff.Text) Then
            SpielrundenEnde()
        End If
    End Sub
    Private Sub SpielrundenEnde()
        LblInfo.Text = "Du erhälst " & LblAktuell.Text & " Punkte."
        '--### aufgabe: gestellte eine bessere kommunikation her  
        '-- ev. sound
        '-- ev. transparentres fenster
        CmdBegriff.Enabled = True : CmdBegriff.Text = "Nächster Begriff"
        intAllePunkte = intAllePunkte + intPunkteAktuell
        MessageBox.Show(TxtBegriff.Text & " ist der gesuchte Begriff.")
        LblAlle.Text = CStr(intAllePunkte)
        NeuesSpielfeld()
    End Sub
    Private Sub NeuesSpielfeld()
        intPunkteAktuell = 0
        Dim i As Integer
        CmdBegriff.Enabled = True : CmdBegriff.Text = "Nächster &Begriff"
        For i = 0 To 14
            TextFelder(i).Text = ""
            Tastatur(i).Enabled = True
        Next
        For i = 15 To 25
            Tastatur(i).Enabled = True
        Next
        GroupBox1.Enabled = False : GroupBox2.Enabled = False
        LblInfo.Text = "Klicke auf> Nächter Begriff <"
        LblAktuell.Text = CStr(intPunkteAktuell)
    End Sub
    Private Sub ErmittleDenBegriff()
        Dim intAnzahl As Integer
        Dim strEintrag As String
        Dim intZufall As New Random
        strEintrag = LstAlle.Items(intZufall.Next(0, LstAlle.Items.Count - 1))
        TxtBegriff.Text = strEintrag
        intAnzahl = Len(TxtBegriff.Text)
        Dim i As Integer
        For i = 0 To 14
            TextFelder(i).Visible = False
            TextFelder(i).Text = ""
        Next
        '-- textboxen freischalten
        For i = 0 To (intAnzahl - 1)
            TextFelder(i).Visible = True
        Next
        GroupBox2.Enabled = True
        LblInfo.Text = "Der zu erratende Begriff hat " & CStr(intAnzahl) &
              " Buchstaben." & vbCrLf & "Nutze die Eingabehilfe um die Buchstaben zu wählen."
    End Sub
    '-----------------  klick auf buchstaben
    Private Sub CmdA_Click(sender As Object, e As EventArgs) Handles CmdA.Click
        CmdA.Enabled = False : SucheBuchstabe("A")
    End Sub
    Private Sub CmdB_Click(sender As Object, e As EventArgs) Handles CmdB.Click
        CmdB.Enabled = False : SucheBuchstabe("B")
    End Sub
    Private Sub CmdC_Click(sender As Object, e As EventArgs) Handles CmdC.Click
        CmdC.Enabled = False : SucheBuchstabe("C")
    End Sub
    Private Sub CmdD_Click(sender As Object, e As EventArgs) Handles CmdD.Click
        CmdD.Enabled = False : SucheBuchstabe("D")
    End Sub
    Private Sub CmdE_Click(sender As Object, e As EventArgs) Handles CmdE.Click
        CmdE.Enabled = False : SucheBuchstabe("E")
    End Sub
    Private Sub CmdF_Click(sender As Object, e As EventArgs) Handles CmdF.Click
        CmdF.Enabled = False : SucheBuchstabe("F")
    End Sub
    Private Sub CmdG_Click(sender As Object, e As EventArgs) Handles CmdG.Click
        CmdG.Enabled = False : SucheBuchstabe("G")
    End Sub
    Private Sub CmdH_Click(sender As Object, e As EventArgs) Handles CmdH.Click
        CmdH.Enabled = False : SucheBuchstabe("H")
    End Sub
    Private Sub CmdI_Click(sender As Object, e As EventArgs) Handles CmdI.Click
        CmdI.Enabled = False : SucheBuchstabe("I")
    End Sub
    Private Sub CmdJ_Click(sender As Object, e As EventArgs) Handles CmdJ.Click
        CmdJ.Enabled = False : SucheBuchstabe("J")
    End Sub
    Private Sub CmdK_Click(sender As Object, e As EventArgs) Handles CmdK.Click
        CmdK.Enabled = False : SucheBuchstabe("K")
    End Sub
    Private Sub CmdL_Click(sender As Object, e As EventArgs) Handles CmdL.Click
        CmdL.Enabled = False : SucheBuchstabe("L")
    End Sub
    Private Sub CmdM_Click(sender As Object, e As EventArgs) Handles CmdM.Click
        CmdM.Enabled = False : SucheBuchstabe("M")
    End Sub
    Private Sub CmdN_Click(sender As Object, e As EventArgs) Handles CmdN.Click
        CmdN.Enabled = False : SucheBuchstabe("N")
    End Sub
    Private Sub CmdO_Click(sender As Object, e As EventArgs) Handles CmdO.Click
        CmdO.Enabled = False : SucheBuchstabe("O")
    End Sub
    Private Sub CmdP_Click(sender As Object, e As EventArgs) Handles CmdP.Click
        CmdP.Enabled = False : SucheBuchstabe("P")
    End Sub
    Private Sub CmdQ_Click(sender As Object, e As EventArgs) Handles CmdQ.Click
        CmdQ.Enabled = False : SucheBuchstabe("Q")
    End Sub
    Private Sub CmdR_Click(sender As Object, e As EventArgs) Handles CmdR.Click
        CmdR.Enabled = False : SucheBuchstabe("R")
    End Sub
    Private Sub CmdS_Click(sender As Object, e As EventArgs) Handles CmdS.Click
        CmdS.Enabled = False : SucheBuchstabe("S")
    End Sub
    Private Sub CmdT_Click(sender As Object, e As EventArgs) Handles CmdT.Click
        CmdT.Enabled = False : SucheBuchstabe("T")
    End Sub
    Private Sub CmdU_Click(sender As Object, e As EventArgs) Handles CmdU.Click
        CmdU.Enabled = False : SucheBuchstabe("U")
    End Sub
    Private Sub CmdV_Click(sender As Object, e As EventArgs) Handles CmdV.Click
        CmdV.Enabled = False : SucheBuchstabe("V")
    End Sub
    Private Sub CmdW_Click(sender As Object, e As EventArgs) Handles CmdW.Click
        CmdW.Enabled = False : SucheBuchstabe("W")
    End Sub
    Private Sub CmdX_Click(sender As Object, e As EventArgs) Handles CmdX.Click
        CmdX.Enabled = False : SucheBuchstabe("X")
    End Sub
    Private Sub CmdY_Click(sender As Object, e As EventArgs) Handles CmdY.Click
        CmdY.Enabled = False : SucheBuchstabe("Y")
    End Sub
    Private Sub CmdZ_Click(sender As Object, e As EventArgs) Handles CmdZ.Click
        CmdZ.Enabled = False : SucheBuchstabe("Z")
    End Sub
    Private Sub CmdBegriff_Click(sender As Object, e As EventArgs) Handles CmdBegriff.Click
        intSpielrunde += 1
        ErmittleDenBegriff()
        CmdBegriff.Enabled = False : GroupBox1.Enabled = True
        intFehlversuche = 0
        picBild0.Image = Bilder(intFehlversuche).Image
        LblEnde.Text = intSpielrunde.ToString
    End Sub
    Private Sub CmdEnde_Click(sender As Object, e As EventArgs) Handles CmdEnde.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
        intResultat = MessageBox.Show(strMeldung, strTitel, buttons, Icon, DefaultButton)
        '-- reaktion
        If (intResultat = DialogResult.Yes) Then
            Close()
        End If
    End Sub
    Private Sub CmdAnleitung_Click(sender As Object, e As EventArgs) Handles cmdAnleitung.Click
        Dim strSPIELANLEITUNG = "begriffe_raten.pdf"
        Try
            Process.Start(System.IO.Path.Combine(
                  Application.StartupPath,
                  strSPIELANLEITUNG))
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class
