Création d'un jeu "MEMORY" en VBA

Mayzuka

XLDnaute Nouveau
Bonjour à tous,

Je vous explique mon problème,

Je suis étudiant et notre professeur d'informatique nous a donné un travail à faire comme indiqué dans l'intitulé, nous devons créer un jeux "MEMORY".

Le but du jeux est de mémoriser un carré (6x6) comportant des cases de couleurs (Jaune, Vert, Bleu et Rouge) qui sont généré aléatoirement, qui apparaissent 5 secondes; après ces 5 secondes un grille neuve apparaît et il faut reconstituer la grille en utilisant des boutons qui rempliront la ou les cases sélectionnées.

Règles du jeu:
Pour commencer à jouer cliquez sur le bouton "JOUER", puis sur le bouton oui.
Les cases de la grille se remplissent avec les 4 couleurs
Elles restent affichées 5 secondes, à vous de les mémoriser, après ces 5 secondes elle redeviennent blanche.
Vous devez alors vous positionner dans une case ou plusieurs puis cliquer sur le bouton de la couleur qui vous semble être la bonne.
Une fois que vous avez finit (toutes les cases ne doivent pas forcement être remplies si la difficulté est trop grande pour vous) vous devez cliquer sur le bouton "RÉSULTATS" pour afficher votre score et le comparer au meilleur résultat qui reste toujours affiché



AIDES/CONTRAINTES:
Un bouton "JOUER" genere une grille de 36 cases colorées aléatoirement de 4 couleurs (ROUGE, BLEU, VERT et JAUNE)
La grille reste visible 5 secondes, il faut la re-créer avec les boutons de chaque couleur qui recolore la ou les cases.
Le meilleur score du fichier reste afficher au fil des parties
Le bouton jouer doit déclancher une alerte de type "Voulez vous commencer une nouvelle partie?" avec un bouton oui qui recommence une nouvelle partie aléatoire et un bouton non qui laisse la partie en cour se dérouler
Un bouton résultat doit être présent
Le joueur ne peut modifier que les 36 cellules à l'aide des boutons, tout le reste doit être protégé.
Le score de la partie doit être présent (en début de partie la cellule est vide)
La présentation du jeux est libre (fond forme taille des cases de la grille, taille des boutons)
Les regles du jeux doivent être affiché en bas du jeux.




Après 15 jours de panique devant ma fenêtre Excel un ami m'a conseillé de demander de l'aide sur un forum, je m'en remet donc à vos connaissances



Je précise que mon niveau de VBA est celui d'un novice,
Je tiens à être clair je ne suis pas venue sur ce forum pour demander à ses membres de faire mon exercice !!!
Je souhaite que vous puissiez me guider pour commencer ce travail, pourquoi pas me guider tout au long de la construction de ce dernier.




Si mon post n'est pas complet et que vous souhaitez avoir des informations complémentaires je me tiens à votre disposition dans la limite de mes connaissances.
Je vous remercie d'avance

Cordialement.
 

Staple1600

XLDnaute Barbatruc
Re : Création d'un jeu "MEMORY" en VBA

Bonsoir à tous

Mayzuka (Bienvenue sur le forum)
Voici déjà de qui mettre des couleurs dans les cases presque au hasard ;)
Sub GrilleAleatoire()
'Comme tu es novice
'Question sur cette ligne?
Dim L As Long, C As Long, couleurs
'Question sur cette ligne?
couleurs = Array(3, 23, 14, 6)
'Question sur cette ligne?
Range("A1:F6").Clear
'Question sur cette ligne?
Range("A1:F6").RowHeight = 43
'Question sur cette ligne?
Range("A1:F6").ColumnWidth = 8.14
'Question sur cette ligne?
Range("A1:F6").Borders.LineStyle = 1
'Question sur cette boucle?
Randomize CLng(Date)
For L = 1 To 6
For C = 1 To 6
Cells(L, C).Interior.ColorIndex = couleurs(Int(4 * Rnd))
Next C, L
End Sub

J'attends donc tes questions ;)

NB: Pour savoir comment lancer une macro, voir ci-dessous ces deux tutoriaux
Créer ou supprimer une macro - Excel
Exécuter une macro - Excel
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Création d'un jeu "MEMORY" en VBA

Re

Avant d'aller au dodo, je te mets deux variantes de la précédentes macros
(qui ne donnent pas le même résultat)
Je te laisse tester et découvrir quels effets différents produisent ces trois macros.
Avec cela tu as déjà de quoi cogiter (à moins que tu ne dormes déjà)
A te relire donc plus tard, avec quelques questions au bout des doigts , I presume ;)
Bonne nuit à tous ;)
Sub GrilleAleatoireII()
Dim L As Long, C As Long, Z As Long, couleurs, pL As Range
Set pL = Range("A1:F6")
couleurs = Array(3, 23, 14, 6)
With pL
.Clear: .RowHeight = 43
.ColumnWidth = 8.14: .Borders.LineStyle = 1
End With
Randomize CLng(Date)
Z = Int(6 * Rnd) + 1
For L = 1 To Z
For C = 1 To Z
Cells(L, C).Interior.ColorIndex = CLng(couleurs(Int(4 * Rnd)))
Next C, L
End Sub
Sub GrilleAleatoireIII()
Dim L As Long, C As Long, Z As Long, couleurs, pL As Range
Set pL = Range("A1:F6")
couleurs = Array(3, 23, 14, 6)
With pL
.Clear: .RowHeight = 43
.ColumnWidth = 8.14: .Borders.LineStyle = 1
End With
Randomize CLng(Date) + 123
For L = 1 To Int(6 * Rnd) + 1
For C = 1 To Int(6 * Rnd) + 1
Cells(L, C).Interior.ColorIndex = CLng(couleurs(Int(4 * Rnd)))
Next C, L
End Sub
 

Mayzuka

XLDnaute Nouveau
Re : Création d'un jeu "MEMORY" en VBA

Bonjour,
J'ai essayé les différentes solutions que vous m'avez proposé (je vous en remercie) la première semble être la bonne,
d’après ce que j'ai compris:

Sub GrilleAleatoireII() forme un carré Rdn mais un carré quand même grâce à ces lignes:
For L = 1 To Z
For C = 1 To Z

Sub GrilleAleatoireIII() va remplir de façon Rdn un carré de limité de 6*6 sans toute fois former un carré dans ces limites grace à ces lignes:
For L = 1 To Int(6 * Rnd) + 1
For C = 1 To Int(6 * Rnd) + 1

Si Sub GrilleAleatoire() semble être la bonne solution d'après moi c'est parce qu'il n'y a pas d'aléatoire dans ces lignes:
For L = 1 To 6
For C = 1 To 6
Donc le carré formé et remplie est de 6*6 obligatoirement ?
 

Mayzuka

XLDnaute Nouveau
Re : Création d'un jeu "MEMORY" en VBA

J'ai simplement analysé ce qu'il changeait d'une macro à l'autre et ce qu'il se passait quand je lançais les macros :)

Et malheureusement si j'ai d'autres questions :confused:

Premièrement

J'ai affecté cette macro à un bouton mais je dois faire pop une boite de dialogue pour proposer deux choix,
la question: Voulez vous commencer une partie ?
les choix possible : Oui (lance une nouvelle fois la macros) Non (ferme la boite de dialogue et ne fait rien)

Donc si je me souviens bien:

MsgBox ("Voulez vous commencer une partie?"), (vbYesNo), "Partie"

Le problème est que quand j'appuis sur oui, miracle la macro se lance parfaitement, mais quand j'appuis sur non, miracle la macro se lance aussi. :(
Comment faire pour que le choix Non ne déclenche pas la macro ?
 

Staple1600

XLDnaute Barbatruc
Re : Création d'un jeu "MEMORY" en VBA

Re

Utilises un Select Case
Code:
Sub test()
Dim rep&
rep = MsgBox("Voulez-vous commencer une partie?", vbQuestion + vbYesNo, "MEMORY")
Select Case rep
Case 6
'ici code VBA si Oui
MsgBox "Vous avez cliqué Oui.", vbInformation, "TEST"
Case 7
'ici code VBA si Non
MsgBox "Vous avez cliqué Non.", vbInformation, "TEST"
End Select
End Sub
 

Mayzuka

XLDnaute Nouveau
Re : Création d'un jeu "MEMORY" en VBA

Hum je vois, mais deux question me viennent à l'esprit, pourquoi la MsgBox pour laquelle j'avais opté ne fonctionnait pas ?
Et pourquoi ? :
Case 6
Case 7
Pour désigner les cases de choix (j'ai essayé de changer les valeurs par 4 et 5 mais rien ne marche, pourquoi ces valeurs précise ?)


:confused:

Je me suis donc lancé dans la suite de cette construction pour intégrer le délais de 5 secondes comme ceci:
Application.Wait Time + TimeSerial(0, 0, 5)

Je n'ai pas constaté de problèmes donc j'ai continué en essayant d’intégrer le "nettoyage" de la grille si je puis le nommer ainsi
en intégrant ceci à la suite du délais:
Range("B2:G7").CellsSelection.ClearContents

C'est ici qu'arrive le problème, la macro s’exécute parfaitement jusqu’à la fin du délais de 5 seconde ou le "nettoyage" devrais se faire mais un message apparais:
"Propriété ou méthode non gérée par cet objet"

J'ai donc essayé:
CellsSelection.ClearContents.Range("B2:G7")
et cette fois ci c'est un message "Objet requis" qui apparaît

quelle est donc la marche à suivre pour cette étape ?


Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : Création d'un jeu "MEMORY" en VBA

Re

Toujours abuser de la touche F1 dans VBE, jeune padawan ;)
(ci-dessous extrait de l'aide VBA)
Remarque Ces constantes sont spécifiées par Visual Basic pour Applications. Vous pouvez dès lors utiliser les noms dans votre code en lieu et place des valeurs réelles.

Valeurs de retour
ConstanteValeurDescription
vbOK1OK
vbCancel2Annuler
vbAbort3Abandonner
vbRetry4Réessayer
vbIgnore5Ignorer
vbYes
6Oui
vbNo
7Non

 

Habitude

XLDnaute Accro
Re : Création d'un jeu "MEMORY" en VBA

Bonjour à tous.

Ci-joint un aperçu de ce à quoi ça pourrait ressembler.

Doit-être utiliser seulement pour fin de comparaison :rolleyes:
 

Pièces jointes

  • MemoryGameMayzuka.xlsm
    45.2 KB · Affichages: 210

Mayzuka

XLDnaute Nouveau
Re : Création d'un jeu "MEMORY" en VBA

Très bien réalisé,
aucun risque de copie de ma part mon niveau est tellement éloigné de cela que ce serait vraiment suspect que de rendre un aussi bon travail
en tout cas bravo.

Est ce normal que l'aide (F1) me dirige sur Ce lien n'existe plus ?
 

Modeste geedee

XLDnaute Barbatruc
Re : Création d'un jeu "MEMORY" en VBA

Bonsour® à tous
Bonjour à tous. Ci-joint un aperçu de ce à quoi ça pourrait ressembler. Doit-être utiliser seulement pour fin de comparaison :rolleyes:
tardivement ...
;)
autre proposition ...
Capture.jpg
Capture.jpg

pièce jointe : retirée à la demande explicite du questionneur #17

dispo sur demande via MP
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    44.6 KB · Affichages: 209
  • Capture.jpg
    Capture.jpg
    44.6 KB · Affichages: 202
  • Capture.jpg
    Capture.jpg
    31.9 KB · Affichages: 222
  • Capture.jpg
    Capture.jpg
    31.9 KB · Affichages: 201
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Création d'un jeu "MEMORY" en VBA

Bonsoir tout le monde...

Hi, Modeste GD, trop facile, 100% au premier coup....

solution, choisir une couleur, et cliquer avec le clic droit sur toutes les cases...

si c'est bon, la case se met à la couleur choisie...

C'était juste pour te signaler ce petit bug

Car le design est magnifique, notre ami va avoir l'embarras du choix

Bonne nuit
 

Modeste geedee

XLDnaute Barbatruc
Re : Création d'un jeu "MEMORY" en VBA

Bonsour®
Le but du jeux est de mémoriser un carré (6x6) comportant des cases de couleurs (Jaune, Vert, Bleu et Rouge) qui sont généré aléatoirement, qui apparaissent 5 secondes; après ces 5 secondes un grille neuve apparaît et il faut reconstituer la grille en utilisant des boutons qui rempliront la ou les cases sélectionnées.

Règles du jeu:
Pour commencer à jouer cliquez sur le bouton "JOUER", puis sur le bouton oui.
Les cases de la grille se remplissent avec les 4 couleurs
Elles restent affichées 5 secondes, à vous de les mémoriser, après ces 5 secondes elle redeviennent blanche.
Vous devez alors vous positionner dans une case ou plusieurs puis cliquer sur le bouton de la couleur qui vous semble être la bonne.
Une fois que vous avez finit (toutes les cases ne doivent pas forcement être remplies si la difficulté est trop grande pour vous) vous devez cliquer sur le bouton "RÉSULTATS" pour afficher votre score et le comparer au meilleur résultat qui reste toujours affiché



AIDES/CONTRAINTES:
Un bouton "JOUER" genere une grille de 36 cases colorées aléatoirement de 4 couleurs (ROUGE, BLEU, VERT et JAUNE)
La grille reste visible 5 secondes, il faut la re-créer avec les boutons de chaque couleur qui recolore la ou les cases.
Le meilleur score du fichier reste afficher au fil des parties
Le bouton jouer doit déclancher une alerte de type "Voulez vous commencer une nouvelle partie?" avec un bouton oui qui recommence une nouvelle partie aléatoire et un bouton non qui laisse la partie en cour se dérouler
Un bouton résultat doit être présent
Le joueur ne peut modifier que les 36 cellules à l'aide des boutons, tout le reste doit être protégé.
Le score de la partie doit être présent (en début de partie la cellule est vide)
La présentation du jeux est libre (fond forme taille des cases de la grille, taille des boutons)
Les regles du jeux doivent être affiché en bas du jeux.

Je précise que mon niveau de VBA est celui d'un novice,

au-delà des règles et contraintes,
et cela indépendamment du langage utilisé,
il te faut analyser le découpage fonctionnel de l'application :
Capture.jpg
gestion de l'interface utilisateur (actions possibles)
- zone de jeux,
- zone de choix,
- boutons
gestion des fonctions utilisées (affichages, calculs)
- situation
- modification écran (indicateurs)
- nouvelle situation
- rafraichissement écran
gestion fin de partie
- compte-rendu
- actions

faire autant que ce peut correspondre règles, contraintes avec une seule des fonctions (sous forme de pseudo-code) précédemment identifiées,
ensuite l'assemblage et l'appel de ces fonctions s'apparente à un "mécano" avec facilités de modification indépendamment de l'algorithme retenu.
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    31.9 KB · Affichages: 102
  • Capture.jpg
    Capture.jpg
    31.9 KB · Affichages: 122
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87