Source : Scratch Wiki en français
De nombreux jeux utilisent des moteurs de grille de tuiles, qui permettent de créer un environnement à l'aide de tuiles dessinées à l'avance. L'idée est de disposer sur une grille des tuiles dans un certain ordre.
Principe
Scratch ne propose pas de grilles, seulement des listes. Les listes sont dites à "une dimension" alors que les grilles sont dites de "deux dimensions".
Pour régler ce problème sans avoir à créer plusieurs listes nous allons ranger successivement dans une même liste chaque colonne de la grille.
Créer un asset de tuiles
Nous allons créer un sprite qui regroupe les tuiles et permet donc la création des niveaux. Il est possible de récupérer un asset de costumes ou de les créer soi-même. Cependant toute les tuiles doivent être des carrés de la même taille.
Cette taille sera notée (taille d'une tuile).
Dans ce tuto nous utiliserons un asset de 2 costumes : un vide (Air) et un plein (Mur).
En plus de cet asset il est nécessaire d'ajouter un grand costume pour le déplacement hors de l'écran à mettre au début des costumes.
Nous allons maintenant créer un code permettant de détecter le nom de chaque costume :
supprimer tous les éléments de la liste [Tuiles v] basculer sur le costume (grand costume v) répéter jusqu'à ce que <((nom v) du costume)=[grand costume]> costume suivant ajouter ((nom v) du costume) à [Tuiles v]::list fin
Ce code permettra d'associer des particularités à chaque tuile, il sera à exécuter à chaque changement d'asset.
La création d'un niveau
Dans un premier temps nous allons créer un générateur de niveau vide : avec des murs, un sol et un plafond.
Créons une liste (Grille::list) elle servira à stocker le niveau.
Créons à présent un bloc sans rafraîchissement d'écran qui crée un nouveau niveau :
définir Nouveau niveau de taille (hauteur)x(largeur) mettre [hauteur du niveau v] à (hauteur) mettre [largeur du niveau v] à (largeur) répéter (hauteur) fois ajouter [Mur] à [Grille v]::list fin répéter ((largeur)-[2]) fois ajouter [Mur] à [Grille v]::list répéter ((hauteur)-[2]) fois ajouter [Air] à [Grille v]::list fin ajouter [Mur] à [Grille v]::list fin répéter (hauteur) fois ajouter [Mur] à [Grille v]::list fin