Zufalsspieler generator.

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von basti2485.

    Zufalsspieler generator.

    Hallo.
    ich habe vor, demnächst mit nem Freund ne LAN zu machen wo wir StarCraft ^^ spielen wollen.
    Da dorthin ca. 7 Spieler kommen, würde ich es sehr hilfreich finden, ein Programm zu schreiben, bei dem man am Anfang Spieler namen eingibt und wieviele Spieler es seien sollen, und dann werden Spieler und Karte zufällig ausgewählt und in eine Listbox oder so hinzugefügt.

    Ich hoffe, ihr habt verstanden was ich will ^^

    LG
    ok. ^^ das war mir auch klar ^^ xD

    also ich habe vor, die Namen in einer TXT Datei speichern, und dann eben mit nem button klick die anzahl in ne listbox und ein Label mit kartenname.
    nur jetzt ist die frage, wie mache ich das, das die spieler zufällig ausgewählt werden?
    Hey,

    also mal als kleine Anregung:

    * Die Spieler in eine Textdatei eintragen; evtl. ein Spieler pro Zeile
    * Spieler in eine Liste einlesen, Anzahl ermitteln (über Count)
    * Zufallszahl (zwischen 1 und 7) bestimmt Teilnehmer (mit Random)

    Alles Dinge, die Du hier im Forum findest... :P

    Gruß, Manschula
    Eine Klasse ist ein Bauplan für ein Objekt - wenn eine Klasse instanziert wird, hast du eine (Klassen-)Instanz, auch Objekt genannt. Das Objekt ist sozusagen die Realisierung des Bauplans, also das Gebäude. Es wird in einer Variable gespeichert, die hier "rnd" heißt und vom Typ der Klasse Random ist. Die Next-Methode kannst du nur auf eine Klasseninstanz (ein Objekt) aufrufen. (Manchmal wird auch Objektinstanz gesagt, was streng genommen aber der falsche Begriff ist.)

    gruß
    hal2000
    Gruß
    hal2000
    Mh...die nächsteinfachere Stufe wäre das Präsentieren des kompletten Codes...
    Ich glaube du solltest erstmal ein VB-Buch lesen, bevor du dich ans Programmieren machst...

    Ein Beispiel für Button1_Click() [für andere: Bezeichnungen resultieren aus seinem hochgeladenen Projekt]

    VB.NET-Quellcode

    1. Sub Button1_Click(...) Handles ...
    2. Dim rnd As New Random
    3. Dim idxSpieler1 As Int32 = rnd.Next(0, ListBox2.Items.Count)
    4. Dim idxSpieler2 As Int32 = rnd.Next(0, ListBox2.Items.Count)
    5. ListBox1.Items.Add(ListBox2.Items.Item(idxSpieler1))
    6. ListBox1.Items.Add(ListBox2.Items.Item(idxSpieler2))
    7. 'Für mehr als 2 Spieler am besten eine For-Schleife verwenden
    8. End Sub


    gruß
    hal2000
    Gruß
    hal2000

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    ok. danke der Code funktioniert.
    Nur jez noch 2 Fragen (auch wenn ich nerv.. sorry. bin halt noch ein Anfänger!)
    1.) Wie kann ich das machen, dass jeder name nur 1 mal vorkommt,
    und 2.) Wie mach ich das, dass so viele Spieler eingetragen werden, wie in dem NumericUpDown1.value steht?

    BITTE kann mir jemand helfen? Es wäre echt toll, wenn einer von euch nur diesen kleinen Code für mich macht.
    LG

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „basti2485“ ()

    hal2000 schrieb:

    1. Du testest, ob eine Zahl schonmal vorgekommen ist; Nein --> gut, Ja --> neue Zahl generieren und wieder testen.
    2. Du benutzt eine For-Schleife und lässt diese von1 bis zu NumericUpDown1.Value durchlaufen.

    Und nein, diesmal schreibe ich den Code nicht (hab grad was zutun :D ).

    gruß
    hal2000
    naja war ja das schon ne große hilfe. =(.
    nur das Problem ist, ich kenn mich zur zeit irgendwie gar nicht aus. ich glaub, ich steh voll auf der Leitung. -.-
    Lies ein Buch! Ich habe genauso angefangen wie du - bis ich gemerkt habe dass es ohne Basiswissen einfach nicht funktioniert, bunte Oberflächen zusammenzuklicken und zu hoffen, dass alles funktioniert. Allerdings sind wir danach verschiedene Wege gegangen - ich habe ein 1200-seitiges VB-Buch durchgelesen und mich dann hier im Forum angemeldet, während du dich erst im Forum anmeldest und nicht mal eine If-Abfrage schreiben kannst oder geschweige denn weißt, was eine For-Schleife ist. Sowas steht in fast allen Büchern auf den ersten 50 Seiten. Das alles klingt gemein, unsensibel und ist wenig hilfreich, aber es muss mal gesagt werden.

    Nichtsdestotrotz hier ein Denkanstoß (bzw. die Lösung):

    VB.NET-Quellcode

    1. Dim spielerIndexes As ArrayList
    2. Dim intSpieler As Integer
    3. 'Spielerzahl gemäß *UpDown1 generieren
    4. Do
    5. intSpieler = rnd.Next(0, ListBox2.Items.Count)
    6. If spielerIndexes.Contains(intSpieler) Then
    7. Continue Loop
    8. Else
    9. spielerIndexes.Add(intSpieler)
    10. End If
    11. Loop Until spielerIndexes.Count = NumericUpDown1.Value

    In diesem Code fehlt noch etwas - du musst testen, ob in ListBox2 mindestens so viele Spieler enthalten sind, wie in NumericUpDown1 zum auslosen ausgewählt wurden, um eine Endlosschleife zu verhindern.

    gruß
    hal2000
    Gruß
    hal2000