Source: Scratch Wiki en français


Implémenter une classe Point


De nombreux projets nécessitent l'implémentation d'une classe « Point ». Ce tutoriel vous propose d'implémenter une pseudo-classe grâce à des blocs personnalisés et une liste.

Définition de classe

Commençons par créer la pseudo-classe à l'aide de blocs personnalisés (sans rafraîchissement d'écran).

Effaceur

Ce script permet d'effacer une instance de point précédemment créée.

définir Points | ! Effacer \[nom] (nom)
si <(nom) = []> alors
supprimer tous les éléments de la liste [Points v]
stop [ce script v]
fin
mettre [point / id / a v] à (position de (regrouper [id:] et (nom)) dans [Points v]) // sans espace
si <(point / id / a) > [0]> alors
répéter [5] fois
supprimer l'élément (point / id / a) de [Points v]
fin
fin
Idée
 Idée :
Laissez l'entrée (nom::custom) vide effacera tous les points.

Constructeur

Le script suivant permet de créer des « instances » de la classe Point, c'est à dire un objet virtuel représentant un Point.

définir Points | ! Instance \[nom] (nom) \[x, y] (x) (y) \[couleur] (clr)
si <non <[Points v] contient (regrouper [id:] et (nom))>> alors
ajouter (regrouper [id:] et (nom)) à [Points v]:: list
ajouter (nom) à [Points v]:: list
ajouter [x] à [Points v]:: list
ajouter [y] à [Points v]:: list
ajouter (clr) à [Points v]:: list
fin
mettre [point / id / a v] à (position de (regrouper [id:] et (nom)) dans [Points v])
remplacer l'élément ((point / id / a) + [2]) de la liste [Ponts v] par (x)
remplacer l'élément ((point / id / a) + [3]) de la liste [Ponts v] par (y)
Idée
 Idée :
Cette définition permet de modifier les coordonnée d'une instance après sa première définition.

Méthodes

Aller à un point

Permet de déplacer le sprite aux coordonnées du point.

définir Points | Aller à \[nom] (nom) alors
mettre [point / id / a v] à (position de (regrouper [id:] et (nom)) dans [Points v])
si <(point / id / a) > [0]> alors
aller à x:(élément ((point / id / a) + [2]) de [Points v]) y:(élément ((point / id / a) + [3]) de [Points v])
fin

Tracer un point

Affiche un rendu basique d'un point (nécessite l'extension stylo).

définir Points | Tracer \[nom] (nom)
Points | Aller à \[nom] (nom) :: custom
si <(point / id / a) > [0]> alors
mettre la taille du stylo à [8]
mettre la couleur du stylo à (regrouper [#] et (élément ((point / id / a) + [4]) de [Points v])
stylo en position d'écriture
relever le stylo
mettre la taille du stylo à [6]
mettre la couleur du stylo à [#eeeeee] // Hexadécimal “#eeeeee”
stylo en position d'écriture
relever le stylo
fin

Créer un point à partir d'un mélange de points

Créé un nouveau point à partir d'un mélange entre deux points.

définir Points | Créer Point \[nom] (nom) à partir de \[2x\[nom]] (p1) (p2) \[%] (pourcent)
mettre [point / id / a v] à (position de (regrouper [id:] et (p1)) dans [Points v])
mettre [point / id / b v] à (position de (regrouper [id:] et (p2)) dans [Points v])
si <<(point / id / a) > [0]> et <(point / id / b) > [0]>> alors
mettre [point / m/ x v] à ((élément ((point / id / b) + [2]) de [Points v]) * ((pourcent) / [100]))
ajouter ((élément ((point / id / a) + [2]) de [Points v]) * ([1] - ((pourcent) / [100]))) à [point / m/ x v]
mettre [point / m/ y v] à ((élément ((point / id / b) + [3]) de [Points v]) * ((pourcent) / [100]))
ajouter ((élément ((point / id / a) + [3]) de [Points v]) * ([1] - ((pourcent) / [100]))) à [point / m/ y v]
Points | ! Instance \[nom] (nom) \[x, y] (point / m/ x) (point / m/ y) \[couleur] (000000)::custom
fin
Info
 Info :
Le point nouvellement créé appartient à la droite entre les deux points ayant servi à le créer. De plus, si (pourcent::custom) appartient à
[0 ; 100]
, le point appartiendra même au segment entre ses deux points parents, avec deux cas particuliers :
  • si (pourcent::custom) =
    0
    , le point sera créé sur (p1::custom) ;
  • si (pourcent::custom) =
    100
    , le point sera créé sur (p2::custom).

Voir aussi

Cet article fait partie de la catégorie des tutos
Tous les articles de cette catégorie :