mit meinem boule Programm
Ich habe
ein Array um alle Gegner zu speichern
Dim Gegner(200) As Integer ' Das Array das alle Gegner aufnimt !
und in einem Integer steht die Anzahl der Manschaften
Dim AnzManschaften As Integer
Jetzt noch die anderen Variablen die sich von selbst erklären
Dim Freilos As String ' noch nicht benutzt (dort steht drinne ob mit oder ohne Freilos)
Dim oZahl As New System.Random ' Später für die zufallszahl
Dim oList As New SortedList ' Liste für runde 1
Dim oList1 As New SortedList ' Liste für runde 2
Dim oList2 As New SortedList ' Liste für runde 3
Dim oList3 As New SortedList ' Liste für runde 4
Dim Gegner1 As String ' Dort wird Später die Gegner Nummer Zwischengespeichert !
Dim b As Integer ' Ein Integer der die Anzahl von manschaften nochmal aufnimt !
Danach lese ich die Anzahl der Manschaften aus und speicher sie
so Bsp. Anzahl manschaften = 10
Jetzt kommt die Auslosung für die Erste Runde
For i = 1 To AnzManschaften
Do
Randomize() ' damit ist es warscheinlicher das nicht zweimal die gleiche zusammen setzung beim Losen entsteht
b = AnzManschaften + 1
Gegner1 = oZahl.Next(1, b) ' Zufällige zahl von 1 und Anzahl der Manschaften !
If Not oList.ContainsValue(Gegner1) Then ' wenn gegner noch nicht gezogen dann
oList.Add(Gegner1, Gegner1) ' schreibe ihn in die Liste
Gegner(i) = Gegner1 ' und in das Array
Exit Do ' Nächster Gegner
End If ' Fals nicht nochmal Losen
Loop
Next
Das Funktioniert wol ich weis nicht WO in dem Programm er sich aufhängt (Vb zeigt nichts an keine Fehler Meldung oder so was das programm hängt einfach und ich muss es durch Taskmanager zumachen)
danach schreib ich alle Gegner in Textboxen (da sollte es keine Probleme geben immer nur)
Textbox1.text = Gegner(1)
....
usw.
Danach Zweite Runde
For i = 1 To AnzManschaften
Do
Randomize()
b = AnzManschaften + 1
Gegner1 = oZahl.Next(1, b) ' Zufällige zahl von 1 und Anzahl der Manschaften !
If Not oList1.ContainsValue(Gegner1) Then ' wenn gegner noch nicht gezogen dann
If Not Gegner1 = Gegner(i) Then ' Darf Dieser Gegner nicht der Gegner von Letzter Runde sein !! dann
oList1.Add(Gegner1, Gegner1) ' schreibe ihn in die Liste
Gegner(i + 50) = Gegner1 ' und in das Array
Exit Do ' Nächster Gegner
End If
End If ' Fals nicht nochmal Losen
Loop
Next
Nächste Runde
For i = 1 To AnzManschaften
Do
Randomize()
b = AnzManschaften + 1
Gegner1 = oZahl.Next(1, b) ' Zufällige zahl von 1 und Anzahl der Manschaften !
If Not oList2.ContainsValue(Gegner1) Then ' wenn gegner noch nicht gezogen dann
If Not Gegner1 = Gegner(i) Then ' Darf Dieser Gegner nicht der Gegner von Runde 1 sein !! dann
If Not Gegner1 = Gegner(i + 50) Then ' Darf Dieser Gegner nicht der Gegner von Runde 2 sein !! dann
oList2.Add(Gegner1, Gegner1) ' schreibe ihn in die Liste
Gegner(i + 100) = Gegner1 ' und in das Array
Exit Do ' Nächster Gegner
End If
End If
End If ' Fals nicht nochmal Losen
Loop
Next
Letzte Runde
For i = 1 To AnzManschaften
Do
Randomize()
b = AnzManschaften + 1
Gegner1 = oZahl.Next(1, b) ' Zufällige zahl von 1 und Anzahl der Manschaften !
If Not oList2.ContainsValue(Gegner1) Then ' wenn gegner noch nicht gezogen dann
If Not Gegner1 = Gegner(i) Then ' Darf Dieser Gegner nicht der Gegner von Runde 1 sein !! dann
If Not Gegner1 = Gegner(i + 50) Then ' Darf Dieser Gegner nicht der Gegner von Runde 2 sein !! dann
If Not Gegner1 = Gegner(i + 100) Then ' Darf Dieser Gegner nicht der Gegner von Runde 3 sein !! dann
oList3.Add(Gegner1, Gegner1) ' schreibe ihn in die Liste
Gegner(i + 150) = Gegner1 ' und in das Array
Exit Do ' Nächster Gegner
End If
End If
End If
End If ' Fals nicht nochmal Losen
Loop
Next
Ich hab ja die Vermutung das es eine Warscheinlichkeit gibt das er z.b. am Anfang die falsche Zahl nimt und dann am Ende nicht mehr weiter kommt (er hängt sich dann in einer loop schleife auf weil er nur noch eine zahl als Gegner nehmen darf diese aber schon wo anders eingesetzt ist ????) könnte doch sein wär echt super wenn ihr ne Lösung findet.
Danke schonmal