Public Class frmSpiel

    Dim intFeldAuswahl As Integer = -1
    Private Const strSPIELANLEITUNG = "sudoku.pdf"
    'Dim AnzahlRaten As New ArrayList
    Private Sub frmSpiel_Load(sender As Object, e As EventArgs) Handles Me.Load
        Felder.Add(Pic0) : Felder.Add(Pic1) : Felder.Add(Pic2) : Felder.Add(Pic3) : Felder.Add(pic4) : Felder.Add(Pic5) : Felder.Add(Pic6) : Felder.Add(Pic7)
        Felder.Add(Pic8) : Felder.Add(pic9) : Felder.Add(Pic10) : Felder.Add(Pik11) : Felder.Add(Pic12) : Felder.Add(Pic13) : Felder.Add(Pic14) : Felder.Add(Pic15)
        '------------------------------
        Zahlen.Add(Txt0) : Zahlen.Add(Txt1) : Zahlen.Add(Txt2) : Zahlen.Add(Txt3) : Zahlen.Add(Txt4) : Zahlen.Add(Txt5) : Zahlen.Add(Txt6) : Zahlen.Add(Txt7)
        Zahlen.Add(Txt8) : Zahlen.Add(Txt9) : Zahlen.Add(Txt10) : Zahlen.Add(Txt11) : Zahlen.Add(Txt12) : Zahlen.Add(Txt13) : Zahlen.Add(Txt14) : Zahlen.Add(Txt15)
        '-------------- beschriftungen
        CmdStart.Text = "Zahle&n anzeigen" : CmdEnde.Text = "B&eenden" : cmdRichtig.Text = "&Alles richtig?" : CmdAnleitung.Text = "&Spielanleitung"
        Dim k As Integer
        For k = 0 To 15
            Zahlen(k).Left = Felder(k).Left + 10
            Zahlen(k).Top = Felder(k).Top + 10
            Felder(k).BackColor = Color.White
            Zahlen(k).BackColor = Felder(k).BackColor
            Zahlen(k).Text = ""
            bGesperrt(k) = True
        Next k
        LblInfo.Text = "Wähle wieviele Zahlen Du raten willst." & vbCrLf &
            "Klicke danach auf >Zahlen anzeigen<."
    End Sub
    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.F1 Then  ' 112
            ZeigeSpielAnleitung()
        End If
    End Sub
    Private Sub CmdEnde_Click(sender As Object, e As EventArgs) Handles CmdEnde.Click
        Dim Antwort As DialogResult
        Antwort = MessageBox.Show("Bist Du sicher," & vbCrLf &
                  "dass Du das Spiel beenden möchtest?", "Sudoku beenden",
                  MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If Antwort = DialogResult.Yes Then
            Me.Close()
        End If
    End Sub

    Private Sub CmdStart_Click(sender As Object, e As EventArgs) Handles CmdStart.Click
        If CmdStart.Text = "&Neues Spiel" Then
            BeginneEinNeuesSpiel()
        Else
            BeginneDasSpiel()
        End If
        '--------------------------
        CmdStart.Enabled = False
        CmdStart.Text = "&Neues Spiel"
        LblInfo.Text = "Klicke auf ein Feld ohne Zahl." & vbCrLf &
            "Wähle danach eine Zahl."
    End Sub

    Private Sub WechseleDieFarbe()
        Dim i As Integer
        For i = 0 To 15
            If Felder(i).BackColor = Color.LightGreen Then
                Felder(i).BackColor = Color.White
                Zahlen(i).BackColor = Color.White
            End If
        Next
        If intFeldAuswahl = -1 Then Exit Sub

        Felder(intFeldAuswahl).BackColor = Color.LightGreen
        Zahlen(intFeldAuswahl).BackColor = Color.LightGreen
    End Sub
    Private Sub ProbeRichtig()
        Dim i As Integer
        Dim bAlleZahlen As Boolean = True
        For i = 0 To 15
            If Zahlen(i).Text = "" Then bAlleZahlen = False
        Next
        If bAlleZahlen = True Then
            cmdRichtig.Enabled = True
            LblInfo.Text = "Klicke auf >Alles richtig<."
        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 Pic0_Click(sender As Object, e As EventArgs) Handles Pic0.Click
        If bGesperrt(0) = True Then Exit Sub
        intFeldAuswahl = 0
        WechseleDieFarbe()
    End Sub
    Private Sub Pic1_Click(sender As Object, e As EventArgs) Handles Pic1.Click
        If bGesperrt(1) = True Then Exit Sub
        intFeldAuswahl = 1
        WechseleDieFarbe()
    End Sub
    Private Sub Pic2_Click(sender As Object, e As EventArgs) Handles Pic2.Click
        If bGesperrt(2) = True Then Exit Sub
        intFeldAuswahl = 2
        WechseleDieFarbe()
    End Sub
    Private Sub Pic3_Click(sender As Object, e As EventArgs) Handles Pic3.Click
        If bGesperrt(3) = True Then Exit Sub
        intFeldAuswahl = 3
        WechseleDieFarbe()
    End Sub
    Private Sub Pic4_Click(sender As Object, e As EventArgs) Handles pic4.Click
        If bGesperrt(4) = True Then Exit Sub
        intFeldAuswahl = 4
        WechseleDieFarbe()
    End Sub
    Private Sub Pic5_Click(sender As Object, e As EventArgs) Handles Pic5.Click
        If bGesperrt(5) = True Then Exit Sub
        intFeldAuswahl = 5
        WechseleDieFarbe()
    End Sub

    Private Sub Pic6_Click(sender As Object, e As EventArgs) Handles Pic6.Click
        If bGesperrt(6) = True Then Exit Sub
        intFeldAuswahl = 6
        WechseleDieFarbe()
    End Sub

    Private Sub Pic7_Click(sender As Object, e As EventArgs) Handles Pic7.Click
        If bGesperrt(7) = True Then Exit Sub
        intFeldAuswahl = 7
        WechseleDieFarbe()
    End Sub

    Private Sub Pic8_Click(sender As Object, e As EventArgs) Handles Pic8.Click
        If bGesperrt(8) = True Then Exit Sub
        intFeldAuswahl = 8
        WechseleDieFarbe()
    End Sub

    Private Sub Pic9_Click(sender As Object, e As EventArgs) Handles pic9.Click
        If bGesperrt(9) = True Then Exit Sub
        intFeldAuswahl = 9
        WechseleDieFarbe()
    End Sub
    Private Sub Pic10_Click(sender As Object, e As EventArgs) Handles Pic10.Click
        If bGesperrt(10) = True Then Exit Sub
        intFeldAuswahl = 10
        WechseleDieFarbe()
    End Sub
    Private Sub Pic11_Click(sender As Object, e As EventArgs) Handles Pik11.Click
        If bGesperrt(11) = True Then Exit Sub
        intFeldAuswahl = 11
        WechseleDieFarbe()
    End Sub


    Private Sub Pic12_Click(sender As Object, e As EventArgs) Handles Pic12.Click
        If bGesperrt(12) = True Then Exit Sub
        intFeldAuswahl = 12
        WechseleDieFarbe()
    End Sub

    Private Sub pic13_Click(sender As Object, e As EventArgs) Handles Pic13.Click
        If bGesperrt(13) = True Then Exit Sub
        intFeldAuswahl = 13
        WechseleDieFarbe()
    End Sub

    Private Sub pic14_Click(sender As Object, e As EventArgs) Handles Pic14.Click
        If bGesperrt(14) = True Then Exit Sub
        intFeldAuswahl = 14
        WechseleDieFarbe()
    End Sub

    Private Sub pic15_Click(sender As Object, e As EventArgs) Handles Pic15.Click
        If bGesperrt(15) = True Then Exit Sub
        intFeldAuswahl = 15
        WechseleDieFarbe()
    End Sub
    '-----------------------------------------------
    Private Sub txt0_Click(sender As Object, e As EventArgs) Handles Txt0.Click
        If bGesperrt(0) = True Then Exit Sub
        intFeldAuswahl = 0
        WechseleDieFarbe()
    End Sub

    Private Sub txt1_Click(sender As Object, e As EventArgs) Handles Txt1.Click
        If bGesperrt(1) = True Then Exit Sub
        intFeldAuswahl = 1
        WechseleDieFarbe()
    End Sub

    Private Sub txt2_Click(sender As Object, e As EventArgs) Handles Txt2.Click
        If bGesperrt(2) = True Then Exit Sub
        intFeldAuswahl = 2
        WechseleDieFarbe()
    End Sub

    Private Sub txt3_Click(sender As Object, e As EventArgs) Handles Txt3.Click
        If bGesperrt(3) = True Then Exit Sub
        intFeldAuswahl = 3
        WechseleDieFarbe()
    End Sub

    Private Sub txt4_Click(sender As Object, e As EventArgs) Handles Txt4.Click
        If bGesperrt(4) = True Then Exit Sub
        intFeldAuswahl = 4
        WechseleDieFarbe()
    End Sub

    Private Sub txt5_Click(sender As Object, e As EventArgs) Handles Txt5.Click
        If bGesperrt(5) = True Then Exit Sub
        intFeldAuswahl = 5
        WechseleDieFarbe()
    End Sub

    Private Sub txt6_Click(sender As Object, e As EventArgs) Handles Txt6.Click
        If bGesperrt(6) = True Then Exit Sub
        intFeldAuswahl = 6
        WechseleDieFarbe()
    End Sub

    Private Sub txt7_Click(sender As Object, e As EventArgs) Handles Txt7.Click
        If bGesperrt(7) = True Then Exit Sub
        intFeldAuswahl = 7
        WechseleDieFarbe()
    End Sub

    Private Sub txt8_Click(sender As Object, e As EventArgs) Handles Txt8.Click
        If bGesperrt(8) = True Then Exit Sub
        intFeldAuswahl = 8
        WechseleDieFarbe()
    End Sub

    Private Sub txt9_Click(sender As Object, e As EventArgs) Handles Txt9.Click
        If bGesperrt(9) = True Then Exit Sub
        intFeldAuswahl = 9
        WechseleDieFarbe()
    End Sub

    Private Sub txt10_Click(sender As Object, e As EventArgs) Handles Txt10.Click
        If bGesperrt(10) = True Then Exit Sub
        intFeldAuswahl = 10
        WechseleDieFarbe()
    End Sub

    Private Sub txt11_Click(sender As Object, e As EventArgs) Handles Txt11.Click
        If bGesperrt(11) = True Then Exit Sub
        intFeldAuswahl = 11
        WechseleDieFarbe()
    End Sub

    Private Sub txt12_Click(sender As Object, e As EventArgs) Handles Txt12.Click
        If bGesperrt(12) = True Then Exit Sub
        intFeldAuswahl = 12
        WechseleDieFarbe()
    End Sub

    Private Sub txt13_Click(sender As Object, e As EventArgs) Handles Txt13.Click
        If bGesperrt(13) = True Then Exit Sub
        intFeldAuswahl = 13
        WechseleDieFarbe()
    End Sub

    Private Sub txt14_Click(sender As Object, e As EventArgs) Handles Txt14.Click
        If bGesperrt(14) = True Then Exit Sub
        intFeldAuswahl = 14
        WechseleDieFarbe()
    End Sub

    Private Sub txt15_Click(sender As Object, e As EventArgs) Handles Txt15.Click
        If bGesperrt(15) = True Then Exit Sub
        intFeldAuswahl = 15
        WechseleDieFarbe()
    End Sub

    Private Sub cmd1_Click(sender As Object, e As EventArgs) Handles Cmd1.Click
        If intFeldAuswahl <> -1 Then
            Zahlen(intFeldAuswahl).Text = "1"
        End If
        ProbeRichtig()

    End Sub

    Private Sub cmd2_Click(sender As Object, e As EventArgs) Handles Cmd2.Click
        If intFeldAuswahl <> -1 Then
            Zahlen(intFeldAuswahl).Text = "2"
        End If
        ProbeRichtig()
    End Sub

    Private Sub cmd3_Click(sender As Object, e As EventArgs) Handles Cmd3.Click
        If intFeldAuswahl <> -1 Then
            Zahlen(intFeldAuswahl).Text = "3"
        End If
        ProbeRichtig()
    End Sub

    Private Sub cmd4_Click(sender As Object, e As EventArgs) Handles Cmd4.Click
        If intFeldAuswahl <> -1 Then
            Zahlen(intFeldAuswahl).Text = "4"
        End If
        ProbeRichtig()
    End Sub

    Private Sub cmdRichtig_Click(sender As Object, e As EventArgs) Handles cmdRichtig.Click
        AllesRichtigAusgefuellt()

    End Sub
    Private Sub AllesRichtigAusgefuellt()
        Dim i As Integer
        Dim bAllesRichtig As Boolean = True
        For i = 0 To 3
            If Zahlen(i).Text <> Lst0.Items(i) Then
                bAllesRichtig = False
                Felder(i).BackColor = Color.Red
                Zahlen(i).BackColor = Color.Red
            End If
            If Zahlen(i + 4).Text <> Lst1.Items(i) Then
                bAllesRichtig = False
                Felder(i + 4).BackColor = Color.Red
                Zahlen(i + 4).BackColor = Color.Red
            End If
            If Zahlen(i + 8).Text <> Lst2.Items(i) Then
                bAllesRichtig = False
                Felder(i + 8).BackColor = Color.Red
                Zahlen(i + 8).BackColor = Color.Red
            End If
            If Zahlen(i + 12).Text <> Lst3.Items(i) Then
                bAllesRichtig = False
                Felder(i + 12).BackColor = Color.Red
                Zahlen(i + 12).BackColor = Color.Red
            End If
        Next
        If bAllesRichtig = True Then
            MessageBox.Show("Gratulation!" & vbCrLf & "Du hast alle Zahlen richtig eingetragen.", "Sudoku")
        Else
            MessageBox.Show("Fehler")
        End If
        CmdStart.Enabled = True
        LblInfo.Text = "Wähle wieviele Zahlen Du raten willst." &
            vbCrLf & "Klicke danach auf >Neues Spiel<."
    End Sub

    Private Sub cmdAnleitung_Click(sender As Object, e As EventArgs) Handles CmdAnleitung.Click
        ZeigeSpielAnleitung()
    End Sub

    Private Sub Opt3_CheckedChanged(sender As Object, e As EventArgs) Handles Opt3.CheckedChanged

    End Sub
End Class
