[VB6 -> VBA]Petit détail sur la fonction pile/face

ArthueBesne - 16 mai 2013 à 20:12
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 18 mai 2013 à 17:43
Bonsoir tout le monde,
Je tiens à préciser que je débute en programmation VBA ! J'ai créé une fonction pile/face qui fonctionne.
Sauf que je veux créer un tournoi de pile/face.
C'est à dire que je veux que sur 4 joueurs, celui qui est en A1 affronte celui qui est en A2 et que celui en A3 affronte le joueur en A4. Et que les prénoms des deux gagnants se placent dans les cellules B1 et B2.
Malgré plusieurs tentatives, mon programme ne marche pas..

Ma fonctione est la suivante :
Function Pileface() As Integer
Dim x As Double
x = Rnd()
Randomize
If x < 1 / 2 Then
Pileface = 0
Else
Pileface = 1
End If
End Function

Sub tirage()
If Pileface() = 1 Then
MsgBox ("face")
Else
MsgBox ("pile")
End If
End Sub

Cordialement, Arthur

26 réponses

Utilisateur anonyme
16 mai 2013 à 20:33
Salut,

Utilise l'aide VBA sur la fonction Randomize.
0
ArthueBesne
16 mai 2013 à 20:47
Bonsoir,

J'ai déjà fait pas mal de recherches sur l'aide, et je ne trouve toujours pas ..

Arthur
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mai 2013 à 22:02
Bonjour,
On commence déjà par apprendre à appeler un chat un chat et un chien un chien. Juste pour apprendre à être au moins aussi rigoureux que son langage de développement.
Il n'existe aucun fonction "pile/face"
Ou alors, je vais, moi, te parler de Zotch ou Farde !
On attend donc que tu prennes la peine d'appeler les choses par leur nom. On verra ensuite, hein ...



________________________
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'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
16 mai 2013 à 22:36
Salut ucfoutu,

Je te trouve dur sur ce coup. Le code fourni, bien que monochrome, est suffisant pour comprendre où le demandeur veut en venir.
Il veut 'tirer' 0 ou 1. Mais je ne suis pas VBAtiste.
Amitiés.
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mai 2013 à 23:45
Je sais que je suis "dur", banana32. Mais le développement commence par la rigueur.
Et de surcroît : la réponse que tu lui a faite était parfaitement fondée. En ouvrant son aide VBA sur le mot Randomize, il y trouverait un exemple on ne peut plus clair (rubrique "Randomize, instruction, exemple"), où il n'a qu'à remplacer 6 par 1 et enlever le "+1" !
Il y verrait également que l'instruction Randomize doit précéder l'utilisation de la fonction Rnd.
Bien. Regarde maintenant sa réponse. Ou il n'a pas ouvert son aide VBA sur le mot Randomize, ou il l'a fait et n'a pas lu, ou il a lu et n'a rien compris.
Et s'il en est au 3ème cas (avoir lu mais ne pas avoir compris) : désolé, mais ne lui resterait plus qu'à copier/coller ce qu'on écrirait pour lui, sans qu'il comprenne pour autant mieux ! (pas ma tasse de thé).


________________________
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'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mai 2013 à 07:00
Corriger :
...où il n'a qu'à remplacer 6 par 1 2...


________________________
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'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mai 2013 à 07:13
Ah oui, banana32, j'allais oublier
si tu t'es demandé le pourquoi de ce que j'ai écrit plus haut, à savoir :
Ou alors, je vais, moi, te parler de Zotch ou Farde !

=>>
Tapez le texte de l'url ici.
=>> édition ===>>> rechercher ====>> "zotch" ===>> lis ===>> mais tu n'en sauras pas plus sur ce jeu de ma toute jeunesse et qui ne se pratiquait, sous ce nom-là, que dans cette ville-là.
Il se trouve que le code montré par ArthueBesne n'a pas fait "remonter" cette expression au hasard du tout.

________________________
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'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mai 2013 à 10:06
Allez ! la voilà sa fonction :
Private Function pile_face() As String
  Randomize
  pile_face = "pile"
  If Int((2 * Rnd)) 1 Then pile_face "face"
End Function


Appelable par
msgbox pile_face()
________________________
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'interviendrai que si nécessité de la compléter.
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
17 mai 2013 à 12:14
Bonjour ucfoutu,

Je croyais qu'il suffisait d'appeler Randomize sans argument une seule fois en début de programme, sinon utiliser Randomize Timer avant l'appel de Rnd.
Je passe sur Randomise (-1) ou Randomize (x)...

Cheyenne
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mai 2013 à 13:20
Bonjour, Cheyenne
Oui. Mais comment lui faire un exemple sans lui compliquer encore les choses (il faudrait lancer Randomize à l'ouverture) ?
J'ai donc fait simple.
A vrai dire, s'agissant d'un jeu de "pile ou face", donc de tirages successifs après paris pouvant changer entre chaque tirage des joueurs, je n'aurais même pas utilisé Randomize et Rnd. Eh oui ! Tout en obtenant de meilleurs aléas.


________________________
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'interviendrai que si nécessité de la compléter.
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
17 mai 2013 à 14:25
> ucfoutu,

Ok, je prends acte de la simplicité employée afin de lui facilité la compréhension.
même pas utilisé Randomize et Rnd. Eh oui ! Tout en obtenant de meilleurs aléas
Comment obtenir un aléa sans utiliser Rnd ???

Cheyenne
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mai 2013 à 14:57
Comment obtenir un aléa sans utiliser Rnd ???

Aucun problème de 0 à 100 et dans ce cas :
donc de [u]tirages successifs après paris pouvant changer entre chaque tirage des joueurs/u
Ce que je viens de souligner devrait te mettre sur la piste de ce truc-là.
je montrerai cela lorsque cette discussion aura été terminée par le demandeur.

________________________
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'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
17 mai 2013 à 15:02
Bonjour à tous,

Un championnat de pile ou face !!! je m'inscris de suite, je suis imbattable

ArthueBesne:
Il y a un petit détail qui me saute aux yeux dans ton code:
If x < 1 / 2 Then 


Tu as trouvé ça tout seul?
Pourquoi ne pas faire:
If x < (((Sqr(789) / 8) - 4.1) + 0.200286786673315 + 0.88857023702965) Then




Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
17 mai 2013 à 15:30
Bonjour acive,

Avec ta formule, dont le résultat est 0.5, ce n'est ni face ni pile, la pièce est tombée sur la tranche.
C'est terrible cela, on ne tiens jamais compte de cette éventualité

Cheyenne
0
Utilisateur anonyme
17 mai 2013 à 15:34
Bonjour Cheyenne,

Oui tiens... il n'a pas pensé à un résultat neutre... ça peut arriver !

J'ai mis 0.5 parce qu'il l'avait fait aussi (1/2)




Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
17 mai 2013 à 15:41
Et dance cas le Rnd doit se faire entre 1 et 3 et non deux...

ArthueBesne, tiens CE GIF ANIME à insérer dans ta feuille

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
17 mai 2013 à 15:43
Ouh la... je ne parle pas de la dance de la pièce... (je viens de me relire) pardon...



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mai 2013 à 16:38
Ouais ouais ...
C'est bien pour éviter les aléas (pièce sur la tranche ... voire sur la tronche ...) que l'on préférait chez moi le fameux jeu du Zotch ou farde dont je parlais plus haut. Terrible, ce jeu-là :
- pas de tirage aléatoire
- une grande place faite à la psychologie et à l'observation de l'adversaire
Allez ! je vous l'explique :
- l'un des joueurs choisit zotch ou choisit farde. L'autre prend ce qui reste (donc farde ou zotch)
- les deux joueurs mettent une main derrière le dos et ouvrent 0 ou plusieurs doigt(s) de cette main cachée
- au signal : ils montrent ensemble (en la plaçant devant eux) la main qu'ils avaient cachée
- on compte alors le nombre de doigts ouverts : si 0 ou pair ===>> celui qui avait misé zotch a gagné. Si impair ===>> a gagné celui qui avait misé farde.
Je peux vous garantir qu'à ce jeu-là, chacun étudiait chacune des expressions du visage ou des yeux de l'autre et s'efforcait d'être lui-même impassible (un peu comme au poker)
________________________
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'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
17 mai 2013 à 16:54
@ucfoutu
J'ai lu sur ton lien qu'on jouait déjà aux osselets ou aux billes de ton temps. J'adorais ça quand j'étais môme. Maintenant, ils s'amusent, seuls, avec leur portable.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mai 2013 à 16:57
Eh .. oui, banana32.... oui ...


________________________
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'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous