Discuss Scratch
- Discussion Forums
- » Français
- » Comment peut-on faire pointer un objet vers un clone?
- Itharius
- Scratcher
1000+ posts
Comment peut-on faire pointer un objet vers un clone?
ah priori , j'enregistrerais les coordonnées dans des listes et je ferais pointer mon objet vers l'élément correspondant à l'ID du clone.
- NilsTheBest
- Scratcher
1000+ posts
Comment peut-on faire pointer un objet vers un clone?
Tu pourrais essayer ceci: Bien vu! Mais… comment produis-je différents IDs?
répéter (...) fois
ajouter à [ID v] (0)
créer un clone de [... v]
end
Sinon je suis sûr qu'il y a une manière plus élaborée et approfondie de donner à chaque clone un ID.
Last edited by NilsTheBest (Nov. 30, 2018 19:40:10)
NilsTheChair | 5 years on Scratch | 4000+ posts | former wiki editor | 332nd FPC | CoR founder
- SBissay
- Scratcher
500+ posts
Comment peut-on faire pointer un objet vers un clone?
Pour produire différents ID, le code de NTB est ce qu'il se fait de mieux je pense. Mais il est important que la variable ID soit “pour ce lutin uniquement”.
Ensuite, pour répondre à ta première question, je vois deux possibilités de pointer vers un clone :
Ensuite, pour répondre à ta première question, je vois deux possibilités de pointer vers un clone :
- Utiliser un autre lutin invisible.
En effet, tu peux mettre les coordonnées du clone vers lequel s'orienter dans des variables globales, puis envoyer un message pour que le lutin invisible se rende aux coordonnées enregistrées, et enfin pointer vers le lutin invisible.
Exemple :
Le clone :mettre [x v] à (abscisse x)
mettre [y v] à (ordonnée y)
envoyer à tous [position v]
Le lutin invisible :quand je reçois [position v]
aller à x: (x) y: (y)
envoyer à tous [en place v]
Le lutin qui doit s'orienter :quand je reçois [en place v]
s'orienter vers [lutin invisible v]
C'est simple à mettre en place, mais ça a de gros inconvénient, notamment si plusieurs clones essaient d'envoyer leurs coordonnées en même temps… - Du coup, la méthode qu'a commencé à évoquer Itharius.
Important : les listes coord.x et xoord.y ne sont PAS pour ce lutin uniquement, mais par contre la variable ID l'est.
Création des clones :quand le drapeau vert pressé
mettre [ID v] à [1]
répéter (n) fois
créer un clone de [moi-même v]
ajouter à [ID v] (1)
end
Les clones :quand je commence comme un clone
répéter indéfiniment
remplacer l'élément (ID) de la liste [coord.x v] par (abscisse x)
remplacer l'élément (ID) de la liste [coord.y v] par (ordonnée y)
end
Bon, maintenant on sait comment mettre les coordonnées d'un clone dans une liste. Le problème restant, c'est comment s'orienter vers des coordonnées précises.
Pour cela, il faut connaître l'angle entre le lutin à orienter et les coordonnées en question. La réponse, c'est la fonction atan2 (je ne vais pas rentrer dans les détails de trigo), et ensuite il faut traduire cet angle en orientation Scratch, qui vaut 90 - angle.
Code :définir s'orienter vers (x) (y)
si < (x) > (0)> alors
mettre [angle v] à ([atan v] de ((y) / (x))
sinon
si <(x) < (0)> alors
si <(y) < (0)> alors
mettre [angle v] à (([atan v] de ((y) / (x))) - (180))
sinon
mettre [angle v] à (([atan v] de ((y) / (x))) + (180))
end
sinon
si <(y) < (0)> alors
mettre [angle v] à [-90]
sinon
mettre [angle v] à [90]
end
end
end
s'orienter à ((90)-(angle))
Et voilà !
- Discussion Forums
- » Français
- » Comment peut-on faire pointer un objet vers un clone?