Turnierbaum HILFE

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von TwiTIn.

    Turnierbaum HILFE

    Moin Community,

    Ich bräuchte einmal eure Hilfe. Ich programmiere grade für ein Freund ein Turnierbaumscript. Dabei hab ich 3 Abteilungen (Für: 8-, 16-, 32-Leute). So Das für 8 und 16 funktioniert perfekt ohne Fehler. Aber bei dem 32-Leute Baum ist da irgendwie ein Fehler.

    Hier ein Bild für das 32-Leute Turnier:


    Sobald man auf Generate Drückt wird erstmal jedem äußeren Button ein Spieler zugelost und ein Timer aktiviert. Dieser soll dann überprüfen ob ein Name doppelt ist und dann für einen von den Buttons dann neu generieren. So das macht der dann solange bis halt keiner mehr zwei mal vorkommt. Bei 8- und 16- Leuten funktioniert das lückenlos perfekt. Bloß bei dem 32-Leute kann er die letzten 4 nicht generieren weil er nie den richtigen findet. Hatte den Interval vom Timer schon auf 1 trtzdm findet der keinen hab schon alle Intervalle von 1 - 100 probiert.

    Timer1 Quellcode:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. If B25.Text = B24.Text Or B25.Text = B23.Text Or B25.Text =
    2. B22.Text Or B25.Text = B21.Text Or B25.Text = B20.Text Or B25.Text =
    3. B19.Text Or B25.Text = B18.Text Or B25.Text = B17.Text Or B25.Text =
    4. B16.Text Or B25.Text = B15.Text Or B25.Text = B14.Text Or B25.Text =
    5. B13.Text Or B25.Text = B12.Text Or B25.Text = B11.Text Or B25.Text =
    6. B10.Text Or B25.Text = B9.Text Or B25.Text = B8.Text Or B25.Text =
    7. B7.Text Or B25.Text = B6.Text Or B25.Text = B5.Text Or B25.Text =
    8. B4.Text Or B25.Text = B3.Text Or B25.Text = B2.Text Or B25.Text =
    9. B1.Text Then
    10. Dim theWord24 As String = _listWords(_rnd.Next(0, _listWords.Count))
    11. Me.B25.Text = theWord24
    12. End If
    13. If B26.Text = B25.Text Or B26.Text = B24.Text Or B26.Text =
    14. B23.Text Or B26.Text = B22.Text Or B26.Text = B21.Text Or B26.Text =
    15. B20.Text Or B26.Text = B19.Text Or B26.Text = B18.Text Or B26.Text =
    16. B17.Text Or B26.Text = B16.Text Or B26.Text = B15.Text Or B26.Text =
    17. B14.Text Or B26.Text = B13.Text Or B26.Text = B12.Text Or B26.Text =
    18. B11.Text Or B26.Text = B10.Text Or B26.Text = B9.Text Or B26.Text =
    19. B8.Text Or B26.Text = B7.Text Or B26.Text = B6.Text Or B26.Text =
    20. B5.Text Or B26.Text = B4.Text Or B26.Text = B3.Text Or B26.Text =
    21. B2.Text Or B26.Text = B1.Text Then
    22. Dim theWord25 As String = _listWords(_rnd.Next(0, _listWords.Count))
    23. Me.B26.Text = theWord25
    24. End If
    25. If B27.Text = B26.Text Or B27.Text = B25.Text Or B27.Text =
    26. B24.Text Or B27.Text = B23.Text Or B27.Text = B22.Text Or B27.Text =
    27. B21.Text Or B27.Text = B20.Text Or B27.Text = B19.Text Or B27.Text =
    28. B18.Text Or B27.Text = B17.Text Or B27.Text = B16.Text Or B27.Text =
    29. B15.Text Or B27.Text = B14.Text Or B27.Text = B13.Text Or B27.Text =
    30. B12.Text Or B27.Text = B11.Text Or B27.Text = B10.Text Or B27.Text =
    31. B9.Text Or B27.Text = B8.Text Or B27.Text = B7.Text Or B27.Text =
    32. B6.Text Or B27.Text = B5.Text Or B27.Text = B4.Text Or B27.Text =
    33. B3.Text Or B27.Text = B2.Text Or B27.Text = B1.Text Then
    34. Dim theWord26 As String = _listWords(_rnd.Next(0, _listWords.Count))
    35. Me.B27.Text = theWord26
    36. End If
    37. If B28.Text = B27.Text Or B28.Text = B26.Text Or B28.Text =
    38. B25.Text Or B28.Text = B24.Text Or B28.Text = B23.Text Or B28.Text =
    39. B22.Text Or B28.Text = B21.Text Or B28.Text = B20.Text Or B28.Text =
    40. B19.Text Or B28.Text = B18.Text Or B28.Text = B17.Text Or B28.Text =
    41. B16.Text Or B28.Text = B15.Text Or B28.Text = B14.Text Or B28.Text =
    42. B13.Text Or B28.Text = B12.Text Or B28.Text = B11.Text Or B28.Text =
    43. B10.Text Or B28.Text = B9.Text Or B28.Text = B8.Text Or B28.Text =
    44. B7.Text Or B28.Text = B6.Text Or B28.Text = B5.Text Or B28.Text =
    45. B4.Text Or B28.Text = B3.Text Or B28.Text = B2.Text Or B28.Text =
    46. B1.Text Then
    47. Dim theWord27 As String = _listWords(_rnd.Next(0, _listWords.Count))
    48. Me.B28.Text = theWord27
    49. End If
    50. If B29.Text = B28.Text Or B29.Text = B27.Text Or B29.Text =
    51. B26.Text Or B29.Text = B25.Text Or B29.Text = B24.Text Or B29.Text =
    52. B23.Text Or B29.Text = B22.Text Or B29.Text = B21.Text Or B29.Text =
    53. B20.Text Or B29.Text = B19.Text Or B29.Text = B18.Text Or B29.Text =
    54. B17.Text Or B29.Text = B16.Text Or B29.Text = B15.Text Or B29.Text =
    55. B14.Text Or B29.Text = B13.Text Or B29.Text = B12.Text Or B29.Text =
    56. B11.Text Or B29.Text = B10.Text Or B29.Text = B9.Text Or B29.Text =
    57. B8.Text Or B29.Text = B7.Text Or B29.Text = B6.Text Or B29.Text =
    58. B5.Text Or B29.Text = B4.Text Or B29.Text = B3.Text Or B29.Text =
    59. B2.Text Or B29.Text = B1.Text Then
    60. Dim theWord28 As String = _listWords(_rnd.Next(0, _listWords.Count))
    61. Me.B29.Text = theWord28
    62. End If
    63. If B30.Text = B29.Text Or B30.Text = B28.Text Or B30.Text =
    64. B27.Text Or B30.Text = B26.Text Or B30.Text = B25.Text Or B30.Text =
    65. B24.Text Or B30.Text = B23.Text Or B30.Text = B22.Text Or B30.Text =
    66. B21.Text Or B30.Text = B20.Text Or B30.Text = B19.Text Or B30.Text =
    67. B18.Text Or B30.Text = B17.Text Or B30.Text = B16.Text Or B30.Text =
    68. B15.Text Or B30.Text = B14.Text Or B30.Text = B13.Text Or B30.Text =
    69. B12.Text Or B30.Text = B11.Text Or B30.Text = B10.Text Or B30.Text =
    70. B9.Text Or B30.Text = B8.Text Or B30.Text = B7.Text Or B30.Text =
    71. B6.Text Or B30.Text = B5.Text Or B30.Text = B4.Text Or B30.Text =
    72. B3.Text Or B30.Text = B2.Text Or B30.Text = B1.Text Then
    73. Dim theWord29 As String = _listWords(_rnd.Next(0, _listWords.Count))
    74. Me.B30.Text = theWord29
    75. End If
    76. If B31.Text = B30.Text Or B31.Text = B29.Text Or B31.Text =
    77. B28.Text Or B31.Text = B27.Text Or B31.Text = B26.Text Or B31.Text =
    78. B25.Text Or B31.Text = B24.Text Or B31.Text = B23.Text Or B31.Text =
    79. B22.Text Or B31.Text = B21.Text Or B31.Text = B20.Text Or B31.Text =
    80. B19.Text Or B31.Text = B18.Text Or B31.Text = B17.Text Or B31.Text =
    81. B16.Text Or B31.Text = B15.Text Or B31.Text = B14.Text Or B31.Text =
    82. B13.Text Or B31.Text = B12.Text Or B31.Text = B11.Text Or B31.Text =
    83. B10.Text Or B31.Text = B9.Text Or B31.Text = B8.Text Or B31.Text =
    84. B7.Text Or B31.Text = B6.Text Or B31.Text = B5.Text Or B31.Text =
    85. B4.Text Or B31.Text = B3.Text Or B31.Text = B2.Text Or B31.Text =
    86. B1.Text Then
    87. Dim theWord30 As String = _listWords(_rnd.Next(0, _listWords.Count))
    88. Me.B31.Text = theWord30
    89. End If
    90. If B32.Text = B31.Text Or B32.Text = B30.Text Or B32.Text =
    91. B29.Text Or B32.Text = B28.Text Or B32.Text = B27.Text Or B32.Text =
    92. B26.Text Or B32.Text = B25.Text Or B32.Text = B24.Text Or B32.Text =
    93. B23.Text Or B32.Text = B22.Text Or B32.Text = B21.Text Or B32.Text =
    94. B20.Text Or B32.Text = B19.Text Or B32.Text = B18.Text Or B32.Text =
    95. B17.Text Or B32.Text = B16.Text Or B32.Text = B15.Text Or B32.Text =
    96. B14.Text Or B32.Text = B13.Text Or B32.Text = B12.Text Or B32.Text =
    97. B11.Text Or B32.Text = B10.Text Or B32.Text = B9.Text Or B32.Text =
    98. B8.Text Or B32.Text = B7.Text Or B32.Text = B6.Text Or B32.Text =
    99. B5.Text Or B32.Text = B4.Text Or B32.Text = B3.Text Or B32.Text =
    100. B2.Text Or B32.Text = B1.Text Then
    101. Dim theWord31 As String = _listWords(_rnd.Next(0, _listWords.Count))
    102. Me.B32.Text = theWord31
    103. End If



    Der ganze Code war zu lang ist nur der letzte Abschnitt.


    Hoffe mir kann wer helfen :)

    mfg. TwiTIn
    Wat? Du nimmst ne Liste und gehst Random durch, dann entfernst du den Namen einfach aus der Liste.
    Is doch sonst bescheuert.

    Außerdem: Design ist keine Glückssache ^^

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Ich habe den jetzt so abgeändert aber irgendwie funtkioniert das nicht so richtig...
    Ich finde den Fehler nicht. Der Code liegt auf einem Button.

    VB.NET-Quellcode

    1. Dim Spieler() As String = {T1.Text, T2.Text, T3.Text, T4.Text, T5.Text, T6.Text, T7.Text, T8.Text, T9.Text, T10.Text, T11.Text, T12.Text, T13.Text, T14.Text, T15.Text, T16.Text, T17.Text, T18.Text, T19.Text, T20.Text, T21.Text, T22.Text, T23.Text, T24.Text, T25.Text, T26.Text, T27.Text, T28.Text, T29.Text, T30.Text, T31.Text, T32.Text}
    2. Dim r As New Random
    3. Dim tmpDouble(Spieler.Length - 1) As Double
    4. For i As Integer = 0 To Spieler.Length - 1 : tmpDouble(i) = r.NextDouble : Next i
    5. Array.Sort(tmpDouble, Spieler)
    6. Dim count As Integer = 0
    7. For Each c As Control In Me.Controls
    8. If TypeOf (c) Is Button AndAlso c.Name.ToLower.StartsWith("B") Then c.Text = Spieler(count) : count += 1
    9. Next

    VB.NET-Quellcode

    1. Dim players As New List(Of String)({"abc", "def", "ghi", "jkl", "mno"})
    2. Dim rnd As New Random
    3. Dim num As Integer = rnd.Next(players.Count - 1)
    4. MsgBox(players(num))
    5. players.RemoveAt(num)


    Da die List in meinem Beispiel bei jedem Aufruf neu erstellt wird musst du sie entweder
    außerhalb der Sub als Private deklarieren und in einer anderen Sub befüllen oder co.

    Mit dem Beispiel gehst du dann einfach alle Buttons der Reihe nach durch und
    gibst ihnen nen zufälligen Spielernamen. An den Buttons musst du ja nichts zurechtmischen,
    die können ja ihre feste Reihenfolge haben.

    -> Ich hab dir mal nen erklärtes Projekt gebastelt, im Anhang.

    Grüße
    Dateien
    • Players.zip

      (160,44 kB, 178 mal heruntergeladen, zuletzt: )
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Nikx“ ()

    WIeso brauchst du das auch?
    Deine Buttons heißen mal angenommen BtnPlayer1 bis BtnPlayer32.

    Geh alle Buttons durch und gib ihnen zufällige Werte, mein Beispiel is ja
    oben.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!