Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        '--------------
        KartenZuweisung()      ' daten für karten festlegen
        IniSpielfeld()         ' arraylisten erstellen   
        Grundeinstellung()     ' bildfelder ausrichten
        StarteNeueSpielRunde()
        CmdEnde.Text = "B&eenden" : CmdAnleitung.Text = "&Spielanleitung"
        Me.Text = "Joker Peak Vers.: 1.0.0.0"
    End Sub
    Private Sub StarteNeueSpielRunde()
        ' zieht karten, listen füllen
        KartenAufSpielfeldSichtbar()
        AlleKartenZiehen()
        ZeichneDasSpielfeld()  '-- zeichnet aktuelle karten
        CmdNeu.Text = "&Neue Spielrunde" : CmdNeu.Enabled = False
    End Sub

    Private Sub PicTalon_Click(sender As Object, e As EventArgs) Handles PictureBox29.Click
        If LstTalon.Items.Count = 0 Then Exit Sub   '-- sicherheit
        KarteAusDemTalon()
        LblTalon.Text = "Es sind " & CStr(LstTalon.Items.Count) & " Karten im Talon."
    End Sub
    Private Sub KarteAusDemTalon()
        Dim intNr As Integer
        intNr = CInt(LstTalon.Items(LstTalon.Items.Count - 1))
        LstTalon.Items.RemoveAt(LstTalon.Items.Count - 1)
        ZeichneKarte(28).Image = KartenNr(intNr).Image '-- neue Karte zeichnen
        LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe &
            " " & SpielKarten(intNr).strName & " wurde neu aufgedeckt."
        intAblageNr = intNr
        ProbeSpielrundeBeendet()
    End Sub
    Private Sub IstKarteFrei(intPos As Integer)
        Dim intNr As Integer
        booFrei = True
        intNr = CInt(LstKarten.Items(intPos))
        'MsgBox(CStr(intNr))
        Select Case intPos
            Case 0    '3 , 4
                If ZeichneKarte(3).Visible Or ZeichneKarte(4).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 1   ' 5 , 6
                If ZeichneKarte(5).Visible Or ZeichneKarte(6).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 2    ' 7 , 8
                If ZeichneKarte(7).Visible Or ZeichneKarte(8).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 3    ' 9 , 10
                If ZeichneKarte(9).Visible Or ZeichneKarte(10).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 4    ' 10 , 11
                If ZeichneKarte(10).Visible Or ZeichneKarte(11).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 5    ' 12 , 13
                If ZeichneKarte(12).Visible Or ZeichneKarte(13).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 6    '   13,  14
                If ZeichneKarte(13).Visible Or ZeichneKarte(14).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 7    '   15,  16
                If ZeichneKarte(15).Visible Or ZeichneKarte(16).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 8    '   16,  17
                If ZeichneKarte(16).Visible Or ZeichneKarte(17).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 9    '   18,  19
                If ZeichneKarte(18).Visible Or ZeichneKarte(19).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 10    '   19,  20
                If ZeichneKarte(19).Visible Or ZeichneKarte(20).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 11    '   20,  21
                If ZeichneKarte(20).Visible Or ZeichneKarte(21).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 12    '   21,  22
                If ZeichneKarte(21).Visible Or ZeichneKarte(22).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 13    '   22,  23
                If ZeichneKarte(22).Visible Or ZeichneKarte(23).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 14    '   23,  24
                If ZeichneKarte(23).Visible Or ZeichneKarte(24).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 15    '   24,  25
                If ZeichneKarte(24).Visible Or ZeichneKarte(25).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 16    '   25,  26
                If ZeichneKarte(25).Visible Or ZeichneKarte(26).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
            Case 17    '   26,  27              '
                If ZeichneKarte(26).Visible Or ZeichneKarte(27).Visible Then
                    LblInfo.Text = "Die Karte " & SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " ist noch nicht frei." : booFrei = False
                End If
        End Select
        '-- karte ablegen
        If booFrei Then KarteAblegen(intPos)
    End Sub

    Private Sub KarteAblegen(intPos As Integer)
        Dim intNr As Integer
        Dim booAblegen As Boolean
        intNr = CInt(LstKarten.Items(intPos)) '-- nummer listenposition
        booAblegen = False
        If SpielKarten(intAblageNr).intWert = 0 Then    '--joker
            booAblegen = True
        ElseIf SpielKarten(intAblageNr).intWert = 13 Then    '-- koenig
            If SpielKarten(intNr).intWert = 1 Or SpielKarten(intNr).intWert = 12 Then
                booAblegen = True
            End If
        ElseIf SpielKarten(intAblageNr).intWert = 1 Then '-- As
            If SpielKarten(intNr).intWert = 13 Or SpielKarten(intNr).intWert = 2 Then
                booAblegen = True
            End If
        Else
            '-- wert berechnen - 1 + 1
            If SpielKarten(intNr).intWert + 1 =
                SpielKarten(intAblageNr).intWert Or SpielKarten(intNr).intWert - 1 = SpielKarten(intAblageNr).intWert Then
                booAblegen = True
            End If
        End If
        If booAblegen Then
            LblInfo.Text = SpielKarten(intNr).strFarbe & " " & SpielKarten(intNr).strName & " wurde auf " & SpielKarten(intAblageNr).strFarbe & " " & SpielKarten(intAblageNr).strName & " abgelegt."
            ZeichneKarte(28).Image = ZeichneKarte(intPos).Image  '-- neue Karte zeichnen
            ZeichneKarte(intPos).Visible = False  '-- karte ausblenden
            intAblageNr = intNr                   '-- ablagenummer übergeben
        Else
            LblInfo.Text = SpielKarten(intNr).strFarbe & " " &
                SpielKarten(intNr).strName & " kann nicht auf " & SpielKarten(intAblageNr).strFarbe & " " & SpielKarten(intAblageNr).strName
        End If
        ProbeSpielrundeBeendet()
    End Sub
    Private Sub ProbeSpielrundeBeendet()
        Dim i As Integer
        Dim intAnzahl As Integer
        Dim intJoker As Integer
        For i = 0 To 27 '-- karten spielfeld
            If ZeichneKarte(i).Visible = False Then intAnzahl += 1
        Next
        If intAnzahl >= 28 Then
            CmdNeu.Enabled = True : CmdNeu.Text = "&Neue Spielrunde"
            LblInfo.Text = "Sie haben alle Karten abgelegt." & vbCrLf &
                "Klicken Sie auf die Schaltfläche >Neue Spielrunde<."
            PictureBox29.Visible = False : PicWeiter.Visible = False
            booNeueSpielrunde = True
            Exit Sub
        End If
        '--------------------- spiel beendet ?
        If LstTalon.Items.Count = 0 Then
            PictureBox29.Visible = False : PicWeiter.Visible = False
            For i = 30 To 32
                If ZeichneKarte(i).Visible Then intJoker += 1
            Next
        End If
        If LstTalon.Items.Count = 0 And intJoker = 0 Then
            LblInfo.Text = "Das Spiel ist beendet." & vbCrLf &
                "es sind keine weiteren Züge mehr möglich."
            PictureBox29.Visible = False : PicWeiter.Visible = False
            CmdNeu.Enabled = True : CmdNeu.Text = "&Neues Spiel"
            booNeueSpielrunde = False   '-- joker neu aufdecken
        ElseIf LstTalon.Items.Count = 0 And intJoker <> 0 Then
            LblInfo.Text = "Einen Joker aufdecken, um das Spiel fortzusetzen."
        End If
    End Sub
    Private Sub PictureBox0_Click(sender As Object, e As EventArgs) Handles PictureBox0.Click
        IstKarteFrei(0)
    End Sub
    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
        IstKarteFrei(1)
    End Sub
    Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles PictureBox2.Click
        IstKarteFrei(2)
    End Sub
    Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click
        IstKarteFrei(3)
    End Sub
    Private Sub PictureBox4_Click(sender As Object, e As EventArgs) Handles PictureBox4.Click
        IstKarteFrei(4)
    End Sub
    Private Sub PictureBox5_Click(sender As Object, e As EventArgs) Handles PictureBox5.Click
        IstKarteFrei(5)
    End Sub
    Private Sub PictureBox6_Click(sender As Object, e As EventArgs) Handles PictureBox6.Click
        IstKarteFrei(6)
    End Sub
    Private Sub PictureBox7_Click(sender As Object, e As EventArgs) Handles PictureBox7.Click
        IstKarteFrei(7)
    End Sub
    Private Sub PictureBox8_Click(sender As Object, e As EventArgs) Handles PictureBox8.Click
        IstKarteFrei(8)
    End Sub
    Private Sub PictureBox9_Click(sender As Object, e As EventArgs) Handles PictureBox9.Click
        IstKarteFrei(9)
    End Sub
    Private Sub PictureBox10_Click(sender As Object, e As EventArgs) Handles PictureBox10.Click
        IstKarteFrei(10)
    End Sub
    Private Sub PictureBox11_Click(sender As Object, e As EventArgs) Handles PictureBox11.Click
        IstKarteFrei(11)
    End Sub
    Private Sub PictureBox12_Click(sender As Object, e As EventArgs) Handles PictureBox12.Click
        IstKarteFrei(12)
    End Sub
    Private Sub PictureBox13_Click(sender As Object, e As EventArgs) Handles PictureBox13.Click
        IstKarteFrei(13)
    End Sub
    Private Sub PictureBox14_Click(sender As Object, e As EventArgs) Handles PictureBox14.Click
        IstKarteFrei(14)
    End Sub
    Private Sub PictureBox15_Click(sender As Object, e As EventArgs) Handles PictureBox15.Click
        IstKarteFrei(15)
    End Sub
    Private Sub PictureBox16_Click(sender As Object, e As EventArgs) Handles PictureBox16.Click
        IstKarteFrei(16)
    End Sub
    Private Sub PictureBox17_Click(sender As Object, e As EventArgs) Handles PictureBox17.Click
        IstKarteFrei(17)
    End Sub
    Private Sub PictureBox18_Click(sender As Object, e As EventArgs) Handles PictureBox18.Click
        KarteAblegen(18)
    End Sub

    Private Sub PictureBox19_Click(sender As Object, e As EventArgs) Handles PictureBox19.Click
        KarteAblegen(19)
    End Sub

    Private Sub PictureBox20_Click(sender As Object, e As EventArgs) Handles PictureBox20.Click
        KarteAblegen(20)
    End Sub

    Private Sub PictureBox21_Click(sender As Object, e As EventArgs) Handles PictureBox21.Click
        KarteAblegen(21)
    End Sub

    Private Sub PictureBox22_Click(sender As Object, e As EventArgs) Handles PictureBox22.Click
        KarteAblegen(22)
    End Sub

    Private Sub PictureBox23_Click(sender As Object, e As EventArgs) Handles PictureBox23.Click
        KarteAblegen(23)
    End Sub

    Private Sub PictureBox24_Click(sender As Object, e As EventArgs) Handles PictureBox24.Click
        KarteAblegen(24)
    End Sub

    Private Sub PictureBox25_Click(sender As Object, e As EventArgs) Handles PictureBox25.Click
        KarteAblegen(25)
    End Sub

    Private Sub PictureBox26_Click(sender As Object, e As EventArgs) Handles PictureBox26.Click
        KarteAblegen(26)
    End Sub

    Private Sub PictureBox27_Click(sender As Object, e As EventArgs) Handles PictureBox27.Click
        KarteAblegen(27)
    End Sub

    Private Sub CmdEnde_Click(sender As Object, e As EventArgs) Handles CmdEnde.Click
        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 PicWeiter_Click(sender As Object, e As EventArgs) Handles PicWeiter.Click
        KarteAusDemTalon()
    End Sub

    Private Sub PicJoker1_Click(sender As Object, e As EventArgs) Handles PicJoker1.Click
        PicJoker1.Visible = False
        JokerAufdecken()
    End Sub
    Private Sub JokerAufdecken()
        ZeichneKarte(28).Image = KartenNr(55).Image '-- neue Karte zeichnen
        LblInfo.Text = "Ein Joker wurde aufgedeckt."
        intAblageNr = 0
        LstZuruek.Items.Clear()
        PicZurueck.Visible = False
    End Sub
    Private Sub PicJoker2_Click(sender As Object, e As EventArgs) Handles PicJoker2.Click
        PicJoker2.Visible = False
        JokerAufdecken()
    End Sub
    Private Sub PicJoker3_Click(sender As Object, e As EventArgs) Handles PicJoker3.Click
        PicJoker3.Visible = False
        JokerAufdecken()
    End Sub
    Private Sub CmdNeu_Click(sender As Object, e As EventArgs) Handles CmdNeu.Click
        StarteNeueSpielRunde()
    End Sub
End Class
