Laden...

Probleme beim Erstellen einer Liste aus Objekten mit zufälligen Eigenschaften

Erstellt von schweito vor 8 Jahren Letzter Beitrag vor 8 Jahren 757 Views
S
schweito Themenstarter:in
5 Beiträge seit 2015
vor 8 Jahren
Probleme beim Erstellen einer Liste aus Objekten mit zufälligen Eigenschaften

Liebe Forengemeinde,

ich möchte folgendes realisieren:

Ich habe eine Klasse Boxer, die logischerweise eine Spielfigur vom Typ Boxer
abbilden soll, mit zufälligen Eigenschaften. Um das zu bewerkstelligen habe ich
im Konstruktor die Randomfunktion für alle zufälligen Werte implementiert:



public boxer() //Konstruktor mit Zufallswerten
        {
            Random rnd = new Random();
      
            bGewicht = rnd.Next(60, 120);
            bAusdauer = rnd.Next(10, 35);
            bKraft = rnd.Next(10, 25);
            bSchnelligkeit = rnd.Next(10, 25);
            bZaehigkeit = rnd.Next(10, 80);
            bMeidverhalten = rnd.Next(10, 20);
            bPraezision = rnd.Next(10, 20);
            bAlter = rnd.Next(18, 27);
            bWBARating = 100;
            bWBCRating = 100;
            bIBFRating = 100;
            checkWeightClass();  //Gewichtsklasse wird ermittelt
            generateName();     // Namen wird zufällig zusammengestellt

           

    }



Die beiden Funktionen checkWeightClass() und generateName() sind auch in der
Klasse Boxer definiert:

Die Funktion für die Namensgenerierung:



   public void generateName()
        {
            Random indexVorname = new Random(); //190
            Random indexNachname = new Random(); //190
            Random indexKampfname = new Random(); //190
            Random indexZufall = new Random();
            bVorname = indexVorname.Next(0, 189);
            bNachname = indexNachname.Next(0, 189);
            bKampfname = indexKampfname.Next(0, 189);
            //bName = "";
            int zufall = indexZufall.Next(0, 4);

            if (zufall >= 2)
            {
                bName = vorname[bVorname] + " " + "'" + kampfname[bKampfname] + "'" + " " + nachname[bNachname];
            }

            if (zufall < 2)
            {
                bName = "'" + kampfname[bKampfname] + "'" + " " + vorname[bVorname] + " " + nachname[bNachname];
            }

Die Funktion für die Gewichtsklasse:



public void checkWeightClass()
        {

            if (bGewicht < 65)
            {

                bGewichtsklasse = "Juniorfliegengewicht";

                bGroesse = rnd2.Next(160, 170);

            }

            if (bGewicht >= 65 && bGewicht < 75)
            {
                bGewichtsklasse = "Leichtgewicht";

                bGroesse = rnd2.Next(170, 178);
            }

            if (bGewicht >= 75 && bGewicht < 85)
            {
                bGewichtsklasse = "Mittelgewicht";

                bGroesse = rnd2.Next(178, 185);
            }
            if (bGewicht >= 85 && bGewicht < 95)
            {
                bGewichtsklasse = "Halbschwergewicht";

                bGroesse = rnd2.Next(185, 191);
            }

            if (bGewicht >= 95 && bGewicht < 105)
            {
                bGewichtsklasse = "Schwergewicht";

                bGroesse = rnd2.Next(191, 198);
            }

            if (bGewicht >= 105)
            {
                bGewichtsklasse = "Superschwergewicht";

                bGroesse = rnd2.Next(198, 210);
            }



        }


Wird nun ein Button geklickt wird bei jedem Klick ein zufälliges Objekt
erzeugt.


 boxer spieler = new boxer();

Nun zu meine eigentlichen Problem. Ich möchte nachdem ein Boxer gewählt wurde
50 weitere Boxer erstellen - alle auch mit Zufallswerten. Also dachte ich, ich mache
eine Liste mit 50 Objekten - da im Konstruktor alles zufällig ermittelt wird, sollte
es ja gehen ...


 List<boxer> WBACircuit = new List<boxer>();      //Liste aus Objekten erstellen

                for (int i = 0; i < 49; i++)                 //50 neue Boxer in die Liste aufnehmen
            {
                WBACircuit.Add(new boxer());
                
            }

            foreach (var element in WBACircuit)                //Boxer ausgeben und Eigenschaften ausgeben
                Console.WriteLine(element.getbName(),element.getbKraft().ToString(),
                                  element.getbZaehigkeit().ToString(),
                                  element.getbAusdauer().ToString(),
                                  element.getbSchnelligkeit().ToString(), 
                                  element.getbMeidverhalten().ToString(),
                                  element.getbPraezision().ToString());        
                
               

            

        }

Leider zeigt die Console nun 50 mal den gleichen Namen an und die andere Daten
werden gar nicht angezeigt, obwohl ich diese in der foreach ja angegeben habe.
Sollte in der Schleife nicht 50 mal der Konstruktor aufgerufen werden, und somit 50
unterschiedliche Objekter erstellt werden? Klicke ich auf den Button der obige Funktion enthält,
kommt immer eine neue Ausgabe mit 50 gleichen Namen ...

Mache ich irgendwas falsch? Entschuldigung , für das lange Posting ich wollte mein
Problem nur verständlich darstellen - Projekt ist dem Posting anhängend...

Viele Grüße und vielen Dank für etwaige Antworten...
Timo

Hinweis von Coffeebean vor 8 Jahren

Anhang entfernt, bitte beachte [Hinweis] Wie poste ich richtig? Punkt 4.1