Source: Scratch Wiki en français
Description
Ce bloc capteur permet de détecter si le costume du sprite possédant ce bloc touche une couleur spécifique dans l'arrière plan ou sur un costume d'un autre sprite. Il renvoie une valeur de type booléenne (vrai ou faux), il est donc utilisé dans les blocs de condition comme les si et dans certaines boucles.
Exemple
Ce bloc est souvent utilisé dans des jeux de plateformes pour détecter si le sprite touche le sol ou des obstacles.
Le code ci-dessous permet à un sprite de s'arrêter de tomber lorsque la couleur noire est touchée.
répéter jusqu'à ce que <couleur [#000000] touchée ?> ajouter (-1) à y end
Exemples
Utilisation classique
- Pour être utilisé correctement, le bloc doit être placé dans une condition ou dans les blocs "Attendre jusqu'à <>" et "Répéter jusqu'à <>".
- La couleur à détecter est réglable en cliquant dans le carré de couleur puis en cliquant à l'endroit où se trouve la couleur choisie.
- Ce bloc ne fonctionne pas si le costume du sprite est vide ou si le sprite est les caché. Toutefois, il fonctionne toujours si le sprite subit l'effet fantôme (quelque soit l'intensité de l'effet).
- Il détecte également les tracés effectués avec le stylo.
Utilisation poussée
Couleur touchée
Il est possible d'utiliser ce bloc de manière plus poussée pour récupérer la couleur touchée par le sprite.
En effet, ce bloc utilise le code RVBA, il est donc possible de tester un grand nombre de couleurs pour trouver celle(s) touchée(s) par le sprite.
Pour faire cela, on exploite le fait que le bloc puisse contenir une variable (voir ci-dessous)
<couleur (couleur) touchée ?>
Il est possible de créer le code de toutes les couleurs disponibles sur scratch grâce au code suivant :
(((A) * (16777216)) + ((R) * (65536))) + (((V) * (256)) + (B))
- La variable R correspond au niveau de rouge de la couleur testée.
- La variable V correspond au niveau de Vert de la couleur testée.
- La variable B correspond au niveau de bleu de la couleur testée.
- La variable A correspond à la transparence ou opacité de la couleur testée.
Ainsi, pour tester toutes les couleurs possibles, le script suivant est nécessaire:
mettre [R v] à [0]::variables répéter (32) fois::control mettre [V v] à [0]::variables répéter (32) fois::control mettre [B v] à [0]::variables répéter (16) fois::control si <couleur (((R::variables) * (65536)) + (((V::variables) * (256)) + (B::variables))) touchée ?::sensing> alors::control mettre [Couleur v] à (((R::variables) * (65536)) + (((V::variables) * (256)) + (B::variables)))::variables dire (Couleur)::looks stop [ce script v]::control end::control ajouter (16) à [B v]::variables end::control ajouter (8) à [V v]::variables end::control ajouter (8) à [R v]::variables end::control
Ce script va détecter et dire la valeur d'une couleur touchée par le sprite.
La valeur ainsi récupérée peut être utilisée pour définir la couleur du stylo (voir ci-dessous) :
mettre la couleur du stylo à (couleur)
mettre la couleur du stylo à [#37d3e3]
plutôt que le bloc mettre la (couleur v) du stylo à ()
pour réaliser cette opération. Sinon, la couleur du stylo ne correspondra pas à celle souhaitée.Sur les forums
Sur les forums de Scratch, vous pouvez intégrer des blocs Scratch grâce au BBCode. Voici le code nécessaire pour insérer ce bloc :
<couleur [] touchée ?>
Ce qui donnera :
<couleur [] touchée ?>
[scratchblocks]et
[/scratchblocks]pour être affiché en tant que bloc dans le message.
Voir les blocs du forum pour plus d'informations.
Autre
Voir aussi
couleur [#000000] touche [#FF0000] ?
Ce bloc vérifie si deux couleurs données sont en contact.
blocs de capteur :: sensing