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

Signaler
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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


Salut,

Utilise l'aide VBA sur la fonction Randomize.

Bonsoir,

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

Arthur
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.

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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
> 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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.

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
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
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

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

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

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.

@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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.