Source : Scratch Wiki en français


Créer un moteur de grille de tuiles

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.

Ordre 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).

Attention
 Attention :
Si vos costumes sont trop petits, trop de clones seront générés : le projet ralentira ou ne fonctionnera pas.

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.

Attention
 Attention :
Ceci permet d'éviter de confondre les numéros de costume, cependant il est nécessaire de ne pas avoir de costume dont le nom est un chiffre.

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
Cet article fait partie de la catégorie des tutos
Tous les articles de cette catégorie :
Les témoins (''cookies'') nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de témoins.