Heim > Backend-Entwicklung > C++ > Wie kann ich ein Kartenspiel in C# basierend auf Benutzereingaben mehrmals effizient mischen?

Wie kann ich ein Kartenspiel in C# basierend auf Benutzereingaben mehrmals effizient mischen?

Linda Hamilton
Freigeben: 2025-01-05 03:55:38
Original
504 Leute haben es durchsucht

How Can I Efficiently Shuffle a Deck of Cards Multiple Times in C# Based on User Input?

Kartenmischen in C#

Das Mischen von Karten ist ein entscheidender Aspekt in Kartenspielen, um Zufälligkeit einzuführen. Dieser Artikel befasst sich mit dem Thema Kartenmischen in C# und befasst sich mit einem bestimmten Szenario, in dem Sie ein Kartenspiel basierend auf Benutzereingaben wiederholt mischen müssen.

Im bereitgestellten Code haben Sie Klassen für die Darstellung eines Kartenspiels definiert , einzelne Karten und verschiedene Aufzählungen. Um das Kartenmischen zu integrieren, empfehlen wir die Verwendung des Fisher-Yates-Mischalgorithmus, der die Elemente in einer Sammlung effizient randomisiert.

So können Sie die Fisher-Yates-Mischfunktion zu Ihrem Code hinzufügen:

Hilfsklasse für das Mischen:

Erstellen Sie zur Implementierung eine statische Hilfsklasse namens FisherYates der Shuffle-Algorithmus.

static public class FisherYates
{
    static Random r = new Random();

    static public void Shuffle(int[] deck)
    {
        for (int n = deck.Length - 1; n > 0; --n)
        {
            int k = r.Next(n+1);
            int temp = deck[n];
            deck[n] = deck[k];
            deck[k] = temp;
        }
    }
}
Nach dem Login kopieren

Anwenden des Shuffle auf das Deck:

Ermitteln Sie in Ihrer Program.cs-Klasse die Anzahl der Shuffles, die der Benutzer wünscht, und nutzen Sie die FisherYates Shuffle-Methode, um das Deck entsprechend zu mischen.

int numOfShuffles = int.Parse(Console.ReadLine());
for (int i = 0; i < numOfShuffles; i++)
{
    FisherYates.Shuffle(mydeck.Cards);
}
Nach dem Login kopieren

Anzeige des gemischten Decks Karten:

Nach dem Mischen können Sie den aktualisierten Stapel der gemischten Karten anzeigen.

foreach (Card c in mydeck.Cards)
{
    Console.WriteLine(c);
}
Nach dem Login kopieren

Durch die Nutzung des Fisher-Yates-Mischalgorithmus kann Ihr Programm nun den Kartenstapel mischen Legen Sie Karten so oft ab, wie der Benutzer angibt, und zeigen Sie den resultierenden gemischten Stapel an.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Kartenspiel in C# basierend auf Benutzereingaben mehrmals effizient mischen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage