Mélange de cartes VB .NET – Un tutoriel sur l’allocation aléatoire des cartes – Finance-inclusive.fr

Cet article traite du concept de mélange des cartes pour une version informatique d’un jeu de cartes à 52 cartes normal. J’ai développé mon propre algorithme pour mélanger et distribuer les cartes à utiliser dans mes jeux de cartes. Je suis sûr que ce n’est pas le plus élégant ni le meilleur. Par conséquent, j’ai pensé qu’il serait bon de comparer avec certaines des idées présentées dans les différents forums et articles disponibles. J’ai trouvé plusieurs bons moyens d’y parvenir et certains meilleurs que le mien. Ce n’était pas une surprise pour moi. Cependant, j’ai été abasourdi par le nombre de fois où les gens ont posé cette question et le nombre de méthodes indiquées en réponse qui n’étaient pas aléatoires ou qui comportaient des erreurs. Je me suis senti obligé d’écrire cet article afin de montrer une manière d’accomplir la tâche et comme un avertissement pour vérifier toute méthode trouvée sur le Web avant de l’implémenter.

Pour commencer, vous devez trouver un moyen de générer des nombres aléatoires. Il y a plusieurs manières de le faire. Vous pouvez même créer votre propre méthode. Si vous êtes comme moi, vous avez mieux à faire. Je viens d’utiliser la classe Random disponible dans VB .NET. Vous pouvez accéder à cette classe en définissant une variable comme New Random (). Vous pouvez ensuite accéder à des nombres aléatoires en utilisant la fonction .Next de la classe (c’est-à-dire Dim RandomNumbers As New Random () puis RandomNumbers.Next (0,52)). Vous remarquerez les arguments de la fonction Next. J’ai choisi ces derniers pour fournir des entiers de 0 à 51. Votre borne inférieure est le premier nombre et comprend ce nombre. Si votre borne inférieure est zéro, elle peut être omise. Votre limite supérieure est un de moins que le deuxième nombre car il n’est pas inclus. Puisque j’utilise un tableau d’entiers pour représenter mon deck et que les indices du tableau commencent à zéro, je veux des nombres de 0 à 51.

Maintenant que nous avons compris le générateur de nombres aléatoires, il est temps de comprendre comment l’implémenter dans notre processus de mélange. J’ai inclus le code que j’ai utilisé ci-dessous. J’inclus cet algorithme dans une fonction. Vous verrez une référence à une carte réseau (index). J’ai défini cette variable en dehors de la fonction afin de l’utiliser dans tout le programme. Il a été défini comme suit: Dim cartes (51) comme Entier.

Exemple de code:

Dim shuffleCount As Integer

Dim currentCard As Integer

Dim RandomNumbers As New Random ()

Dim MyRandomNumber As Integer

Pour compteur = 0 à 51

cartes (compteur) = compteur

Prochain

Pour shuffleCount = 1 à 10000

MyRandomNumber = RandomNumbers.Next (52)

currentCard = cartes (0)

Pour compteur = 1 à MyRandomNumber

cartes (compteur – 1) = cartes (compteur)

Prochain

cards (MyRandomNumber) = currentCard

Prochain

Ce code n’est en fait pas très sophistiqué. Je charge d’abord les cartes dans le jeu représenté par le numéro de carte dans la bibliothèque cards.dll. J’ai choisi de conserver le numéro de carte tel qu’il est dans le tableau de cartes, puis de le séparer en face et en convenir au besoin. Ensuite, j’arrive à la tâche de mélanger. En substance, je prends simplement la carte du bas du jeu et je la place à un endroit aléatoire du jeu. Je le fais dix mille fois au total. Le nombre de fois est arbitraire. Cependant, il devrait y avoir suffisamment de temps pour mélanger complètement le jeu et pas autant que l’utilisateur vous attend.

C’est tout ce qu’il y a à faire. J’espère que cet article vous aidera à bien démarrer la programmation de votre propre jeu de cartes VB.Net.