Microsoft 365 créer des séquences aléatoires avec possibilités de choix, perdu et nouveau dans excel

ricky1977

XLDnaute Occasionnel
Bonsoir,

Afin de travailler mon jeu au texas holdem poker, plus particulièrement mon jeu PREFLOP ( avant que les cartes communes ne soient distribuées ) de créer des séquences aléatoires afin que ce soit plus efficace .

je souhaite travailler par exemple mon jeu en position MP vs UTG vs3x ( middle position versus un open de UTG de x3 )
pour cela j'ai 5 choix
call
3bet or call
3bet or fold
3bet
fold

j'ai des mains établi précise que je souhaite donc apprendre qui sont les suivantes

call : 77, 88, 99, TT, 98s, T9s, JTs
3bet or call : JJ, ATs, AJs, AQs, AKs ce
3bet or fold : A2s, A3s, A4s, A5s
3bet : AQo, AKo, QQ, KK, AA
fold : toutes les autres combinaisons de 2 cartes restantes


ce que j'aimerai est ceci
pouvoir distribuer 2 cartes aléatoirement qui constitue les 52 cartes du jeu
par exemple : A8o avec possibilités de 5 choix
le but du jeu est de deviner dans quelle catégorie A8 se trouve , si je click sur le bon , une nouvelle combinaison de 2 cartes est distribuée, si je me trompe, j'ai encore 4 choix.

je n'ai pas besoin que cela soit super design non plus, même pas besoin d'avoir de vraies cartes, seulement leurs valeurs suffisent

pour matérialiser encore plus

1- distribution d'une combinaison de 2 cartes aléatoires ( 169 combinaisons )
2- possibilité de choix jusqu’à 5
3- bon choix ou mauvais - nouvelle distribution aléatoire avec jusqu’à 5 nouveaux choix


je n'ai pas beaucoup, voir pratiquement pas de connaissance excel, c'est le bon moyen de m'y mettre, j'aurai besoin d'un coup de pouce afin de savoir comment je pourrais faire pour établir ce petit programme, vers quel types de matériel me tourner afin de gagner du temps .
C'est mon premier poste ici, et je vous remercie d'avance de votre aide

amicalement
Richard
 
Dernière édition:

ricky1977

XLDnaute Occasionnel
Je me suis peut être mal exprimé car c'est la première fois que je présente les codes couleurs

C'était dans l'idée de faire le tableau que vous m'avez suggéré et dont j'adhère totalement, mais comme j'ai énormément de tableau ( si vous regardez le feuillet ranges du nouveau xls, cela dépasse les 50)


J'ai voulu faire un copié/collé en utilisant la touche CTRL afin de sélectionner toutes les mains en bleu, mais Excel refuse, ce qui fait que je dois les sélectionner soit par colonne ou par ligne, et même là il refuse par exemple que je sélectionne de AA à AT et A5s-A2s,
Je me demandais si il n'y aurait pas une macro de copié collé, par exemple, je click sur toutes les mains que je veux mettre dans le tableau suggéré ?

C'était en vue de gagner du temps pour faire tous les tableaux
 

Dranreb

XLDnaute Barbatruc
Cette macro remplacerait par le code de sa couleur la valeur de chaque cellule de la plage sélectionnée :
VB:
Sub CodesCouleurs()
   Dim Cel As Range
   For Each Cel In Selection
      Cel.Value = Cel.Interior.Color
      Next Cel
   End Sub
 

ricky1977

XLDnaute Occasionnel
ca donne ça
Capture d’écran (513).png
c'est bien ça ?
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Quelques fonctions de service spécifiques au sujet, qui pourraient servir ultérieurement, à mettre dans un module standard.
VB:
Option Explicit
Private Const CarValCartes As String = "AKQJT98765432"
Function CodeMainPos(ByVal P As Long) As String
   Dim L As Long, C As Long
   PositionMain(L, C) = P
   CodeMainPos = CodeMainLC(L, C)
   End Function
Function CodeMainLC(ByVal L As Long, ByVal C As Long) As String
   Select Case Sgn(L - C)
      Case 1:     CodeMainLC = Mid$(CarValCartes, C, 1) & Mid$(CarValCartes, L, 1) & "o"
      Case -1:    CodeMainLC = Mid$(CarValCartes, L, 1) & Mid$(CarValCartes, C, 1) & "s"
      Case Else:  CodeMainLC = String(2, Mid$(CarValCartes, L, 1)): End Select
   End Function
Function CodeMainCartes(ByVal C1 As Long, ByVal C2 As Long) As String
   Dim L As Long, C As Long
   If C2 > C1 Then C1 = C1 Xor C2: C2 = C2 Xor C1: C1 = C1 Xor C2
   If C1 Mod 4 = C2 Mod 4 Then
      L = (C2 - 1) \ 4 + 1: C = (C1 - 1) \ 4 + 1
   Else
      L = (C1 - 1) \ 4 + 1: C = (C2 - 1) \ 4 + 1
      End If
   CodeMainCartes = CodeMainLC(L, C)
   End Function
Function Carte(ByVal N As Long) As String
   Carte = Mid$(CarValCartes, (N - 1) \ 4 + 1, 1) & ChrW$(&H2660 + (N - 1) Mod 4)
   End Function
Private Property Get PositionMain(L As Long, C As Long) As Long
   PositionMain = L * 13 + C - 12
   End Property
Private Property Let PositionMain(L As Long, C As Long, ByVal P As Long)
   L = (P - 1) \ 13 + 1: C = (P - 1) Mod 13 + 1
   End Property
Pourrait permettre par exemple de poser la question pour 26 paires au hasard formées de toutes les cartes extraites une seule fois chacune du jeu complet.
C'est presque un autre exercice: repérer toutes les rares paires intéressantes !
 
Dernière édition:

ricky1977

XLDnaute Occasionnel
Je viens de m'apercevoir de quelque chose qui change surement certains calculs

par exemple iciCapture d’écran (515).png , c'est l'action que je dois effectuer quand je suis en premier de parole

c'est OK pour une grande majorité de cas ( c'est facile je peux avoir n'importe quelle des 169 combinaisons en mains, je dois selon le tableau relancer les bleu ( RFI ) et suivre uniquement (OL) en jaune.

En revanche ici Capture d’écran (519).png c'est l'action que je dois faire quand j'ai déjà effectué la première action, c'est dire qu'elle n'est en relation qu'avec la partie Bleu ( RFI , premier tableau) , dans cette configuration, ne serait nécessaire qu'un tirage aléatoire de la partie bleu uniquement.

et dans celui-là Capture d’écran (521).png, il est en relation qu'avec l'action effectué ici Capture d’écran (523).png mais uniquement 3Bet(rouge) et 3Bet or Call(violet)

j'ai changé tous les tableaux avec les réponses, mais il va me falloir un peu de temps pour réorganiser qui va avec quoi

j'adore votre idée du poste précédent.
 

Dranreb

XLDnaute Barbatruc
Je n'y comprends pas grand chose je dois dire.
On va finir par créer un classeur qui sait gérer une partie et même jouer, non ?
J'avais oublié de valider un message que j'avais commencé avec un classeur joint qui testais un peu les fonctions citées précédemment.
 

Pièces jointes

  • Ricky1977.xlsm
    20.3 KB · Affichages: 16

ricky1977

XLDnaute Occasionnel
j'ai regardé votre fichier et je vous remercie :) (sympa l'idée des cartes)
( est ce que c'est truqué ? :)est-ce une vraie question ? je joue en ligne, possible que l'on retrouve parfois des bots, mais les rooms de poker généralement font assez bien leur job et font des vérifications. Il y a toujours eu des idées comme quoi le logiciel qui génère les cartes seraient plus ou moins truqué, mais dans la room ou je suis, est sous contrôle huissier. Comme c'est un jeu de probabilité, parfois il est possible de perdre sur une longue période donc l'idée est de pouvoir générer un profit sur le long terme et pour cela il faut pouvoir jouer de la façon la plus juste peut importe le résultat du coup, d'ou l'importance d'établir une stratégie et celle-ci commence par le jeu dit préflop ( quand les 2 cartes fermés sont distribuées a chaque joueur ), ce sont toutes les actions avant la distribution du FLOP(, les 3 cartes ouvertes communes avec le ou les joueurs qui seront rentrés dans le coup.)

je vais essayer d'expliquer ( j'avoue que c'est pas évident également )

Pour le vocabulaire
RFI ( raise first In) = relancer en premier de parole ( code bleu foncé )
OL ( open limp ) = suivre sans relancer ( jaune )
3Bet = quand un joueur a RFI, c'est l'action de surenchérir la mise du relanceur initial(rouge )
4Bet = c'est l'action de surenchérir de nouveau le joueur qui a 3Bet (rouge aussi )
SQZ = c'est techniquement un 3bet, mais c'est l'action de surenchérir la mise quand un joueur a RFI et qu'un autre joueur ou plusieurs ont décidé de juste Call ( suivre) derrière
Call = suivre ( bleu clair)
Fold = passer (blanc)

il y a deux séquences :

soit c'est moi qui relance en premier, et l'autre joueur a la possibilité de me relancer et j'ai aussi le choix de le relancer de nouveau ou de suivre ou de passer
ou alors l'autre joueur a relancé et a se moment là c'est moi qui ait le choix de relancer de nouveau, suivre ou passer

moi : RFI
autre joueurs : 3bet
moi : 4Bet, Call ou Fold
dans cette séquence comme j'ai déjà relancé, mon choix ne peut se situer que sur les mains en RFI, ( ce ne serait pas logique d'avoir dans la séquence aléatoire des mains que j'aurai passé )

ou alors

autre joueurs : RFI
moi : 3Bet
autre joueurs : 4 bet
moi ?
ici mon choix ne peut se situer que sur les mains que j'ai 3Bet ( ce ne serait pas logique d'avoir dans la séquence aléatoire des mains que je n'aurai pas 3bet)

c'est pour cela que certaines séquences aléatoires en utilisant toutes les mains collent parfaitement
quand c'est moi qui RFI ou quand c'est l'autre qui a RFI .
Mais ça ne fonctionne plus quand RFI se fait relancer et quand l'autre joueur relance RFI
 

Dranreb

XLDnaute Barbatruc
Bonjour;
Non ce n'est pas une question. La fonction est simplement pensée pour sortir ça si jamais on lui demandais de qualifier une main de 2 cartes rigoureusement identiques, ce qui ne devrait jamais arriver, n'est ce pas.
Pour le reste de vos explications je n'y comprends toujours rien.
 

Dranreb

XLDnaute Barbatruc
La seule chose que je crois vaguement y avoir discerné c'est que pour certains types d'exercices matérialisés par vos différents tableaux, seules certaines mains sont pertinentes pour une décision. Alors laissons y vides les cellules de bonnes réponses des mains qui n'ont pas de sens. Ce sera le signe qu'il ne faudra pas les proposer.
Mais je demande alors à ce que le classeur soit équipé du module de classe ListeAléat. Bien plus puissant qu'une simple table de numéros en désordre, ce type d'objet, tout aussi capable que celle ci de produire des numéros uniques en ordre aléatoire, est de plus équipé d'une méthode Supprimer permettant d'en retirer certains auparavant.
 
Dernière édition:

ricky1977

XLDnaute Occasionnel
C'est plus évident si on a des notions de poker , comme de mon côté VBA serait plus évident si j'en avais des notions.

Il y a pourtant bien un tenant, un aboutissant et la logique qui relie les deux.
Je n'ai pas le même "langage" que vous et en ce sens tout paraît confus.

Ici en lien tout ce que j'ai a apprendre et je souhaitais rendre ceci plus dynamique en en faisant un QCM , c'est tout finalement

Un QCM classique se présente ainsi

un thème-une question-plusieurs choix-une réponse possible

thème : Géographie
Question : quelle est la capitale de la France ?
Choix : Strasbourg-Paris-Lyon
réponse : Paris

Sauf que dans mon cas, cela diffère et se présente ainsi
thème : CO
Question : A8o
Choix : RFI-Fold
réponse : Fold

ou alors

thème: CO
Question : AA
Choix :RFI-Fold
réponse : RFI
maintenant si vous cliquez sur le fichier excel CO vous avez en Bleu tout ce que je RFI et en blanc tout ce que je Fold Capture d’écran (526).png ,
*****la Question : peut être n'importe quelle combinaison de mains parmi les 169 du tableau et la réponse RFI ( combinaison en bleu )
Fold ( combinaison en blanc )

******il n'est pas nécessaire d'y ajouter toutes les combinaisons, seulement un échantillon suffit, et votre code VBA qui permettait de lancer une séquence de 54 cartes de façon aléatoire était parfait, ainsi que de remplacer les cellules bleu par "RAISE" et les cellules blanche par "Fold" afin de distinguer la bonne réponse et de la décaler dans le questionnaire ou je devais deviner mentalement la réponse.

********************************************************************************************************

ça c'est une chose, maintenant il y a plusieurs sous-thème
thème : CO
sous-thème : CO vs BTN vs 3Bet 9BB
Question : AA
Choix : Call-4Bet or Call-4Bet
réponse : 4Bet

Maintenant si vous cliquer sur CO puis BTN et ensuite dans vs3bet click sur 9BB ( par défaut ), la réponse est parmi les mains qui sont en bleu(RAISE) uniquement, les cellules blanc (Fold) étant maintenant obsolète.
******Donc ce serait d'utiliser le même code VBA aléatoire ( peut-être que 20 au lieu de 54) uniquement parmis les cellules Bleu ( ou RAISE ) et de la même façon les décaler afin que je puisse deviner mentalement la réponse

********************************************************************************************************
il y a dans certain cas, un sous-sous-thème

thème : CO
sous-thème : CO vs MP vs 3x
Question : JTs
Choix : Call -3Bet or Call- 3Bet
réponse : Call

ou alors

thème : CO
sous-thème : CO vs MP vs 3x
Question : K9s
Choix : Call -3Bet or Call- 3Bet
réponse : Fold

dans ces 2 cas, c'est exactement la même chose que pour le thème CO sans sous catégorie et peut donc être tiré de façon aléatoire sur les 169 combinaisons possible sur un échantillon de 54 .

mais en revanche si
thème : CO
sous-thème : CO vs MP vs 3x
Question : AA
Choix : Call -3Bet or Call-3Bet
réponse : 3 Bet


ou alors

thème : CO
sous-thème : CO vs MP vs 3x
Question : AKs
Choix : Call-3Bet or Call-3Bet
réponse : 3Bet or Call

si la réponse correspond aux cellule rouge (3 bet) ou violet ( 3 bet or Call )

dans ce cas là, il y a une sous-sous catégorie
thème : CO
sous-sous-thème : CO VS mp Vs 4Bet ( par défaut 15-20BB)
Question : AJs
Choix : Call-Call or Fold-shove-Fold
réponse : Call

****Ici le code VBA ne concernce que les cellules rouge (3bet) et violet (3bet or call) du tableau CO vs MP vs 3x, il n'est donc nécessaire que de tirer aléatoirement uniquement ses cellules

*********************************************************************************************************
 

Pièces jointes

  • training.xlsm
    872.6 KB · Affichages: 4
Dernière édition: