Discuss Scratch

0GAMI
Scratcher
29 posts

Est-ce un bug de scratch ?

Question

Bonjour, dans un de mes projets (toujours le même pour les habitués) un des codes ne s'execute pas correctement et je voulais savoir si scratch pouvait causer un tel bug.


Code (raccourci)

Quand je reçois [combat v] //code de création des clones
si <(ZONE) = [1]> alors
basculer sur le costume [1 v]
créer un clone de [moi même v]
end
si <(ZONE) = [2]> alors
basculer sur le costume [3 v]
créer un clone de [moi même v]
end
si <(ZONE) = [5]> alors
basculer sur le costume [8 v]
créer un clone de [moi même v]
end
si <(ZONE) = [10]> alors
basculer sur le costume [9 v] // il n'y a pas spécialement de logique mathématique entre le numéro de zone et le costume choisi
créer un clone de [moi même v]
end
etc. ::#AAAAAA

Quand je commence comme un clone
un peu de code ::#AAAAAA //code des clones
si <([numéro v] du costume)=[1]> alors
executer le code du clone 1 ::#AAAAAA
end
si <([numéro v] du costume)=[3]> alors
executer le code du clone 3 ::#AAAAAA
end
si <([numéro v] du costume)=[5]> alors
executer le code du clone 5 ::#AAAAAA
end
si <([numéro v] du costume)=[10]> alors
executer le code du clone 10 ::#AAAAAA
end
etc. ::#AAAAAA
Le code de chaque clone n'influe pas sur leur costume et que les clones sont supprimés lorsqu'ils ont fini d'executer leur code. Il y a environ 10 “si alors”

Là où ça coince

La detection du numéro de costume du clone se fait environ 4 fois sur 5. Et donc 1 fois sur 5, il n'execute pas le code dans le “si alors”. Ça le fait pour chacun des “si alors” et de manière aléatoire ce qui me fait fortement penser à un bug. Est-ce possible qu'une grande quantité de conditions à la suite puisse faire buguer le code ?

N'hésitez pas à me demander pour plus d'infos

Last edited by 0GAMI (Oct. 18, 2025 16:51:31)

wilhelm43
Scratcher
1000+ posts

Est-ce un bug de scratch ?

0GAMI wrote:

(#1)

Je te modifie ton code ton code :

quand le drapeau vert pressé
mettre [clone.id v] à [nil]

Quand je reçois [combat v] //code de création des clones
si <(clone.id) = [nil]> alors
mettre [clone.id v] à (élément (ZONE) de [costumes v]) // costume est une variable pour ce sprite uniquement
créer un clone de [moi même v]
mettre [clone.id v] à [nil]
fin

Quand je commence comme un clone
basculer sur le costume (regrouper [clone//] et (clone.id))
si <(clone.id) = […]> alors

fin

C'est ici grossier mais c'est généralement de cette manière qu'on gère proprement des clones (avec une liste / des variables locales monitrices et fixes, permettant ainsi de coder une interface d'échange entre le sprite et ses clones avec un système d'index et une liste globale).

Au passage, le bloc « … » peut être utilisé avec un commentaire (je te le recommande même) au lieu de créer des blocs gris, et de même, il est possible d'utiliser « fin » à la palce de “end” et d'indenter ses blocs (pour une meilleur lisibilité).

Last edited by wilhelm43 (Oct. 19, 2025 09:53:28)

IMAG0
Scratcher
1000+ posts

Est-ce un bug de scratch ?

wilhelm43 wrote:

C'est ici grossier mais c'est généralement de cette manière qu'on gère proprement des clones (avec une liste / des variables locales monitrices et fixes, permettant ainsi de coder une interface d'échange entre le sprite et ses clones avec un système d'index et une liste globale).

Au passage, le bloc « … » peut être utilisé avec un commentaire (je te le recommande même) au lieu de créer des blocs gris, et de même, il est possible d'utiliser « fin » à la palce de “end” et d'indenter ses blocs (pour une meilleur lisibilité).
Merci beaucoup, je penserai à utiliser le bloc “…” la prochaîne fois. Est ce que ce code peut vraiment résoudre mon problème ? Ou est-ce seulement pour faire plus joli ? Et malheureusement, pour des raisons pratiques / de lisibilité / de débogage, j'essaye d'éviter de créer des listes ou des variables sauf dans les cas où il n'y a pas d'alternative. En effet, je me perds très vite lorsque j'ajoute des listes dans du code et mon projet a déjà énormément de variables.

Last edited by IMAG0 (Oct. 19, 2025 08:55:13)

wilhelm43
Scratcher
1000+ posts

Est-ce un bug de scratch ?

L'utilisation de la liste n'est pas nécessaire tu peux toujours utiliser un enchaînement de si alors.
Ça devrait fonctionner, la seule source possible du problème est le bloc « quand je reçois X » qui s'applique aussi aux clones, et ici le script empêche les clones d'exécuter la pile dans le si alors.

Par contre c'est clone.id partout et pas clone sorry je ne sais pas écrire
IMAG0
Scratcher
1000+ posts

Est-ce un bug de scratch ?

Les clones n'executent pas la pile de “si alors” qui permet de les faire apparaître (dans le “quand je reçois combat”), j'ai fait une variable pour l'éviter. Je ne comprends pas bien pourquoi ce bloc peut poser problème, un moyen pour contrer ça ?
wilhelm43
Scratcher
1000+ posts

Est-ce un bug de scratch ?

Vérifier d'où proviennent les clones ne respectant aucune des conditions logiques ?
IMAG0
Scratcher
1000+ posts

Est-ce un bug de scratch ?

Il n'y a aucun autre code qui peut créer des clones pour ce sprite en particulier.
wilhelm43
Scratcher
1000+ posts

Est-ce un bug de scratch ?

Et bien dans ce cas la solution proposée plus haut est amplement suffisante.
IMAG0
Scratcher
1000+ posts

Est-ce un bug de scratch ?

Ça n'a pas résolu le problème.

Last edited by IMAG0 (Oct. 19, 2025 16:04:53)

wilhelm43
Scratcher
1000+ posts

Est-ce un bug de scratch ?

Je ne peux que te proposer de déboguer la création des clones manuellement à l'aide d'une liste pour identifier l'origine du problème.
IMAG0
Scratcher
1000+ posts

Est-ce un bug de scratch ?

En fait, j'ai déjà fait ça et l'origine du problème est spécifiquement la détection du numéro de costume.

Last edited by IMAG0 (Oct. 20, 2025 09:02:57)

wilhelm43
Scratcher
1000+ posts

Est-ce un bug de scratch ?

Il y a peut-être un caractère blanc dans le nom du costume ? Sinon, une autre possibilité est d'ajouter un symbole (comme le tiret du huit) avant les nombres dans le nom du costume pour éviter la confusion entre entrée numérique et texte pour les noms / numéros de costume.
0GAMI
Scratcher
29 posts

Est-ce un bug de scratch ?

En fait, les noms des costumes sont beaucoup plus aléatoires que ça exemples :
“lutin tuto”
“gobelin”
“boss de la neige”
donc il ne peut pas il y avoir de confusion.
Et de toute façon , seul le numéro du costume est détecté pas son nom.

Last edited by 0GAMI (Oct. 20, 2025 10:54:57)

wilhelm43
Scratcher
1000+ posts

Est-ce un bug de scratch ?

Donc dans l'exemple que tu donnes plus haut, les blocs basculer sur le costume n'ont pas une entrée numérique ?
0GAMI
Scratcher
29 posts

Est-ce un bug de scratch ?

Non, je l'avais mis pour l'exemple et pour qu'on comprenne bien, désolé si ça t'a perturbé.
Si tu veux vraiment toutes les informations en conditions réelles, va dans le projet en premier post, dans le sprite “mob2” et ce sont les codes “code d'apparition des mobs” et “code des mobs”. C'est le bazar, je te conseilles de dezoomer.

Last edited by 0GAMI (Oct. 20, 2025 11:03:21)

wilhelm43
Scratcher
1000+ posts

Est-ce un bug de scratch ?

La réponse tient en un bloc :

([nom v] du costume)

Ça devrait être suffisant xD
0GAMI
Scratcher
29 posts

Est-ce un bug de scratch ?

wilhelm43 wrote:

La réponse tient en un bloc :

([nom v] du costume)

Ça devrait être suffisant xD
Et bien non, déjà essayé, déjà raté. Si je demande ici, c'est parce que j'ai déjà testé beaucoup de trucs.

Last edited by 0GAMI (Oct. 20, 2025 12:13:09)

jean-puree
New Scratcher
2 posts

Est-ce un bug de scratch ?

sinon on peut faire en sorte que ca continue de cherche temps qu'il a pas trouvée ?
c'est possible vous pensée ?
wilhelm43
Scratcher
1000+ posts

Est-ce un bug de scratch ?

0GAMI wrote:

(#17)
Et bien non, déjà essayé, déjà raté. Si je demande ici, c'est parce que j'ai déjà testé beaucoup de trucs.
Regarde ton code…

À ce que je sache, 10 n'est pas un nom de costume.

Last edited by wilhelm43 (Oct. 20, 2025 13:20:26)

0GAMI
Scratcher
29 posts

Est-ce un bug de scratch ?

wilhelm43 wrote:

Regarde ton code…
où ?

wilhelm43 wrote:

À ce que je sache, 10 n'est pas un nom de costume.
Ok c'est un bon début, mais il y a toujours des bugs pour, et bien, tout le reste du code. 1 fois sur 5, la condition ne fonctionne pas, et ce pour tous les mobs.

jean-puree wrote:

sinon on peut faire en sorte que ca continue de cherche temps qu'il a pas trouvée ?
c'est possible vous pensée ?
Je n'as bien compris…

Powered by DjangoBB