Module modBesteSpieler
    ' wichtig!!
    ' mit diesem modul muss frmBesteSpieler als form im projekt enthalten sein
    ' 
    Public NameSpieler As New ArrayList     '# aufruf in Form1_Load >iniArray()<
    Public BesteWerte As New ArrayList      '# aufruf in Form1_Load >iniArray()<
    Public intKeinsterWert As Integer       ' letzter eintrag der liste lstPunkte
    Public intGesamtergebnis As Integer = 0 ' ergebnis am ende des spiels zuweisen
    Public booNurAnsehen As Boolean = True  ' nicht speichern
    Public Sub iniArrays()
        ' aufruf aus Form1_load
        With frmBesteSpieler
            NameSpieler.Add(.txtSpieler0) : NameSpieler.Add(.txtSpieler1) : NameSpieler.Add(.txtSpieler2) : NameSpieler.Add(.txtSpieler3) : NameSpieler.Add(.txtSpieler4)
            BesteWerte.Add(.lbl0) : BesteWerte.Add(.lbl1) : BesteWerte.Add(.lbl2) : BesteWerte.Add(.lbl3) : BesteWerte.Add(.lbl4)
        End With
    End Sub
    Public Sub ZeigeBesteSpielerDialog()                              '---------- aufruf im menü und/oder schaltfläche Form1
        With frmBesteSpieler
            Dim i As Integer
            For i = 0 To 4
                NameSpieler(i).Text = .lstNamen.Items(i)
                BesteWerte(i).Text = .lstPunkte.Items(i)
                NameSpieler(i).Enabled = False
            Next
            .lblInfo.Text = "Klicke auf OK" & vbCrLf &
                "um das Fenster zu schließen."
            booNurAnsehen = True
            .ShowDialog()
        End With
    End Sub
    Public Sub BestenSpielerEinsortieren()         '
        Dim intVerGleich As Integer
        Dim intPosEintrag As Integer
        Dim booSortieren As Boolean = False
        With frmBesteSpieler
            For i = 0 To 4
                intVerGleich = Convert.ToInt32(.lstPunkte.Items(i))
                NameSpieler(i).Text = .lstNamen.Items(i)
                BesteWerte(i).Text = .lstPunkte.Items(i)
                '-- einträge werden hinter dem eintrag des spielers einsortiert
                If booSortieren = True Then
                    NameSpieler(i).Text = .lstNamen.Items(i - 1)
                    BesteWerte(i).Text = .lstPunkte.Items(i - 1)
                End If
                ' der neu eintrag für den spieler
                If intGesamtergebnis > intVerGleich And booSortieren = False Then
                    NameSpieler(i).Text = "Spieler"
                    BesteWerte(i).Text = intGesamtergebnis.ToString
                    booSortieren = True
                    intPosEintrag = i
                End If
            Next
            For i = 0 To 4
                NameSpieler(i).Enabled = False  ' alle sperren
            Next
            .lblInfo.Text = "Gib deinen Namen im" & vbCrLf & "markierten Feld ein." _
                & vbCrLf & "Klicke danach auf >OK<."
            NameSpieler(intPosEintrag).Enabled = True  ' eingabemöglichkeit
            NameSpieler(intPosEintrag).Select()        ' eintrag auswählen 
            booNurAnsehen = False
            .ShowDialog()
        End With
    End Sub
    ' aufruf nach spielende aus Form1
    Public Sub ProbeEintragAlsBesterSpieler()
        booNurAnsehen = False
        If intGesamtergebnis > intKeinsterWert Then
            Dim intAntwort As DialogResult
            Try
                My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Question)
            Catch ex As Exception
            End Try
            intAntwort = MessageBox.Show("Möchtest Du Dich in die Liste der Besten Spieler eintragen?", "Eintrag möglich",
                                         MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If intAntwort = DialogResult.Yes Then BestenSpielerEinsortieren()
        Else
            Try
                My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Beep)
            Catch ex As Exception
            End Try
            MessageBox.Show("Du kannst Dich nicht in die Liste der Besten Spieler eintragen!", "Eintrag nicht möglich",
                            MessageBoxButtons.OK, MessageBoxIcon.Question)
        End If
    End Sub
End Module
