Tirage aléatoire de carte [Résolu]

Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Dernière intervention
4 janvier 2014
-
Bonjour,
Je suis en train de créer un formulaire et j'ai besoin de votre aide. Je souhaite tirer de façon aléatoire des cartes, à chaque tirage il faut éliminer la puis les cartes qui ont déjà été tiré. Je ne sais pas ce qu'il faut que je rajoute à ma formule pour carte2 et carte3. Est ce que quelqun peux m'aider?

Dim carte1 as integer
Dim carte2 as integer
Dim carte3 as integer

Randomize
carte1 = Int(52 * Rnd) + 1

Randomize
carte2 = Int(52 * Rnd) + 1

Randomize
carte3 = Int(52 * Rnd) + 1

J'ai un autre soucis quand je suis en mode développeur dans l'onglet visual basic le formulaire ne s'affiche pas. Du coup je ne peux plus faire de modification. Je ne vois pas ou je peux afficher le formulaire.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
1
Merci
Ou en es-tu ?
Pour continuer au rang de la réflexion.
Que se passe-t-il dans les faits avec un jeu de cartes que l'on veut distribuer aléatoirement ? ===>> on "touille" le paquet de cartes, puis on distribue les cartes dans l'ordre "touillé" du paquet, en commençant par celle du dessus, puis la suivante, etc ... ===>> donc, de cette manière, on y puise la carte de rang 1, puis celle de rang 2, puis celle de rang 3 et ainsi de suite jusqu'à la dernière.
Comment faire la même chose en informatique ? ===>>>
1) On met toutes les cartes dans un tableau dynamique
2) on "touille" aléatoirement ce tableau dynamique
3) on y puise les cartes tour à tour en commençant par la première, puis la seconde, etc ...

Comment "touiller" un tableau dynamique, alors ? ===>>>
Si tu avais utilisé avec soin le moteur de recherche de ce forum, tu serais "tombé" sur plusieurs discussions auxquelles j'ai participé et la solution que j'y ai donnée !
En voilà une (parmi d'autres) de ces discussions :

http://codes-sources.commentcamarche.net/forum/affich-1621301-debutant-vba-aide-pour-tirage-aleatoire

Le code nécessaire est dans mon message du 5 janv. 2013 à 20:04

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend

Merci ucfoutu 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
14319
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
0
Merci
Bonsoir,

Pour éviter le rejeu des cartes, regardes la classe Collection, elle te sera utile, je pense.

Pour le formulaire, je ne vois pas ce que ça peut être, pas assez d'info.
Commenter la réponse de NHenry
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Dernière intervention
4 janvier 2014
0
Merci
J'ai trouvé cet article là : http://codes-sources.commentcamarche.net/faq/370-probabilites mais cela ne m'aide pas beaucoup, il ne parle de tirage avec un nombre exclu. Il y a peut être un autre article qui en parle mais je n'ai pas trouvé.

Pour mon problème de formulaire. Quand j'ouvre Virtual Basic Microsoft mon formulaire qui a déjà été crée devrait être visible afin que je puisse le modifié. Cependant il est invisible, la fenêtre de l'Userform1 n'est pas là. Je ne vois pas ou je peux faire apparaître cette fenêtre.
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
-
Ah ! Et elle est où, cette "boucle loop while" ?
Eliot7500
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Dernière intervention
4 janvier 2014
-
Private Sub UserForm_Initialize()

Randomize
carte1 = Int(10 * Rnd) + 1
Do
Randomize
carte2 = Int(10 * Rnd) + 1
Loop While carte2 = carte1
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
-
Ah ! Tu ne tires que deux cartes ?
Que vas-tu (comptes-tu) faire pour les tirages suivants ?
Eliot7500
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Dernière intervention
4 janvier 2014
-
Je tire d'autres cartes mais je ne voulais pas même tous le script .Pour les tirages suivant, j'écris la même chose sauf que je rajoute une condition en plus apres loop while.

Par contre je ne sais pas comment réinitialiser les variables cartes à la fin du jeu dans le but de relancer le tirage des cartes au début du jeu. Une idée?
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
-
Une idée ?
Il me semble que tant NHenry que moi-même t'en avons données (et pas une, mais plusieurs).
Mais tu t'obstines sur une "lancée" qui, dans le meilleurs des cas, ne fera qu'alourdir et ralentir. (et ce : de plus en plus avec l'avancement de tes tirages, compte tenu d'une évidence majeure : plus tu aurais déjà tiré de cartes et moins ta boucle aura de "chances" de tomber sur une carte non déjà tirée !)
Mais c'est dans ce cas ta seule affaire (ton obstination et ta méthode).
Voilà voilà ...
Quant à
"Par contre je ne sais pas comment réinitialiser les variables cartes à la fin du jeu dans le but de relancer le tirage des cartes au début du jeu"
===>> nous ne savons même pas (tu n'en a rien dit), dans "quoi" tu as mis ces cartes au départ !
Commenter la réponse de Eliot7500
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Enfin quoi : réfléchis un peu :
Lorsque tu tires une carte au hasard dans un jeu, elle n'est plus dans le paquet et ne risque donc pas d'être tirée à nouveau au prochain tirage, hein ...
Idem en informatique : que ce soit avec une collection, une listbox ou une plage de cellules : tu retires (de la collection, de la listbox ou de la plage de cellules) chaque carte déjà tirée et le prochain tirage se fait donc sur les cartes restantes (dans la collection, dans la listbox ou dans la plage de cellules).
Voilà !
Et toute autre "approche" serait très lourde, sinon insensée.
Commenter la réponse de ucfoutu
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Dernière intervention
4 janvier 2014
0
Merci
Je m'en suis sorti. Par contre je n'arrive pas à afficher une valeure numérique dans une textbox à l'ouverture du formulaire. J'ai essayé d'insérer lorsque je clicke sur mon bouton pour ouvrir le forumulaire. Mais cela ne fonctionne pas.
Sub Bouton3_Clic()
UserForm1.Show
Dim balance As Integer
balance=1000
TextBox2.Value = balance
End Sub
Commenter la réponse de Eliot7500
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Ta nouvelle question n'a rien à voir avec le sujet (Tirage aléatoire de carte) de la présente discussion !
Si la difficulté objet de CETTE discussion est résolue, sujet à clore (un clic sur le tag "Résolu" au niveau de ton premier message).
Si tu as une AUTRE question ===>>> AUTRE discussion (discipline indispensable).
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.