Jeu : Variables aléatoires ?

KMIKZ Messages postés 21 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 26 avril 2008 - 11 déc. 2004 à 15:59
KMIKZ Messages postés 21 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 26 avril 2008 - 4 janv. 2005 à 10:06
Bonjour a tous,

je viens de débutter avec VB et je voudrais commencer par faire ceci :

" j'ai 4 shape et je voudrais un nombre aléatoire qui me sélectionne un shape au hasard parmis les 4 et lorsque je clic sur le bon je sois redirigé vers une autre fenêtre "

Ca c'est la théorie mais en pratique je ne vois pas comment faire.
Est-ce que quelqu'un pourrait m'aiguiller ou me donner un aperçu du code s'il vous plait.

Merci d'avance.

Bon week-end à tous.

KMIKZ.

7 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
11 déc. 2004 à 16:40
Salut KMIKZ
- Pour associer ce chiffre à un de tes Shapes :
Créé un premier Shape et tu mets la propriété Index à 0, puis tu le recopies 3 fois pour en avoir 4 au total. Ils porteront les Index de 0 à 3.
Pour les utiliser : Shape(N°)

- Hasard : Seuls des chiffres peuvent être générés au hasard avec : Randomize dans ton Form_Load (une seule fois), puis Rnd() qui va générer un chiffre entre 0 et 1 (avec décimales).
Pour fabriquer un chiffre entre 0 et 3 (correspondant aux index de tes Shapes), il suffit de faire :
Dans un module, tu mets :
Public Chiffre As Integer
Au moment où tu veux générer ton nombre aléatoire, dans un Command1_Click par exemple), tu mets :
Chiffre = Int(Rnd() * 3)
Le 3 pour multiplier le chiffre du Rnd (entre 0 et 1) en un chiffre entre 0 et 3.
Le Int() est là pour tranformer le résultat en entier (virer les décimales)

- Ensuite, quand tu cliqueras sur un des Shapes, l'évènement Shape_Click se produira. Il te fournira le n° d'Index du Shape sur lequel tu as cliqué. Il te suffit de le comparer au chiffre aléatoire généré :
If Index = Chiffre Then AutreFenêtre.Show

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_clafouti Messages postés 78 Date d'inscription samedi 16 mars 2002 Statut Membre Dernière intervention 7 septembre 2006
12 déc. 2004 à 06:48
Pour générer un nombre entre 0 et 3, il faut faire Int(Rnd() * 4)

Auteur de PrestoNotes, LE célèbre logiciel freeware de post-its développé en VB.
Découvrez-le sur http://users.chello.be/cr41007/index.html
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
12 déc. 2004 à 13:09
Salut,

Désolé jack, mais clafouti a raison pour le rnd.

Cordialement, CanisLupus
0
KMIKZ Messages postés 21 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 26 avril 2008
21 déc. 2004 à 08:46
Merci à tous pour ces conseils

J'ai essayé de les mettre en oeuvre mais je n'y suis pas arrivé c'est vous dire si je débute VB !

J'ai un shape1 ( fois 4 avec des index de 0 à 3)

J'ai déclaré : Public Chiffre As Integer

J'ai un Command2_Click dans lequel j'ai mis : Chiffre = Int(Rnd() * 3)

J'ai mis If Index = chiffre Then Form2.Show dans le Form1_load

Je suppose que le problème vient de mon clic sur un des shape mais lorsque je double clic sur un shape l'editeur ne me permet pas de créer un shape1_clic !

Comme je ne suis pas expérimenté en VB je ne vois pas mes erreurs qui peuvent être évidentes.

Bonnes Vacances

KMIKZ
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
21 déc. 2004 à 20:25
Salut,

1 - Il n'y a pas d'évènement Click avec un Shape. Je pense que pour ce que j'ai compris tu veux faire, des Label feraient mieux l'affaire.

2 - "J'ai mis If Index = chiffre Then Form2.Show dans le Form1_load" ça ne peux pas fonctionner. met plutôt ça dans le Label1_Click(Index As Integer) de cette façon :

Private Sub Label1_Click(Index As Integer)
If Index = chiffre Then Form2.Show
End Sub

Ainsi, tu cliques sur command2 pour générer le chiffre puis sur un label, si chiffre correspond à l'index du label ta form2 s'affichera.

Bonne prog

Cordialement, CanisLupus
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
21 déc. 2004 à 20:35
Heu, j'insiste, pour avoir un nombre aléatoire de 0 à 3, c'est bien Chiffre = Int(Rnd() * 4) qu'il faut coder et pas Chiffre = Int(Rnd() * 3), sinon, tu n'auras jamais la valeur 3.

Petit moyen technique : pour obtenir des valeurs aléatoires de x à y, il faut coder Int(Rnd() * (y-x+1)) + x

Cordialement, CanisLupus
0
KMIKZ Messages postés 21 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 26 avril 2008
4 janv. 2005 à 10:06
Merci à tous pour ces informations (notamment canis lupus)

Je rentre à peine de vacances je n'ai donc pas pu m'y intéresser

Il faudra que j'y consacre un peu de temps et lorsque se sera fait je me

permettrais à nouveau de demander des conseils sur le forum.

En attendant je vous souhaite une bonne année 2005

KMIKZ
0