J'arrive pas a trouver le code source pour "un mélange de carte".

shlen1 Messages postés 2 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 15 juin 2005 - 11 juin 2005 à 14:45
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 - 15 juin 2005 à 14:59
Voilà je suis en train de créé un jeu de carte genre yu-gi-ho, mais j'ai un serieux problème car j'arrive pas a faire un mélange de carte,dans se mélange il faut mélanger 40 cartes le zero inclus.J'ai aissayé avec l'instruction rnd mais sela prend du temps avec la méthode que j'emplois. Donc si vous pouvez m'aider sa serai bien.

Merci d'avance!!!

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 juin 2005 à 15:48
Salut
Bah oui, la génération de nombre pseudo aléatoire est la meilleure façon de mélanger.
Ce que j'aurai fait :
Sachant que tu as 40 cartes, numérotées de 0 à 39
Un tableau CarteListe(39) qui contient chaque carte, dans l'ordre, de 0 à 39 (simple chiffre)
Un tableau CarteMélangées(39) qui contient les cartes mélangées (idem = n°)
Génère un chiffre avec Rnd ...

Dans une forme, crée :
- un bouton nommé cmdGo
- un TextBox nommé txtRésultat
et colle ce code dans la procédure cmdGo_Click :

Dim CarteListe() As String
Dim CarteMélangées() As String
Dim r As Long, Index As Long, NbCartes As Long

Screen.MousePointer = vbHourglass
txtRésultat.MultiLine = True
txtRésultat.ScrollBars = 3 ' Both

NbCartes = 39 ' Choix du nombre de cartes
ReDim CarteListe(NbCartes) ' Redimensionne les tableaux
ReDim CarteMélangées(NbCartes)

' Pour générer une séquence aléatoire différente à chaque lancement
Randomize
' Initialise les tableaux
For r = 0 To NbCartes
CarteListe(r) = CStr(r) ' Cartes dans l'ordre
CarteMélangées(r) = "" ' Cartes mélangées : vides
Next r

' Boucle tant que toutes les cartes n'ont pas trouvé leur place
' sauf les deux dernières : on les fera 'à la main'
Index = 0
Do While Index < (NbCartes - 2)
r = Int(Rnd() * (NbCartes + 1))
If CarteListe(r) <> "" Then
' Atrribue cette carte
CarteMélangées(Index) = CarteListe(r)
' Vide la mémoire d'origine pour ne pas la réutiliser
CarteListe(r) = ""
' Incrémente le compteur
Index = Index + 1
End If
DoEvents
Loop
' Il ne nous reste que 2 cartes à attribuer
' On ne va pas passer par un chiffre aléatoire pour ces deux là
' Ce serait trop long de tomber sur les bons chiffres
For r = 0 To NbCartes
If CarteListe(r) <> "" Then
CarteMélangées(Index) = CarteListe(r)
Index = Index + 1
End If
Next r
' Voilà, on a mélangé nos cartes :
For r = 0 To NbCartes
txtRésultat.Text = txtRésultat.Text & CarteMélangées(r) & ", "
Next r
txtRésultat.Text = txtRésultat.Text & vbCrLf
txtRésultat.SelStart = Len(txtRésultat.Text)
Screen.MousePointer = vbDefault


Vala
Jack, MVP VB
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
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 juin 2005 à 17:33
Private Sub Command1_Click()

Dim i As Integer

Dim x As Integer

Dim tmp As Integer

Dim Carte() As Integer



Randomize Timer



ReDim Carte(39)

' remplissage du Tableau avec des données quelconques

For i = 0 To 39

Carte(i) = i

Next

' mélange du Tableau

For i = 39 To 1 Step -1

x = Rnd * i

tmp = Carte(x)

Carte(x) = Carte(i)

Carte(i) = tmp

Next



End Sub


Daniel
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 juin 2005 à 19:03
Bonne idée, Gobillot
On pourrait même refaire la boucle 2 ou 3 fois, histoire de bien mélanger.

Vala
Jack, MVP VB
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_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
12 juin 2005 à 22:02
ça donnerais rien
toutes les cartes ont été mélangé avec cette méthode, puisque toutes les cartes on passé par le random


-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0

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

Posez votre question
shlen1 Messages postés 2 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 15 juin 2005
15 juin 2005 à 14:35
merci les gas c tré sympas car se mélange commencé a ménervé car sa faisai 3 mois que moi et un pote travaillé decu donc cela nous aidera beaucoup et encore merci
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
15 juin 2005 à 14:59
pourtant, mélanger des cartes c'est hyper connu comme algo
bizarre que vous avez pas trouvé avant le code


-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0
Rejoignez-nous