Machine à sous
Bonjour,
Pour faire suite aux conversations avec Moul, je suis en cours de développement d'une slot machine à 5 rouleaux avec 99 lignes de gains possibles !
Je me suis arrêté à 99 lignes car cela représente le nombre de possibilité de ligne entre les images des chaque rouleau avec un contact minimum en diagonale, ce qui veut dire qu'une combinaison partant de l'image en haut à gauche de la machine ne peut que passer par l'image en haut de la roue à sa droite ou par celle du milieu mais ne peut "sauter" à celle du bas.
Le test des gains avec 18 symboles et les combinaisons 5/5, 4+1 étoile, 4/5 en continue, 3 + 2 étoiles, 2 + 3 étoiles et 3 en continue ne prend que 0,04 seconde sur ma machine !
Je suis plutôt content du résultat, et je dois maintenant réfléchir aux combinaisons particulières, voir les probabilités de sortie pour ajuster les gains au coût de jeu des différentes lignes...
Merci une fois de plus à Moul pour "cette relance"!
@ bientôt
LouReeD
Bonjour LouReed,
Eh bien dit donc à ce que je vois, je vous est vraiment motivé !
Je n'ai malheureusement pas eu le temps de regarder cette nouvelle machine
Mais 99 lignes de gains, ça commence a faire !
Mais n'est on pas certain de gagner a chaque tour ? Il va sûrement falloir des tableaux pour les roues immenses non ?
En tout cas bonne continuation
Bonsoir Moul !
De quel tableaux parlez vous ?
En fait tout se passe en tableau VBA avec des boucles et des variables qui passent à True ou restent à False si la ligne est comptabilisée comme gagnante ou pas.
Donc un tableau des images affichées, un tableau des différentes combinaison avec comme valeur le numéro des images qui composent cette combinaison pour chaque roue : exemple la ligne horizontale de gain se traduit par :
roue 1, image 3 (c'est la troisième image visible de la roue 1), roue 2, image 3, roue 3 image 3 etc...
Ensuite un tableau de 99 lignes "construit" en fonction des deux premiers :
LG(1) = nom des images correspondant à la combinaison 1
LG(1) = tableau des image(roue 1)(image(roue1,combinaison 1) etc...
Un tableau de ligne déjà gagnée ou pas (vrai ou faut)
Après on boucle sur les différents symboles et sur le tableau LG() avec un test de la ligne déjà gagnante
For i = 0 to 18 ' boucle des symboles
For j=0 to 98 ' boucle du tableau des 99 combinaisons construites grâce au tableau de combinaison et d'image
Si ligne gagnante = false et len(replace(lg(j),chr(65+i),"")) = 0 then ' on a une ligne de 5 symboles identiques c'est gagné !
du coup ligne gagnante passe à true, du coup cette ligne pour les autres symbole ne sera plus testée !
Une partie du code :
Sub Vérifications(TabImgAff)
Application.ScreenUpdating = False
Dim CombiLigneImg(0 To 98, 0 To 4)
Dim LG(0 To 98), Temp, Cpt5, Cpt41, Cpt4, Cpt32, Cpt23, Cpt3
Dim I, J, K, X, Y, LV(0 To 98)
' mise en place des différentes combinaisons grâce à la feuille de combinaison
X = 2
Y = 2
With Feuil2
For K = 0 To 98
For J = 0 To 4
For I = 0 To 2
If .Cells(X + I, Y + J).Interior.Color = RGB(255, 0, 0) Or .Cells(X + I, Y + J).Interior.Color = RGB(0, 255, 0) Then
CombiLigneImg(K, J) = I + 2
Exit For
End If
Next I
Next J
Y = Y + 6
If .Cells(X, Y).Interior.Color = 0 Then
X = X + 4
Y = 2
End If
Next K
End With
' initialisation des compteurs de code administrateur
Cpt5 = 0: Cpt41 = 0: Cpt4 = 0: Cpt3 = 0: Cpt32 = 0: Cpt23 = 0
' création de la liste des combinaison en fonction du tirage
For I = 0 To 98
LG(I) = TabImgAff(0)((CombiLigneImg(I, 0) - 1)) & TabImgAff(1)((CombiLigneImg(I, 1) - 1)) & TabImgAff(2)((CombiLigneImg(I, 2) - 1)) & TabImgAff(3)((CombiLigneImg(I, 3) - 1)) & TabImgAff(4)((CombiLigneImg(I, 4) - 1))
Next I
For J = 0 To 8
For I = 0 To 98
If LV(I) = False Then
' 5
If Len(Replace(LG(I), Chr(65 + J), "")) = 0 Then
Cpt5 = Cpt5 + 1
LV(I) = True
' 4 + A
ElseIf Len(Replace(LG(I), "A", "")) = 4 And Len(Replace(LG(I), Chr(65 + J), "")) = 1 Then
Cpt41 = Cpt41 + 1
LV(I) = True
' 4
ElseIf Len(Replace(Left(LG(I), 4), Chr(65 + J), "")) = 0 Or Len(Replace(Right(LG(I), 4), Chr(65 + J), "")) = 0 Then
Cpt4 = Cpt4 + 1
LV(I) = True
' 3A + 2
ElseIf Len(Replace(LG(I), "A", "")) = 2 And Len(Replace(LG(I), Chr(65 + J), "")) = 3 Then
Cpt23 = Cpt23 + 1
LV(I) = True
'2A +3
ElseIf Len(Replace(LG(I), "A", "")) = 3 And (Len(Replace(Left(LG(I), 3), Chr(65 + J), "")) = 0 Or _
Len(Replace(Mid(LG(I), 2, 3), Chr(65 + J), "")) = 0 Or _
Len(Replace(Right(LG(I), 3), Chr(65 + J), "")) = 0) Then
Cpt32 = Cpt32 + 1
LV(I) = True
' 3
ElseIf Len(Replace(Left(LG(I), 3), Chr(65 + J), "")) = 0 Or Len(Replace(Right(LG(I), 3), Chr(65 + J), "")) = 0 Or Len(Replace(Mid(LG(I), 2, 3), Chr(65 + J), "")) = 0 Then
Cpt3 = Cpt3 + 1
LV(I) = True
End If
End If
Next I
Next J
Erase LV
MsgBox (" 5 alignées : " & Cpt5 & Chr(10) & _
" 4 + 1 étoile : " & Cpt41 & Chr(10) & _
" 4 alignés : " & Cpt4 & Chr(10) & _
" 3 + 2 étoiles : " & Cpt32 & Chr(10) & _
" 3 étoiles + 2 : " & Cpt23 & Chr(10) & _
" 3 alignés : " & Cpt3)
End Sub
Dans le commentaires le '5 veut dire recherche d'une ligne de 5 symboles et le '3A+2 recherche une ligne avec 3 étoiles (bonus) et deux symboles identiques, etc...
@ bientôt
LouReeD
Bonsoir, ou bonjour vu l'heure...
Je suis encore en train de flâner sur mon BlindTest moi !
Un problème avec le site pour la section "Téléchargements" m'empêche de faire quoi que ce soit...
Après un cours échange avec l'administrateur, il m'a dit de patienter le mois prochain.
Il devrait joindre l'ensemble des comptes pour que ceux-ci est accès à toutes les sections (Forum, Téléchargements ...)
Enfin bref, la n'est pas le sujet !
Pour le tableau, je parlais du tableau des roues et des images que celles-ci peuvent avoir.
Pour moi 99 Ligne indiquent beaucoup, beaucoup de possibilité.
Ou je n'ai peut être pas saisi ce que vous faisiez... Shame on Me !
J'ai pas réellement analysé la programmation, il est difficile de se donner une idée de comment cette macro fonctionne sans fichier.
D'ailleurs, en retournant sur la page de téléchargement de votre Machine à Sous, je ne vois que l'ancienne version.
Est-ce normal ou est ce aussi du au soucis de la plateforme "Téléchargement" du site ?
A bientôt.