scratch:morpion_step_07

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
scratch:morpion_step_07 [2020/02/27 18:19] – created fabscratch:morpion_step_07 [2020/02/28 10:29] (current) – [Ce qu'on veut faire] fab
Line 3: Line 3:
 ==== Ce qu'on veut faire ==== ==== Ce qu'on veut faire ====
  
 +Pour le moment, il est possible de jouer plusieurs fois dans la même case. Ce n'est pas quelque chose qui est autorisé quand on joue au morpion !
  
 +Pour cela, il va falloir :
 +  * identifier le numéro de la case dans laquelle on a cliqué
 +  * vérifier le ce numéro ne correspond pas à une case qui a déjà été jouée
  
 +Pour identifier le numéro de la case, on va les numéroter comme ci-dessous :
 +
 +{{:scratch:cells_01.png|}}
 ==== Ce qu'il faut faire ==== ==== Ce qu'il faut faire ====
 +
 +Nous allons avoir besoin de 3 nouvelles variables :
 +  * ''case'' : c'est une variable classique qui va nous permettre de savoir le numéro de la case dans laquelle on a cliqué
 +  * ''cases_joueur_0'' : c'est une variable un peu particulière. C'est une liste qui va contenir les cases jouées par le joueur 0.
 +  * ''cases_joueur_1'' : c'est une variable un peu particulière. C'est une liste qui va contenir les cases jouées par le joueur 1.
 +
 +Pour créer une liste, il faut :
 +  * sélectionner la scène
 +  * aller dans la catégorie ''Données''
 +  * cliquer sur le bouton ''Créer une liste''
 +
 +Ensuite, dans le fenêtre qui s'ouvre, il faut donner un nom à la liste puis cliquer sur le bouton ''Ok'' :
 +
 +{{:scratch:pasted:20200227-213344.png}}
 +
 +Il faut donc créer la variable et les 2 listes pour obtenir le résultat :
 +
 +{{:scratch:pasted:20200227-213758.png}}
 +
 +On peut cacher les variables ''joueur'', ''ligne'' et ''colonne'' en les désélectionnant :
 +
 +{{:scratch:pasted:20200227-214138.png}}
 +
 +Afficher les variables est utile pour comprendre comment fonctionne une script et surtout comprendre quand il y a des erreurs dans un script.
 +
 +C'est pour cela que pour l'instant, on affiche la nouvelle variable et les 2 listes.
 +
 +D'après la numérotation que l'on a choisie, on peut dire :
 +  * si ''ligne = 1'' et ''colonne = 1'', alors ''case = 1''
 +  * si ''ligne = 1'' et ''colonne = 2'', alors ''case = 2''
 +  * si ''ligne = 1'' et ''colonne = 3'', alors ''case = 3''
 +  * si ''ligne = 2'' et ''colonne = 1'', alors ''case = 4''
 +  * si ''ligne = 2'' et ''colonne = 2'', alors ''case = 5''
 +  * si ''ligne = 2'' et ''colonne = 3'', alors ''case = 6''
 +  * si ''ligne = 3'' et ''colonne = 1'', alors ''case = 7''
 +  * si ''ligne = 3'' et ''colonne = 2'', alors ''case = 8''
 +  * si ''ligne = 3'' et ''colonne = 3'', alors ''case = 9''
 +
 +On peut donc créer 9 éléments comme celui-ci :
 +
 +{{:scratch:pasted:20200227-215216.png}}
 +
 +On obtient une longue suite d'éléments qu'il faudrait positionner avant l'élément ''créer un clone de Lutin_morpion'' :
 +
 +{{:scratch:pasted:20200227-221301.png}}
 +
 +On obtiendrait alors une suite vraiment très longue d'éléments !
 +
 +Nous allons donc faire autrement :
 +  * nous allons définir un bloc avec tous les éléments de droite
 +  * nous allons utiliser ce bloc comme un élément juste avant l'élément ''créer un clone de Lutin_morpion''
 +
 +Pour cela, il faut :
 +  * aller dans la catégorie ''Ajouter blocs''
 +  * cliquer sur le bouton ''Créer un bloc''
 +  * donne le nom ''identifier la case''
 +  * cliquer sur le bouton ''Ok''
 +
 +{{:scratch:pasted:20200227-221958.png}}
 +
 +Il ne reste plus qu'à :
 +  * positionner l'élément ''définir identifier la case'' en haut des éléments de droite
 +  * positionner l'élément ''Ajouter blocs -> identifier la case'' juste avant l'élément ''créer un clone de Lutin_morpion''
 +
 +{{:scratch:pasted:20200227-222502.png}}
 +
 +Nous pouvons tester que nous identifions correctement la case.
 +
 +Avant d'aller plus loin, on va définir 2 nouveaux blocs : ''identifier ligne'' et ''identifier colonne'' afin de simplifier le script :
 +
 +{{:scratch:pasted:20200227-223505.png}}
 +
 +Dans le script du lutin, on créer également un bloc ''positionner le lutin'' de la façon suivante :
 +
 +{{:scratch:pasted:20200227-223811.png}}
 +
 +Ensuite, il faut ajouter 2 éléments ''Données -> ajouter ... à ...'' :
 +
 +{{:scratch:pasted:20200227-224226.png}}
 +
 +Si on teste, on observe que le numéro des cases jouées par chaque joueur est bien ajouté à la liste de chaque joueur.
 +
 +{{:scratch:pasted:20200227-224340.png}}
 +
 +ATTENTION ! Même quand on clique sur l'hexagone rouge, les listes ne sont pas vidées !
 +
 +Nous allons donc modifier le script de la scène pour vider les listes lorsque l'on clique sur le drapeau vert.
 +
 +Pour vider une liste, le principe est le suivant : on supprime le premier élément de la liste plusieurs fois jusqu'à ce qu'il n'y ait plus d'élément dans la liste.
 +
 +On ajoute donc ce bout de script :
 +
 +{{:scratch:pasted:20200227-225535.png}}
 +
 +Chaque partie devra donc commencer par un clic sur le drapeau vert.
 +
 +On y est presque ! Il ne plus qu'à vérifier que la case dans laquelle on veut créer un lutin n'est présente dans aucune des listes des joueurs.
 +
 +On peut le dire de la manière suivante : si la liste ''cases_joueur_0'' ne contient pas la ''case'' et la liste ''cases_joueur_1'' ne contient pas la ''cases'', alors on créer le lutin.
 +
 +Ce qui donne :
 +
 +{{:scratch:pasted:20200227-230559.png}}
 +
 +C'est terminé !
 +==== Ce qu'on pourrait faire de mieux ====
 +
 +D'après la numérotation que l'on a choisie, on peut aussi dire :
 +  * si ''ligne = 1'', alors :
 +    * si ''colonne = 1'', alors ''case = 1''
 +    * si ''colonne = 2'', alors ''case = 2''
 +    * si ''colonne = 3'', alors ''case = 3''
 +  * si ''ligne = 2'', alors :
 +    * si ''colonne = 1'', alors ''case = 4''
 +    * si ''colonne = 2'', alors ''case = 5''
 +    * si ''colonne = 3'', alors ''case = 6''
 +  * si ''ligne = 3'', alors :
 +    * si ''colonne = 1'', alors ''case = 7''
 +    * si ''colonne = 2'', alors ''case = 8''
 +    * si ''colonne = 3'', alors ''case = 9''
 +
 +On peut donc créer 3 éléments comme celui-ci :
 +
 +{{:scratch:pasted:20200227-215835.png}}
  
 [[scratch:morpion_step_06|Etape précédente]] [[scratch:morpion_step_08|Etape suivante]] [[scratch:morpion_step_06|Etape précédente]] [[scratch:morpion_step_08|Etape suivante]]
  • scratch/morpion_step_07.1582823953.txt.gz
  • Last modified: 2020/02/27 18:19
  • by fab