Discuss Scratch

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]
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
(Aperçu du code qui lance la fonction en executer sans le rafraîchissement de l'écran)

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 :

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

wilhelm43 wrote:

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

IMAG0 wrote:

(#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.

IMAG0 wrote:

(#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.

IMAG0 wrote:

(#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.

IMAG0 wrote:

(#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.

IMAG0 wrote:

(#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 ?

wilhelm43 wrote:

IMAG0 wrote:

(#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

IMAG0 wrote:

(#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

wilhelm43 wrote:

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 ?
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

Powered by DjangoBB