Public Class Form1
    Private booGezogen(75) As Boolean         '-- alle zahlen
    Private intRandom As New Random           '-- zufallsgenerator
    Private GezogeneZahlen As New ArrayList   '-- array der label zum anzeigen
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        '-- schaltflächen beschriftn
        CmdBeenden.Text = "B&eenden"
        CmdZahlenZiehen.Text = "5 &Zahlen ziehen"
        CmdNeu.Text = "&Neues Spiel"            '-- uebung_4
        ' label zum array hinzufügen
        GezogeneZahlen.Add(Lbl0) : GezogeneZahlen.Add(Lbl1)
        GezogeneZahlen.Add(Lbl2) : GezogeneZahlen.Add(Lbl3)
        GezogeneZahlen.Add(Lbl4)
        ' in jedes label                       '-- ## deaktiviert start
        'Dim i As Integer
        'For i = 0 To 4
        'GezogeneZahlen(i).Text = ""
        'Next                                  '-- ## deaktiviert ende

        CmdNeu.Text = "&Neues Spiel"        '-- uebung_4
        StarteNeuesSpiel()                  '---- neue
    End Sub
    Private Sub StarteNeuesSpiel()
        '---- neue uebung 4
        Dim i As Integer
        For i = 1 To 75
            booGezogen(i) = False
        Next
        LstB.Items.Clear() : lstI.Items.Clear() : LstN.Items.Clear()
        LstG.Items.Clear() : LstO.Items.Clear()
        For i = 0 To 4
            GezogeneZahlen(i).Text = ""
        Next
        CmdNeu.Enabled = False
        CmdZahlenZiehen.Enabled = True
    End Sub
    Private Sub ErzeugeZahlen()
        Dim intAnzahl As Integer = 0   ' zähler
        Dim intZufallsZahl As Integer  ' zufallszahl
        Do
            intZufallsZahl = intRandom.Next(1, 76)
            If Not booGezogen(intZufallsZahl) Then  ' zahl noch nicht gezogen
                booGezogen(intZufallsZahl) = True   ' zahl wurde gezogen
                GezogeneZahlen(intAnzahl).Text = CStr(intZufallsZahl)
                intAnzahl += 1
            End If
            If intAnzahl = 5 Then Exit Do       ' ende der Schleife
        Loop
        ListenFuellen()
    End Sub
    Private Sub ListenFuellen()
        Dim i As Integer
        Dim intAnzahl As Integer = 0
        LstB.Items.Clear() : lstI.Items.Clear() : LstN.Items.Clear()
        LstG.Items.Clear() : LstO.Items.Clear()
        For i = 1 To 75
            If booGezogen(i) Then
                intAnzahl += 1
                Select Case i
                    Case 1 To 15  ' fuellt liste lstB
                        LstB.Items.Add(i.ToString)
                    Case 16 To 30
                        lstI.Items.Add(CStr(i))
                    Case 31 To 45
                        LstN.Items.Add(i.ToString)
                    Case 46 To 60
                        LstG.Items.Add(i.ToString)
                    Case Else
                        LstO.Items.Add(i.ToString)
                End Select
            End If
        Next
        If intAnzahl >= 40 And intAnzahl < 45 Then
            CmdZahlenZiehen.Text = "Die letzten 5 &Zahlen"
        ElseIf intAnzahl >= 45 Then
            CmdZahlenZiehen.Enabled = False
            CmdNeu.Enabled = True
        End If
    End Sub
    Private Sub CmdBeenden_Click(sender As Object, e As EventArgs) Handles CmdBeenden.Click
        Close()
    End Sub

    Private Sub CmdZahlenZiehen_Click(sender As Object, e As EventArgs) Handles CmdZahlenZiehen.Click
        ErzeugeZahlen()
        'TestenDo_1()
        'TestenDo_2()
        'Testen_until()
        'Testen_while()
    End Sub

    Private Sub TestenDo_1()
        ' testen do
        Dim intAnzahl As Integer = 0   ' zähler
        Dim intZufallsZahl As Integer  ' zufallszahl
        Do While intAnzahl < 5
            intZufallsZahl = intRandom.Next(1, 76)
            If Not booGezogen(intZufallsZahl) Then  ' zahl noch nicht gezogen
                booGezogen(intZufallsZahl) = True   ' zahl wurde gezogen
                GezogeneZahlen(intAnzahl).Text = CStr(intZufallsZahl)
                intAnzahl += 1
            End If
        Loop
        ListenFuellen()
    End Sub
    Private Sub TestenDo_2()
        Dim intAnzahl As Integer = 0   ' zähler
        Dim intZufallsZahl As Integer  ' zufallszahl
        Do
            intZufallsZahl = intRandom.Next(1, 76)
            If Not booGezogen(intZufallsZahl) Then  ' zahl noch nicht gezogen
                booGezogen(intZufallsZahl) = True   ' zahl wurde gezogen
                GezogeneZahlen(intAnzahl).Text = CStr(intZufallsZahl)
                intAnzahl += 1
            End If
        Loop While intAnzahl < 5
        ListenFuellen()
    End Sub
    Private Sub Testen_until()
        Dim intAnzahl As Integer = 0   ' zähler
        Dim intZufallsZahl As Integer  ' zufallszahl
        Do
            intZufallsZahl = intRandom.Next(1, 76)
            If Not booGezogen(intZufallsZahl) Then  ' zahl noch nicht gezogen
                booGezogen(intZufallsZahl) = True   ' zahl wurde gezogen
                GezogeneZahlen(intAnzahl).Text = CStr(intZufallsZahl)
                intAnzahl += 1
            End If
        Loop Until intAnzahl >= 5
        ListenFuellen()
    End Sub
    Private Sub Testen_while()
        Dim intAnzahl As Integer = 0   ' zähler
        Dim intZufallsZahl As Integer  ' zufallszahl
        While intAnzahl < 5
            intZufallsZahl = intRandom.Next(1, 76)
            If Not booGezogen(intZufallsZahl) Then  ' zahl noch nicht gezogen
                booGezogen(intZufallsZahl) = True   ' zahl wurde gezogen
                GezogeneZahlen(intAnzahl).Text = CStr(intZufallsZahl)
                intAnzahl += 1
            End If
        End While
        ListenFuellen()
    End Sub

    Private Sub CmdNeu_Click(sender As Object, e As EventArgs) Handles CmdNeu.Click
        '-- uebung_4
        StarteNeuesSpiel()
    End Sub
End Class
