Frage

Lassen Sie mich zunächst meine schreckliche Grammatik und Rechtschreibung entschuldigen.

Ich habe ein MVC3-Projekt, das ein Deck erstellt und diesem 52 Karten hinzufügt.Dann habe ich eine Shuffle-Funktion hinzugefügt, die nur dann funktioniert, wenn Ich trete hindurch die Schleife in der Shuffle-Methode.

In meiner Klasse Deck erstelle ich ein Array, das 52 PlayingCard-Objekte enthält.Deck verfügt über eine Methode, die das Array in eine Liste kopiert, die in meiner Ansicht angezeigt wird, und es hat auch eine Methode, die die Liste mischt.

Nicht einfach zu erklären, aber der Code läuft nur einmal es sei denn, ich trete durch.

Meine Mischmethode in meinem Deck-Modell.

 public void Shuffle()
 {
    for (int i = 0; i < 51; i++)
    {
        PlayingCard temp;
        temp = myDeck[i];
        Random rnd = new Random();
        int randomNr = rnd.Next(51);
        myDeck[i] = myDeck[randomNr];
        myDeck[randomNr] = temp;
    }   
}

Ausgabe nach dem Mischen, ohne Schritt durch:

*4 Diamanten1 Herzen 2 Herzen 3 Herzen 4 Herzen 5 Herzen 6 Herzen 7 Herzen 8 Herzen 9 Herzen 10 Herzen 11 Herzen 12 Herzen 13 Herzen 1 Spaten 2 Spaten 3 Spaten 4 Spaten 5 Spaten 6 Spaten 7 Spik 13 Spades 1 Clubs 2 Clubs 3 Clubs 4 Clubs 5 Clubs 6 Clubs 7 Clubs 8 Clubs 9 Clubs 10 Clubs 11 Clubs 12 Clubs 13 Clubs 1 Diamonds 2 Diamonds12 Diamanten3 Diamanten 5 Diamanten 6 Diamanten 7 Diamanten 8 Diamanten 9 Diamanten 10 Diamanten 11 Diamanten 13 Diamanten *

Ausgabe nach 15-maligem Durchlaufen:

2 Spaten 3 Clubs 5 Spaten 3 Diamanten 12 Diamanten 13 Herzen 11 Herzen 1 Spaten 6 Clubs 5 Diamanten 1 Clubs 12 Herzen 7 Clubs 13 Spaten 2 Clubs 10 Herzen 3 Spaten 3 Spaten 6 Spaten 7 Spaten 9 Spaten 10 Spaten 11 Spaten 11 Spaten 12 Spaten 8 Herzen 7 Herzen 1 Herzen 2 Herzen 4 Clubs 5 Clubs 9 Herzen 6 Herzen 8 Clubs 9 Clubs 10 Clubs 11 Clubs 12 Clubs 13 Clubs 1 Diamanten 2 Diamanten 4 Herzen 4 Diamanten 5 Herzen 6 Diamanten 7 Diamanten 8 Diamonds 9 Diamonds 10 Diamonds 11 Diamanten 13 Diamanten

Ausgabe nach Durchlaufen der gesamten Schleife:

10 Herzen 6 Clubs 8 Herzen 5 Heart 3 Clubs 8 Clubs 9 Diamanten 7 Clubs 2 Clubs 3 Diamanten 1 Diamanten 7 Spaten 10 Spaten 2 Herzen 6 Spaten 13 Spaten 4 Spaten 2 Spaten 6 Diamanten 4 Herzen 2 Diamanten 4 Diamanten 11 Clubs 7 Herzen 3 Herzen 3 Spaten 3 Herzen 10 Clubs 13 Herzen 9 Herzen 13 Diamanten

Wie gezeigt, läuft die Schleife nur, wenn ich sie durchschreite.Ich habe verschiedene Loops ausprobiert, ein neues Projekt erstellt, die Shuffle-Funktion auf den Controller verschoben, nichts hat geholfen.

Hat jemand eine Idee, wie ich das lösen soll?

War es hilfreich?

Lösung

Ich habe rund um dieses Thema und den Umzug eine Beispiel-App erstellt Random rnd = new Random() außerhalb der Schleife gibt mir das Verhalten, das ich erwarten würde.

Der Grund dafür, dass scheinbar nur eine Karte gemischt wurde, liegt meiner Meinung nach darin, dass der zufällig generierte Wert während der gesamten Schleife derselbe war.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top