Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/03/2007, 15h41   #1
Invité de passage
 
Inscription : mars 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 12
Points : 0
Points : 0
Par défaut 32 images générées aléatoirement (sans les voir)

Bonjour à tous,
j'ai codé avec l'aide d'un ami le fait de générer 32 cartes de manière aléatoire.
Cependant, cette distribution est visible, c'est-à-dire que le joueur jouant au memmory(jeu consistant à rerouver des paires) voit pas les cartes et non le dos des cartes. Je vous contacte pour vous demander de l'aide sur ce dernier point. Je ne sais pas comment effectuer cette distribution aléatoire tout en laissant sur le plateau de jeu le dos des cartes (image: fichier bmp), sachant qu'ensuite lorsque le joueur clique sur une des cartes il trouve une carte qui a été distribué aléatoirement précédemment. Je vous ai ajouté ci-dessous le code pour mieux comprendre:


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Private Sub cmd_Distribuer_Click()
 
Dim chemin As String
 
Dim TableauAffectation(1 To 16) As Integer
 
ReDim TabImages(1 To 32) As Object
Set TabImages(1) = Image1
Set TabImages(2) = Image2
Set TabImages(3) = Image3
Set TabImages(4) = Image4
Set TabImages(5) = Image5
Set TabImages(6) = Image6
Set TabImages(7) = Image7
Set TabImages(8) = Image8
Set TabImages(9) = Image9
Set TabImages(10) = Image10
Set TabImages(11) = Image11
Set TabImages(12) = Image12
Set TabImages(13) = Image13
Set TabImages(14) = Image14
Set TabImages(15) = Image15
Set TabImages(16) = Image16
Set TabImages(17) = Image17
Set TabImages(18) = Image18
Set TabImages(19) = Image19
Set TabImages(20) = Image20
Set TabImages(21) = Image21
Set TabImages(22) = Image22
Set TabImages(23) = Image23
Set TabImages(24) = Image24
Set TabImages(25) = Image25
Set TabImages(26) = Image26
Set TabImages(27) = Image27
Set TabImages(28) = Image28
Set TabImages(29) = Image29
Set TabImages(30) = Image30
Set TabImages(31) = Image31
Set TabImages(32) = Image32
 
For a = 1 To 32
 
    Do
 
        NbrAléatoire = Int((16 * Rnd) + 1) 'nbre aléatoire entre 1 et 16
 
        If TableauAffectation(NbrAléatoire) < 2 Then
            TableauAffectation(NbrAléatoire) = TableauAffectation(NbrAléatoire) + 1
            TableauCartes(a) = NbrAléatoire
            Exit Do
        End If
 
    Loop
 
Next
 
For a = 1 To 32
    chemin = (ThisWorkbook.Path + "\" + CStr(TableauCartes(a)) + ".bmp")
    TabImages(a).PictureSizeMode = fmPictureSizeModeStretch
    TabImages(a).AutoSize = False
    TabImages(a).Picture = LoadPicture(chemin)
Next
 
 
End Sub
PS: Je suis débutant
jhonnybegood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2007, 18h19   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tu as essayé, ça ?
Code :
1
2
3
4
5
6
7
For a = 1 To 32
    chemin = (ThisWorkbook.Path + "\" + CStr(TableauCartes(a)) + ".bmp")
    TabImages(a).PictureSizeMode = fmPictureSizeModeStretch
    TabImages(a).AutoSize = False
    TabImages(a).Picture = LoadPicture(chemin)
    TabImages(a).visible = false
Next
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2007, 18h26   #3
Invité de passage
 
Inscription : mars 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 12
Points : 0
Points : 0
Par défaut afficher une autre image (la même 32 fois)

Merci pour ta réponse, mais une fois avoir fait cela est-ce que je peut afficher 32 fois l'image du dos des cartes, en conservant tout de même la répartition aléatoire des cartes?
jhonnybegood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2007, 20h32   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Oui, il suffit de faire le contraire sans toucher à leurs positions.
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2007, 20h39   #5
Invité de passage
 
Inscription : mars 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 12
Points : 0
Points : 0
Tu vas sûrement penser que je suis lourd et nul, mais je n'ai pas bien compris ta dernière réponse (qu'est-ce que tu inverses?,..).

Plutôt qu'entends-tu par faire le contraire?
jhonnybegood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2007, 20h45   #6
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub RendreVisible()
Dim TableauAffectation(1 To 16) As Integer
 
ReDim TabImages(1 To 32) As Object
Set TabImages(1) = Image1
Set TabImages(2) = Image2
Set TabImages(3) = Image3
     '...
     '...
     '...
Set TabImages(32) = Image32
 
For a = 1 To 32
     TabImages(a).visible = True
Next
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2007, 21h46   #7
Invité de passage
 
Inscription : mars 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 12
Points : 0
Points : 0
Par défaut 32 cartes aléatoires

Je pense qu'on ne sait pas bien compris, en fait je souhaiterais qu'en début de partie le joueur ne voit que le dos des cartes. Cependant, la répartition se fait quand même ("en mémoire") lorsque le joueur appuie sur le bouton de lancement. Ce que je vais te dire va peut-être paraître étrange mais en fait c'est comme si dans la picture box il y avait 2 images : l'une n'est pas visible au début (cartes classique(coeur ,pique.....) qui ont été placées aléatoirement lors du clic sur le bouton de lancement), l'autre le dos de la carte qui est visible au début et jusqu'à ce que le joueur clique sur cette image.
jhonnybegood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2007, 02h36   #8
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
J'aurais dû y penser. Et c'est bien pourquoi je t'avais conseillé d'utiliser un userform.
Si tu peux me convaincre de l'intérêt de placer tes cartes sur une feuille de calculs plutôt que sur un userform, je regarderai ce qu'on peut faire...
Une question va t'être posée : D'où sorte les images ? De quelle boîte à outils ? Dessin ou formulaire ?
Si c'est dessin, tu peux affecter une macro à chaque image
Si c'est formulaire, tu as accès au code en cliquant deux fois sur l'image.
Bon courage
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2007, 09h42   #9
Invité de passage
 
Inscription : mars 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 12
Points : 0
Points : 0
Par défaut 32 cartes sans les voir

Et bien, j'ai demandé à mon prof et il m'a dit qu'il était préférable de faire le jeu sur feuille de calcul, il m'a exactement dit que j'alais me compliquer la vie en faisant cela sur userform sans me donner les raisons. Sinon les images sont des fichiers bitmap situées dans le même dossier que le fichier excel du jeu.
jhonnybegood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2007, 17h25   #10
Membre Expert
 
Inscription : novembre 2006
Messages : 1 465
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 1 465
Points : 1 411
Points : 1 411
salut
j'ai pas tout compris mais dans l'ensemble
1 tu place les cartes
2 tu place un dos de carte qui masque la carte
3 le joueur clique et tu demasque la carte
pourquoi ne pas
mémoriser les position pour chaque valeur de carte
placer les dos sur rien
quand le joueur clique masquer le dos et charger la carte correspondante a cette position
et hop ni vu ni connu, j'tembrouille
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2007, 13h03   #11
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Je pense plus pratique de placer le dos en premier plan de l'image et de masquer le dos sur click sur le dos.
Je t'ai posé la question
Citation:
D'où sortent les images ? De quelle boîte à outils ? Dessin ou formulaire ?
Ta réponse nous éclairerait.
Quelque soit la manière, chacune des images aura dans son click
Code :
1
2
Imagen.visible = false
DoEvents
PS - où imagen sera le dos de la carte. Le dos masqué, on voit la carte
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h53.


 
 
 
 
Partenaires

Hébergement Web