Source: Scratch Wiki en français


Le bloc « <couleur [] touchée ?> »


<couleur [] touchée ?>

<couleur [] touchée ?>

Catégorie : Capteurs
Type : Bloc booléen
Ajouté dans : Scratch 1.0
Entrées : 1 (entrée nombre)
Code du bloc :
<couleur [] touchée ?>

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

└─ Article principal : Obtenir la couleur Tutoriel détaillé pour déterminer une 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))

Info
 Info :
Chacune des variables varie de 0 à 255.
  • 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.
Info
 Info :
Dans ce cas, l'opacité ne nous intéresse pas car il est nécessaire qu'elle reste à 0 pour que la détection des couleurs fonctionne.
Info
 Info :
Une opacité de 0 équivaut à une opacité de 255, c'est l'opacité maximale.
Info
 Info :
L'opacité minimale est donc atteinte pour la valeur 1*(16777216)

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)

Info
 Info :
Il est important d'utiliser le bloc 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 ?>
Info
 Info :
N'oubliez pas que le script devra être entouré des balises
[scratchblocks]
et
[/scratchblocks]
pour être affiché en tant que bloc dans le message.
Voir les blocs du forum pour plus d'informations.

Autre

Info
 Info :
La valeur située entre les crochets est un code hexadécimal. Vous pouvez trouver le code correspondant à chaque couleur ici.
Attention
 Attention :
Prenez garde à ne pas oublier le # avant d'insérer votre code hexadécimal.

Voir aussi