Pour commencer, tu peux suivre ce tuto pour créer la base de ton memory !!
Avant de rentrer dans le code du projet, on va prendre un temps pour bien comprendre le jeu.
Dans un jeu de Memory, on a des cartes (pour nous ce sera des sprites) qui ont un dos commun et une face. On a des paires de face et le but du jeu et des les trouver !
Pour chacun de nos sprites (représentant des cartes) on aura donc deux costumes (un dos et une face). On aura besoin de vérifier quels sprites sont sélectionnés (deux par deux) pour pouvoir comparer leurs faces. On aura ensuite besoin de connaître l’ « état » des sprites, est-ce qu’on les a trouvés ou pas ?
On va donc utiliser plusieurs variables et des listes. Le projet peut être difficile d’un premier coup d’oeil mais ne te laisse pas décourager ! Commence par créer le jeu sans aléatoire (toujours le même cas) et ajoute ensuite l’aléatoire ! N’hésite pas à demander de l’aide à ton animateur.
On commence par créer nos sprites.
Pour cet exemple, on va choisir 3 paires.
Chaque sprite a deux costumes (un dos commun à tous et une face).
Il nous faut ensuite un sprite vide pour programmer la base du jeu. On mettra tout le code pour connaître l'état du jeu dedans pour plus de clarté.
Le jeu commence quand on a sélectionné deux sprites. Pour pouvoir comparer les deux sprites sélectionnés, on va donc créer deux variables (une variable pour chaque élément sélectionné). Dans notre sprite vide, on les met à 0 au début.
On a ensuite besoin de connaître la position de nos sprites. Est-ce qu'il s'agit du premier élément du jeu ? Du deuxième ? On va créer une variable unique pour chacune de nos cases pour connaître leurs positions :
Au début du jeu, tous nos sprites sont retournés. Pour commencer le code de nos cases, on va donc créer un message pour leur dire de basculer sur le costume dos :
Tips : Pour être sûr que le message soit bien envoyé et que tous les sprites se retournent correctement quand on relance le jeu, il suffit d'ajouter un court temps d'attente avant d'envoyer le message au début du jeu !
Pour cette partie, on va beaucoup naviguer entre notre sprite vide et les sprites cases. Les codes commençant par 'drapeau vert' se trouvent sur le sprite vide (tout ce qui concerne l'initialisation du jeu pour plus de clarté) et le code 'quand ce sprite est cliqué' sur chacun des sprites cases à trouver.
Dans le jeu, quand on choisit un élément, on a besoin de voir de quelle paire il s'agit. On commence donc par basculer sur le costume face quand on clique sur un des sprites :
Il nous faut maintenant une nouvelle variable pour savoir si le sprite cliqué est le premier ou le second. On appelle cette variable 'quel-element-choisi' et on la met à 1 au début :
On va maintenant compléter le code de nos sprites et ajouter une condition 'si l'élément cliqué est le premier ou le second'. Si c'est le premier, on ajoute 1 à notre variable pour pouvoir sélectionner le suivant :
On peut ensuite modifier nos deux premières variables 'element-select' en fonction. On leur donne comme valeur, le numéro de la case. S'il s'agit du premier élément sélectionné, on donne le numéro de la case à notre variable 'element-select-1' sinon on le donne à notre variable 'element-select-2'.
Ça va maintenant se compliquer ! On va avoir besoin d'une première liste 'element-en-cours' . On va placer dedans la valeur de nos sprites dans l'ordre. Est-ce qu'il s'agit de la paire 1, de la paire 2 ou de la paire 3 ?
On va ensuite retourner sur le code de nos sprites pour le compléter. Dans le cas où l'élément cliqué est le second, on va maintenant pouvoir comparer les deux sprites.
Nos variables 'element-select' correspondent au numéro de case, on peut donc les utiliser pour naviguer parmi notre liste (car nous avons placé la valeur de nos cases dans l'ordre). On compare les deux valeurs (est-ce que ce sont les deux cases de la paire 1 ? la paire 2 ? la paire 3 ?). Si ce n'est pas le cas, on envoie le message 'dos' pour retourner les sprites !
On a donc deux cas possibles : le cas où on a sélectionné une bonne paire et notre condition est vraie, et le cas où on a sélectionné une mauvaise paire et la condition est fausse !
C'est le moment de créer une seconde liste pour connaître l'état du jeu ! Elle va nous permettre de savoir si les cases ont été trouvées ou non. Pour l'initialiser, on va donc mettre 6 éléments (un par case) à 0.
Il ne faut pas oublier ensuite de supprimer tous les éléments de nos listes au début du jeu.
On va enfin pouvoir terminer notre gros bout de code sur chaque sprite ! On va ajouter l'action à faire si les deux cases sélectionnées sont bien de la même paire : mettre la valeur correspondante dans cette dernière liste à 1.
Et enfin, on remet notre variable 'quel-element-choisi' à 1 !
On a presque terminé !! Dernière étape de cette version du jeu : s'assurer que les cases ne se retournent pas si on les a déjà trouvées. On va utiliser notre liste 'etat-du-jeu' pour vérifier si la case a été trouvée ou non :
On va maintenant pimenter notre jeu en ajoutant une répartition aléatoire des paires à trouver !!
Pour cette démo, pense à enregistrer ton premier projet en copie !
On commence par modifier nos sprites cases. Chacun des sprites aura le costume pour chacune des paires. On va en plus les renommer pour y accéder facilement depuis le code. On donne comme nom le numéro de la paire :
On va maintenant créer une nouvelle liste 'tous-les-elements' pour remplir aléatoirement notre liste 'elements-en-cours' et non plus à la main comme on le faisait dans la première version du projet.
On va remplir notre nouvelle liste avec 2 éléments à 1 (notre première paire), 2 éléments à 2 (notre 2e paire) et 2 éléments à 3 (notre 3e paire). On envoie ensuite un nouveau message pour déclencher la répartition aléatoire des paires :
On peut maintenant programmer la répartition aléatoire des cartes :
On peut ensuite basculer chaque sprite sur le costume correspondant !
Regarde les projets exemples pour trouver des idées et reproduire des comportements dans ton jeu !
Sur ce studio, tu trouveras plusieurs idées pour créer les comportements de ton jeu.