Discuss Scratch
- Discussion Forums
- » Français
- » Mon projet considère que deux couleurs identiques sont différentes
- IMAG0
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
Seulement quand c'est nécéssaire :
Quand je reçois [draw v](Aperçu du code qui lance la fonction en executer sans le rafraîchissement de l'écran)
draw (élément [1] de [draw positions v]) (élément [2] de [draw positions v]) (élément [3] de [draw positions v]) (élément [4] de [draw positions v])::custom
Last edited by IMAG0 (Oct. 25, 2025 15:58:02)
- wilhelm43
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
Sais-tu s'il y a un moment où tu peux initialiser un moniteur d'hitbox (un instant t où le projet pourrait supprimer toutes les hitbox existantes, et préparer les moniteurs pour celles à venir) ?
Imaginons qu'il y en ait un :
La détection viendra ensuite : tu détectes si un élément en touche un autre, c'est ça ?
Imaginons qu'il y en ait un :
définir hitbox.clear
delete all of [hitbox v]
définir hitbox.register \(id\) (id) \(box\) (lx) (ty) (rx) (by)
add (join [id:] (id)) to [hitbox v] :: list
add (lx) to [hitbox v] :: list
add (ty) to [hitbox v] :: list
add (rx) to [hitbox v] :: list
add (by) to [hitbox v] :: list
définir draw (x1) (y1) (x2) (y2)
… // assure toi de vérifier que x1 ≤ x2, et que y1 ≥ y2 (tu peux utiliser les préconditions suivantes si nécessaire)
si <(x1) > (x2)> alors
draw (x2) (y1) (x1) (y2)
stop [ce script v]
fin
si <(y2) > (y1)> alors
draw (x1) (y2) (x2) (y1)
stop [ce script v]
fin
…
hitbox.register \(id\) ((length of [hitbox v]) / [5]) \(box\) (x1) (y1) (x2) (y2)
…
quand je reçois [draw.init v]
hitbox.clear
quand je reçois [draw v]
draw (lx) (ty) (rx) (by) :: custom // enfin ton script garde ta liste
La détection viendra ensuite : tu détectes si un élément en touche un autre, c'est ça ?
- IMAG0
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
La détection viendra ensuite : tu détectes si un élément en touche un autre, c'est ça ?Je détecte si un élément touche une couleur.
Quelques questions et infos :
- Que dois-je mettre dans les blocs … ?
- Que signifient lx , ty, rx, by ?
- Concrètement, que fait le code ?
- Le projet doit en permanence charger les hitbox pour vérifier la couleur de la position du joueur, je ne pense donc pas qu'il soit possible d'insérer ce code quelque part…
- Comment ça “supprimer des hitbox” ?
- wilhelm43
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
(#23)
Que dois-je mettre dans les blocs … ?
Le bloc draw est le même que précédemment, j'ajoute juste deux préconditions et l'enregistrement d'une hitbox.
(#23)
Que signifient lx , ty, rx, by ?
Littéralement : "Left X“, ”Top Y“, ”Right X“ et ”Bottom Y", les coordonnées d'une boîte rectangulaire non orientée.
(#23)
Concrètement, que fait le code ?
Pour le moment, le code proposé ci-dessus ne propose que de créer et manipuler des hitboxs sans toutefois les gérer.
(#23)
Le projet doit en permanence charger les hitbox pour vérifier la couleur de la position du joueur, je ne pense donc pas qu'il soit possible d'insérer ce code quelque part…
C'est à dire ? Je n'ai pas compris, dsl.
(#23)
Comment ça “supprimer des hitbox” ?
Le code utilise une seule liste pour toutes les hitbox. Une fois qu'un élément avec hitbox n'est plus utilisé, on peut théoriquement supprimer son entrée de la liste pour améliorer les performances. Étant donné que tu ne donnes pas d'identifiant aux carrés, ce n'est pas possible (d'où le supprimer tout et l’absence de bloc personnalisé permettant de supprimer une entrée précise) mais on peut l'implémenter.
Ce que j'ai fait c'est une sorte de liste d'instances d'une classe “hitbox”.
- IMAG0
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
Ok donc en gros, le code définit des hitbox avec quatre coordonnées puis les met dans une liste, on aura plus qu'à détécter si jamais la position du joueur est dans une hitbox c'est ça ?
Est ce qu'on peut mettre le code à l'endroit où se trouve le bloc “effacer tout” ?
Sinon je me demandais : est ce que changer de couleur pourrait changer le problème ? Si ça se trouve j'ai juste pas eu de chance en choisissant la couleur…
Edit : RÉSOLU J'ai juste changé la couleur 64 100 94 vers 64 100 100. Je n'ai plus le problème.
(#23)
Le projet doit en permanence charger les hitbox pour vérifier la couleur de la position du joueur, je ne pense donc pas qu'il soit possible d'insérer ce code quelque part…
C'est à dire ? Je n'ai pas compris, dsl.
Est ce qu'on peut mettre le code à l'endroit où se trouve le bloc “effacer tout” ?
Sinon je me demandais : est ce que changer de couleur pourrait changer le problème ? Si ça se trouve j'ai juste pas eu de chance en choisissant la couleur…
Edit : RÉSOLU J'ai juste changé la couleur 64 100 94 vers 64 100 100. Je n'ai plus le problème.
Last edited by IMAG0 (Oct. 26, 2025 08:35:42)
- wilhelm43
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
(#25)
Est ce qu'on peut mettre le code à l'endroit où se trouve le bloc “effacer tout” ?
Oui c'est une possibilité.
En tout cas, prend note qu'il est plus simple de contrôler (et moins bogué) des boîtes de collisions virtuelles que des boîtes liées au costume, aux couleurs, etc.
Bonne journée !
- IMAG0
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
Ok, du coup je veux bien le code quand même (pour plus tard)
- wilhelm43
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
Il me manque un détaille pour ça : par rapport à quoi détectes-tu le contact ? Ton joueur ? Un point précis ?
- IMAG0
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
Il me manque un détaille pour ça : par rapport à quoi détectes-tu le contact ? Ton joueur ? Un point précis ?Mon joueur, mais ça peut aussi être la souris dans mon cas. (si tu veux le projet, c'est le dernier que j'ai publié)
Last edited by IMAG0 (Oct. 26, 2025 16:29:25)
- wilhelm43
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
S'il s'agit d'un point (souris), il suffit de vérifier s'il est compris entre les deux angles de la boîte de collisions.
S'il s'agit d'un rectangle (joueur), il faut vérifier les 4 angles de la boîte du joueur à celle des couleurs.
Je te code tout ça ?
S'il s'agit d'un rectangle (joueur), il faut vérifier les 4 angles de la boîte du joueur à celle des couleurs.
Je te code tout ça ?
- IMAG0
-
Scratcher
1000+ posts
Mon projet considère que deux couleurs identiques sont différentes
Non, te casse pas la tête, j'ai le principe c'est déjà pas mal 

- Discussion Forums
- » Français
-
» Mon projet considère que deux couleurs identiques sont différentes

