Imports System.Drawing.Text

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        '-- deklaration der arrays im modSuppe
        '-- arrays Buchstaben Einfügen
        AlleBuchstaben.Add(LblBuch0) : AlleBuchstaben.Add(LblBuch1) : AlleBuchstaben.Add(LblBuch2) : AlleBuchstaben.Add(LblBuch3) : AlleBuchstaben.Add(LblBuch4)
        AlleBuchstaben.Add(LblBuch5) : AlleBuchstaben.Add(LblBuch6) : AlleBuchstaben.Add(LblBuch7) : AlleBuchstaben.Add(LblBuch8) : AlleBuchstaben.Add(LblBuch9)
        AlleBuchstaben.Add(LblBuch10) : AlleBuchstaben.Add(LblBuch11) : AlleBuchstaben.Add(LblBuch12) : AlleBuchstaben.Add(LblBuch13) : AlleBuchstaben.Add(LblBuch14)
        '-------- Textfeder für Eingabe
        AlleEingabeFelder.Add(TxtEin0) : AlleEingabeFelder.Add(TxtEin1) : AlleEingabeFelder.Add(TxtEin2) : AlleEingabeFelder.Add(TxtEin3) : AlleEingabeFelder.Add(TxtEin4)
        AlleEingabeFelder.Add(TxtEin5) : AlleEingabeFelder.Add(TxtEin6) : AlleEingabeFelder.Add(TxtEin7) : AlleEingabeFelder.Add(TxtEin8) : AlleEingabeFelder.Add(TxtEin9)
        AlleEingabeFelder.Add(TxtEin10) : AlleEingabeFelder.Add(TxtEin11) : AlleEingabeFelder.Add(TxtEin12) : AlleEingabeFelder.Add(TxtEin13) : AlleEingabeFelder.Add(TxtEin14)
        '-- tooltipp TODO
        Dim toolTip1 As New ToolTip()
        toolTip1.AutoPopDelay = 5000
        toolTip1.InitialDelay = 1000
        toolTip1.ReshowDelay = 500 : toolTip1.IsBalloon = True
        '-- tooltipp texte festlegen TODO


        '-- steuerelemente beschriften TODO
        GrpBuchstaben.Text = "Vorhandene Buchstaben" : GrpBegriff.Text = "Gesuchter Begriff"
        GrpEinsortieren.Text = "Einsortieren" : GrpAktion.Text = "Aktionen"
        Cmd1Buch.Text = "1 Buchstabe" : CmdEnde.Text = "B&eenden"
        CmdBegriff.Text = "Erster &Begriff" : CmdEingabe.Text = "E&ingeben"
        Cmd2Buch.Text = "2 Buchstaben" : Cmd3Buch.Text = "3 Buchstaben"
        CmdOk.Text = "Ü&bernehmen"
        '-- begriffe lesen  TODO
        IstDateiVorhanden()
        Grundeinstellung()
        'NeueSpielRunde()
    End Sub

    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.F1 Then
            ZeigeSpielAnleitung()
        End If
    End Sub

    Private Sub CmdEnde_Click(sender As Object, e As EventArgs) Handles CmdEnde.Click
        SpielBeende()
    End Sub
    Private Sub ZeigeSpielAnleitung()
        Const strSPIELANLEITUNG = "buchstabensuppe.pdf" '-- ok
        Try
            Process.Start(System.IO.Path.Combine(
                  Application.StartupPath,
                  strSPIELANLEITUNG))
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub SpielBeende()
        Close()
    End Sub
    Private Sub CmdBegriff_Click(sender As Object, e As EventArgs) Handles CmdBegriff.Click
        BegriffAnzeigen()
    End Sub
    Private Sub BegriffAnzeigen()
        Dim rnd As New Random
        Dim intZufall As Integer ', intLang As Integer
        intSpielRunde = 1 : LblP1.Text = CStr(intSpielRunde)
        intZufall = rnd.Next(0, LstAlle.Items.Count - 1)
        strBegriff = LstAlle.Items(intZufall)
        TxtBegriff.Text = strBegriff
        LblWarnung.Text = ""
        intLang = TxtBegriff.Text.Length ' len(TxtBegriff.Text)
        LblInfo.Text = "Der gesucht Begriff hat " & CStr(intLang) & " Buchstaben."
        AlleBuchstabenAnzeigen()
    End Sub
    Private Sub AlleBuchstabenAnzeigen()
        Dim i As Integer
        Dim cBuchstabe As Char
        LstBuchstaben.Items.Clear()
        For i = 0 To TxtBegriff.Text.Length - 1
            cBuchstabe = TxtBegriff.Text(i)
            LstBuchstaben.Items.Add(cBuchstabe)
        Next
        For i = LstBuchstaben.Items.Count To 14
            AlleEingabeFelder(i).Visible = False
            AlleBuchstaben(i).Text = ""
        Next
        For i = 0 To TxtBegriff.Text.Length - 1
            AlleBuchstaben(i).Text = LstBuchstaben.Items(i)
            AlleEingabeFelder(i).BackColor = Color.White
            AlleEingabeFelder(i).Enabled = False
        Next
        GrpEinsortieren.Enabled = True
        GrpAktion.Enabled = True
        CmdBegriff.Text = "Nächster Begriff" : CmdBegriff.Enabled = False
        CmdOk.Enabled = False
    End Sub
    Private Sub Cmd1Buch_Click(sender As Object, e As EventArgs) Handles Cmd1Buch.Click
        BuchstabenEinsortieren()
    End Sub
    Private Sub BuchstabenEinsortieren()
        Dim rnd As New Random
        Dim intPosition As Integer, k As Integer
        Dim cBuchstabe As Char, cVergleich As Char, cVorhanden As Char
        intPosition = rnd.Next(0, LstBuchstaben.Items.Count - 1)
        cBuchstabe = LstBuchstaben.Items(intPosition)
        For k = 0 To (TxtBegriff.Text.Length - 1)
            cVergleich = TxtBegriff.Text(k)
            If cVergleich = cBuchstabe Then
                cVorhanden = AlleEingabeFelder(k).Text
                If cBuchstabe <> cVorhanden Then
                    '--- nicht vorhanden
                    AlleEingabeFelder(k).Text = cBuchstabe
                    Exit For
                Else
                    '---- nicht abbrechen
                End If
            End If
        Next
        LstBuchstaben.Items.RemoveAt(intPosition)
        LstBuchstaben.Refresh()
        For k = 0 To 14
            AlleBuchstaben(k).text = ""
        Next
        For k = 0 To LstBuchstaben.Items.Count - 1
            cBuchstabe = LstBuchstaben.Items(k)
            AlleBuchstaben(k).Text = cBuchstabe
        Next
        Select Case LstBuchstaben.Items.Count
            Case 0
                Cmd1Buch.Enabled = False
            Case 1, 2
                Cmd2Buch.Enabled = False
            Case 3 To 5
                Cmd3Buch.Enabled = False
        End Select

        '-- alle buchstaben wurden ausgewählt
        ProbeKeineEingabe()
    End Sub
    Private Sub ProbeKeineEingabe()
        Dim i As Integer
        Dim intAnzahl As Integer = 0
        For i = 0 To (TxtBegriff.Text.Length - 1)
            If AlleEingabeFelder(i).Text <> "" Then
                intAnzahl += 1 '-- keine leerstelle
            End If
        Next
        If intAnzahl = intLang Then
            LblInfo.Text = "Alle Buchstaben wurden über Schaltflächen eingesetzt." & vbCrLf &
                "Es werden keine Punkte vergeben."
            LblWarnung.Text = ""
            'Grundeinstellung()
            NeueSpielRunde()
        End If
    End Sub
    Private Sub Cmd2Buch_Click(sender As Object, e As EventArgs) Handles Cmd2Buch.Click
        BuchstabenEinsortieren()
        BuchstabenEinsortieren()
    End Sub

    Private Sub Cmd3Buch_Click(sender As Object, e As EventArgs) Handles Cmd3Buch.Click
        BuchstabenEinsortieren()
        BuchstabenEinsortieren()
        BuchstabenEinsortieren()
    End Sub

    Private Sub CmdEingabe_Click(sender As Object, e As EventArgs) Handles CmdEingabe.Click
        Dim i As Integer
        CmdEingabe.Enabled = False              ' : bEingabeAktiv = True
        For i = 0 To (TxtBegriff.Text.Length - 1)
            If AlleEingabeFelder(i).Text = "" Then
                AlleEingabeFelder(i).Enabled = True
                AlleEingabeFelder(i).BackColor = Color.Yellow
            End If
        Next
        For i = 0 To (TxtBegriff.Text.Length - 1)
            If AlleEingabeFelder(i).Text = "" Then
                AlleEingabeFelder(i).Select()
                Exit For
            End If
        Next
        CmdEingabe.Enabled = False
        CmdOk.Enabled = True
        LblWarnung.Text = "ES KOENNEN NUR GROSSBUCHSTEN EINGEGEBEN WERDEN!" & vbCrLf &
            "NUTZEN SIE DIE UMSCHALT- ODER FESTSTELLTASTE"
    End Sub
    Private Sub ProbeBegriffErraten()
        Dim i As Integer
        Dim intAnzahl As Integer = 0
        For i = 0 To (TxtBegriff.Text.Length - 1)
            If AlleEingabeFelder(i).Text = "" Then
                intAnzahl += 1
            End If
        Next
        If intAnzahl <> 0 Then
            MessageBox.Show("Es wurden nicht alle Buchstaben eingegeben!",
                 "Buchstabensuppe", MessageBoxButtons.OK)
            LblInfo.Text = "Es wurden nicht alle Buchstaben eingegeben!"
            '-- NeueSpielrundeOhne()
            Exit Sub            '-----  >
        End If
        '------------------
        Dim strAuslesen As String = ""
        For i = 0 To (TxtBegriff.Text.Length - 1)
            strAuslesen = strAuslesen & AlleEingabeFelder(i).Text
        Next
        TxtVergleich.Text = strAuslesen
        If TxtVergleich.Text = TxtBegriff.Text Then
            LblInfo.Text = TxtBegriff.Text & " ist der gesuchte Begriff."
            PunkteZuweisen()
        Else
            LblInfo.Text = strAuslesen & " ist nicht der gesuchte Begriff." &
            vbCrLf & "In dieser Spielrunde werden keine Punkte vergeben."
            '.-- NeueSpielRundeOhne()
        End If
    End Sub
    Private Sub PunkteZuweisen()
        '-- punkte
        '10 Punkte pro Buchstaben
        '20 Bonuspunkte ab 5 eingegeben Buchstaben
        '50 Bonuspunkte ab 7 eingegeben Buchstaben
        '100 Bonuspunkte bei mehr als 8 Buchstaben
        CmdOk.Enabled = False
        Dim intAnzahl As Integer = 0
        Dim i As Integer
        intBonusPunkte = 0
        Dim intRundenPunkte As Integer = 0
        Dim intPunkte As Integer = 0
        For i = 0 To (TxtBegriff.Text.Length - 1)
            If AlleEingabeFelder(i).BackColor = Color.Yellow Then
                intAnzahl += 1
            End If
        Next
        intPunkte = intAnzahl * 10
        Select Case intAnzahl
            Case 5, 6
                intBonusPunkte = 20
            Case 7
                intBonusPunkte = 50
            Case >= 8
                intBonusPunkte = 100
        End Select
        LblP2.Text = CStr(intBonusPunkte)
        intRundenPunkte = intPunkte + intBonusPunkte
        LblP3.Text = CStr(intRundenPunkte)
        intGesamtPunktZahl = CInt(LblP4.Text) + intBonusPunkte + intPunkte
        'MsgBox(intGesamtPunktZahl)
    End Sub
    Private Sub FokusSetzen(intPosition As Integer)
        Dim i As Integer
        If intPosition = TxtBegriff.Text.Length - 1 Then Exit Sub   '-- >
        For i = intPosition To (TxtBegriff.Text.Length - 1)
            intPosition += 1
            If AlleEingabeFelder(intPosition).Text = "" Then
                AlleEingabeFelder(intPosition).Select
                Exit For
            End If
        Next
    End Sub
    '-- nur grußbuchstenen zulassen 
    Private Sub TxtEin0_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin0.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
                ' buchstaben A bis Z , entfernen
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(0)
    End Sub

    Private Sub TxtEin1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin1.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(1)
    End Sub

    Private Sub TxtEin2_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin2.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(2)
    End Sub

    Private Sub TxtEin3_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin3.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(3)
    End Sub

    Private Sub TxtEin4_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin4.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(4)
    End Sub

    Private Sub TxtEin5_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin5.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(5)
    End Sub

    Private Sub TxtEin6_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin6.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(6)
    End Sub

    Private Sub TxtEin7_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin7.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(7)
    End Sub

    Private Sub TxtEin8_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin8.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(8)
    End Sub

    Private Sub TxtEin9_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin9.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(9)
    End Sub

    Private Sub TxtEin10_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin10.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(10)
    End Sub

    Private Sub TxtEin11_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin11.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(11)
    End Sub

    Private Sub TxtEin12_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin12.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(12)
    End Sub

    Private Sub TxtEin13_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin13.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(13)
    End Sub

    Private Sub TxtEin14_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtEin14.KeyPress
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 8
            Case Else
                e.Handled = True
        End Select
        FokusSetzen(14)
    End Sub

    Private Sub CmdOk_Click(sender As Object, e As EventArgs) Handles CmdOk.Click
        LblWarnung.Text = ""
        ProbeBegriffErraten()
    End Sub


End Class
