Vous n'êtes pas identifié(e). Pour pouvoir écrire ou répondre à un message, vous devez vous connecter ou vous créer un compte sur JAWA.

#1 03-06-2020 07:59:10

Catmaya
Membre
Inscription : 14-04-2020

Objets dans Groupe d'objets

Bonjour,

J'ai un groupe d'objets (allumettes) qui sont déplaçables et que je veux remettre dans leur position d'origine au bout de X manipulations infructueuses.

J'ai déjà eu cette problématique que j'ai résolue en créant un tableau avec tous les id des objets du groupe et une boucle qui va les chercher.

Mais n'y a-t-il pas un moyen de connaître les objets d'un groupe ?

Merci.

Hors ligne

#2 03-06-2020 08:17:56

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

Bonjour Marie,

Merci de vous pencher sur cette question.

Non, avec les variables. Dans le jeu, le joueur essaie de résoudre un puzzle en bougeant des objets déplaçables. Au bout de 3 allumettes déplacées, si le résultat n'est pas atteint, on remet les allumettes dans leur position d'origine (les x et les y sont remis en initialX et initialY).
Je peux bien sûr le faire objet par objet, mais je souhaite faire un petit script sous forme de boucle pour ramener tout ça dans la bonne position.

Hors ligne

#3 03-06-2020 08:48:16

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

J'ai essayé aussi bien que dans le manuel ce soit précisé: _initialX_<id d'objet>.

Puisqu'il faut mettre les id d'objet, c'était pour les obtenir "automatiquement", mais je ne pense pas que ce soit possible, pour l'instant du moins. Sauf s'il y a une astuce que je ne connais pas !

Hors ligne

#4 03-06-2020 19:10:37

jawa
Admin

Re : Objets dans Groupe d'objets

bonsoir
question intéressante. j'ai déjà eu le cas et ça doit pouvoir se faire en un seul effet avec les id génériques.
si vous faites

modifier:<id groupe allumettes>:x:{{_initialX_1}}
modifier:<id groupe allumettes>:y:{{_initialY_1}}

si ça ne marche pas essayez avec 3 au lieu de 1
il me semble que l'id générique 1 désigne chaque objet modifié dans le cadre d'une modification d'un groupe d'objets.
(mais j'ai un doute)

Z

#5 04-06-2020 06:47:23

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

Les allumettes sont plus capricieuses que les fraises.
_1 renvoie tous les objets du groupe aux coordonnées d'origine de la dernière allumette déplacée. Résultat: elles sont toutes superposées (celles qui avaient été déplacées et les autres).
_3 ne fait rien.
Pour faire bonne mesure, j'ai essayé _2, qui renvoie toutes les allumettes aux coordonnées d'origine de la dernière zone combinée avec les allumettes. Le résultat est le même que _1 (superposition), mais ailleurs.

Hors ligne

#6 06-06-2020 17:33:15

jawa
Admin

Re : Objets dans Groupe d'objets

bonjour
Je pense que la différence entre vos 2 tests est que Marie a ise les effets dans une interaction de groupe et Catmaya dans uen interaction.
- L'id générique 1 désigne l'objet avec lequel le joueur a interagit initialement, c'est à dire l'id de l'objet qui porte la première interaction de la chaine.
=> Si cette interaction est une interaction de groupe, 1 désigne l'id de groupe docn contiendra chaque objet du groupe donc ça va fonctionner. Si l'interaction qui porte les effets est une interaction d'objet, 1 désignera touours l'objet qui porte l'inter, même si il a des effets portant sur des groupes.

Pour rappel
- le 3 est l'id de l'objet portant l'interaction en cours dans la chaîne d'interaction, donc va être différent de 1 dans chaque "sous interaction" d'une chaîne d'effet (si on fait un "actionner" dans les effets).
- le 2, l'objet avec lequel a combiné le joueur dans le cas d'une interaction de combinaison.


Et je viens d'ajouter l'id générique 4 : id de l'objet modifié par l'effet en cours
donc le code suivant devrait maintenant marcher dans tous les types d'interactions :

modifier:<id groupe allumettes>:x:{{_initialX_4}}
modifier:<id groupe allumettes>:y:{{_initialY_4}}

merci de me dire si ça fonctionne dans  vos 2 cas !

#7 06-06-2020 18:00:47

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

Merci beaucoup de continuer à chercher.
Je viens d'essayer le nouvel identifiant 4, mais ça ne marche pas chez moi, rien ne se passe.
Je combine le groupe d'allumettes avec le groupe d'emplacement des allumettes.
Au bout de 3 tours, si elles ne sont pas en place, je fais un trace avant d'essayer de les replacer:
trace: {{_initialX_1}} {{_initialY_1}} {{_initialX_2}} {{_initialY_2}} {{_initialX_3}} {{_initialY_3}} {{_initialX_4}} {{_initialY_4}}
Et ça me donne:
info #40149 : 300 347 177 326 undefined undefined undefined undefined

Je suis sortie de mon jeu et je l'ai relancé en me disant que la modification n'avait pas été prise en compte, mais ça n'a rien changé.

Hors ligne

#8 07-06-2020 08:30:59

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

Il y a quand même quelque chose que j'ai du mal à comprendre. J'ai 10 allumettes dans le groupe 49508, et 10 zones de clic d'emplacements des allumettes après déplacement (ça pourrait être plus ou moins, c'est un hasard que ce soit égal) dans le groupe 49477.
Quand je déplace une allumette avec la combinaison utiliser 49508 sur 49477, je la pose sur un emplacement que j'ajuste avec:
modifier:1:x:{{_initialX_2}}
modifier:1:y:{{_initialY_2}}
Ça marche très bien.
Ça veut dire que les 3 fois où je fais ce déplacement, {{_initialX_2}} n'a qu'une valeur, celle de l'objet combiné: 2.
Comment l'instruction:
modifier:49508:{{_initialX_2}} ou
modifier:49508:{{_initialX_3}} ou
modifier:49508:{{_initialX_4}}
aurait plus d'une valeur dans sa partie droite, puisque ce n'est que la valeur d'UN objet, même dans vos explications ?
Puisque Marie a réussi avec _1, c'est que mon approche n'est pas bonne, mais je ne vois pas comment faire pour traiter ce retour en groupe.
Mais c'est juste pour que ce soit plus transposable, allumette par allumette c'est très faisable.

Hors ligne

#9 07-06-2020 16:52:09

jawa
Admin

Re : Objets dans Groupe d'objets

eh ben vous m'en donnez du travail !
je n'avais pas publié la modification du moteur avec l'id générique 4, c'est fait, est ce que les allumettes retrouvent leur place ?

J'ai créé ce petit jeu pour tester tout ça, il faut juste glisser les grenouilles sur un des 3 nénuphars. Tous les 3 mouvements, ou en cliquant sur le banc, les 3 grenouilles reviennent à leur position d’origine, avec le même effet utilisant l'id 4 dan sun script unique.
[url]https://jawa.fr/standalone/3443/index.html[/url]

Ca ressemble à votre cas pratique ! Je ferai un petit tuto sur les id génériques dés que je trouverai un peu de temps.

Attention les id génériques sont directement liés au contexte (déclencheur d'interaction, type d'effet) dans lesquels ils sont utilisés. Il est normal qu'ils ne soient pas toujours disponibles, l'id 4 ne fonctionne que dans l'effet modifier par exemple.

Egalement, tous les effets ne fonctionnent pas avec des groupes, seulement ceux pour lesquels ça a du sens et qui sont synchrones (modifier, transférer..). Dans ce cas, il faut considérer au niveau de l'exécution que  "effet:<id groupe>" est remplacé par une série d'appels
"
effet:<1er objet du groupe>
effet:<2nd objet du groupe>
effet:<3eme objet du groupe> ...
"

Z

#10 07-06-2020 17:14:47

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

Merveilleux, les allumettes reviennent illico presto !
Merci beaucoup de tout ce temps passé.
Je vais maintenant aller voir le petit jeu flambant neuf.

Hors ligne

#11 07-06-2020 17:26:54

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

Ça y est, j'ai déplacé les grenouilles, c'est effectivement le même principe. Et pour un petit jeu de démonstration, il y a tout ce qu'il faut, bruitage compris !

Je pense avoir compris le fonctionnement de la série d'appels, ainsi que les _1, _2, et _4. Par contre j'ai du mal avec le _3, le tuto ne sera pas de trop ...

Hors ligne

#12 09-06-2020 20:36:14

jawa
Admin

Re : Objets dans Groupe d'objets

l'erreur est réparée !
Et voici le tuto, un peu "à l'arrache" comme disent les jeunes, j'ai cru à un moment que j'y arriverais pas
[url]https://youtu.be/2pgYF-z1S50[/url]
un bon exemple d'une interaction combinant un groupe avec un autre groupe et l'utilité des id génériques en pareil cas.

J'en ai profité pour ajouter un petit casse tête : il ne s'agit pas que de déposer les crapauds sur n'importe quel nénuphar, chaque crapaud a des desiderata particulières en matière de nénuphar... il faut trouver une combinaison qui les satisferont tous (un principe facilement re-déclinable dans l'importe quel jeu).

Z

#13 10-06-2020 08:48:43

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

Bonne surprise ce matin: un nouveau tuto !
L'annonce est peut-être un peu confidentielle au fin fond de cette conversation, ne faudrait-il pas en rédiger une dédiée et l'épingler ?
Ce tuto clarifie bien les identifiants (sauf le 3, non utilisé !). En plus je me suis aperçue que bêtement je n'utilisais les custom qu'en lecture, alors que les remplir en cours de jeu peut bien faciliter les choses. C'est pour ça qu'une explication complète sur un mini jeu est fort utile: on voit bien la façon de procéder.
Une petite erreur qui ne change visiblement rien au résultat: dans le script de vérif du jeu, la 3ème condition reprend l'id de la 2ème condition.
Merci.

Hors ligne

#14 10-06-2020 12:23:10

jawa
Admin

Re : Objets dans Groupe d'objets

Bien vu, ça marchait dans le test que j'ai fait mais c'était un coup de bol, dans un autre cas ça aurait donné un faux positif.

Alors l'id générique 3 :

Il faut bien comprendre que les identifiants génériques sont interprétés de manière contextuelle et donc dans 2 contextes différents un id générique peut renvoyer des valeurs différentes. Il y a a 3 niveaux de contexte d'exécution : la chaîne d'interaction > qui contient des interactions > qui contiennent des effets

(Une chaîne d'interactions c'est  plus issue interactions s'exécutent derrière une seule action du joueur, cad quand un objet en actionne un autre (typiquement le cas des scripts) qui potentiellement en appel encore un autre et ainsi de suite).

- l'id 1 correspond à l'objet portant la première interaction de la chaîne, c'est à dire celui sur lequel le joueur a cliqué. il aura la même valeur pour toutes les interactions de la chaîne
- l'id 2 correspond à l'objet combiné dans la 1ere interaction de la chaîne, le cas échéant

- l'id 3 correspond à l'objet portant l'interaction en cours d'exécution dans la chaîne. Il aura donc un valeur différente dans chaque interaction d e la chaîne. Dans la 1ere interaction de la chaîne, il a la même valeur que l'ID 1 puisque c'est la 1ere interaction déclenchée par le joueur, mais pas dans les suivantes.

- l'id 4 correspond à l'objet manipulé par l'effet en cours, il aura donc une valeur potentiellement différente dans chaque effets, ou pour chaque membre du groupe si on fait un effet de groupe

Un cas test pour mieux comprendre :
Vous créez 2 personnes, Marcel et René :
interaction sur Marcel

dialogue:3:l'objet cliqué est {{_nom_1}} et moi je suis {{_nom_3}}
actionner:<id rené>

interaction sur rené

dialogue:3:l'objet cliqué est {{_nom_1}} et moi je suis {{_nom_3}}

-> exactement le même effet de dialogue sur les 2

Si on clique sur Marcel on va donc lancer la chaîne d’interactions "actionner marcel" > "actionner rené", et ce qu'on va voir à l'écran sera :
- marcel dit "l'objet cliqué est marcel et moi je suis Marcel" (dans la 1ere interaction de la chaîne 1 = marcel =  3)
- René dit "l'objet cliqué est marcel et moi je suis rené" (dans la seconde inter de la châine, 1= marcel / 3= rené)

Si on clique directement sur René, on a une chaîne mono interaction, dans la 1ere et seule inter id 1= id 3 = rené, le dialogue sera donc
- René dit "l'objet cliqué est rené et moi je suis rené"


Un piège du coup à éviter avec l'id 1, si vous aviez mis l'effet de dialogue avec l'id générique 1 au lieu du 3, ça aurait été toujours l'objet porteur de la 1ere inetraction (marcel) qui aurait parlé :

dialogue:1:l'objet cliqué est {{_nom_1}} et moi je suis {{_nom_3}}
...

- Marcel dit "l'objet cliqué est marcel et moi je suis Marcel" (dans la 1ere interaction de la chaîne 1 = marcel =  3)
- [b]Marcel[/b] dit "l'objet cliqué est marcel et moi je suis rené


Dernier points à noter :
- l'effet copier effets ne crée pas une chaîne d'interaction, donc n'altère pas le contexte, c'est comme vous aviez vraiment copié à la main les effets de l'interaction source a l'endroit du copierEffets.

Enfin , plutôt que les chiffres 1,2, 3 , et 4 a partir de maintenant vous pouvez utiliser des mots clés un peu plus évocateurs :
_nom_1 = _nom_TRIGGERED
_nom_2 = _nom_COMBINED
_nom_3 = _nom_CURRENT
_nom_4 = _nom_SELF

je vais mettre ça dans le manuel ! 'espère que ça sera plus clair.

#15 10-06-2020 14:36:43

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

Merci beaucoup pour ces explications: je profite de cours particuliers ! Je comprends mieux même si ça reste compliqué, et ça tombe bien je butais sur un problème où j'ai un début de résolution.
J'ai enterré hache, arc, flèche et allumettes, et je suis maintenant sur un xylophone avec 7 lamelles qui sont dans le groupe des lames. Chaque lamelle déclenche au clic une note qui doit s'envoler.
Je butais parce que la note est reliée à la lamelle par son id qui est dans le customA de la lamelle. Mais après qu'elle se soit envolée, je voulais qu'elle revienne inactive à sa position initiale, mais ce n'était pas un objet combiné. Je mettais tout ça dans l'interaction de la lamelle, et l'instruction:
modifier:{{Variable}}:x:{{_initialX_Variable}}
où Variable était égale à l'id de la note
ne marche pas, elle est indéfinie.
J'ai donc maintenant décomposé mon interaction en mettant l'envol au clic de la note (ce qui n'a jamais lieu réellement en fait), et j'ai corrigé l'instruction en:
modifier:3:x:{{_initialX_3}}
Donc l'interaction du clic sur la lamelle appelle l'interaction du clic de la note avec:
actionner:Id interactionNote
Et la note qui est d'idGénérique 3 est revenue de son envol pour pouvoir recommencer.
Je vais peaufiner ça pour que toutes les notes s'envolent et reviennent avec sûrement des copierEffets.

Je ne suis pas sûre d'avoir été très claire...

Hors ligne

#16 10-06-2020 17:14:44

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

J'ai effectivement mis copierEffets de ma première interaction de Note1 sur Note2, Note3, etc...

Dans l'interaction du clic de la lamelle, si je fais:
actionner:Id interactionNote avec l'Id de Note3 par exemple, ça marche

Si à la place, je mets:
actionner:{{Variable}} avec variable qui contient l'Id de la note à actionner, ça me met une erreur en disant que l'id de l'objet doit être numérique ou une variable. Si j'enlève les accolades, c'est pareil.

Pourtant, si je mets:
condition:Variable=50347
actionner:50347
stop
condition:fin

ça marche, mais je dois le faire 7 fois.

Hors ligne

#17 11-06-2020 18:27:06

jawa
Admin

Re : Objets dans Groupe d'objets

Il est désormais possible d'utiliser une variable avec l'effet "actionner", le cas ne s'était jamais présenté mais ça a du sens.

Pour le reste, les questions d'algorithme, je suis désolé mais je n'ai vraiment pas le temps en ce moment d'aller explorer les méandres de vos jeux pour défricher les cas tests.
En cas de bug avéré il faut vraiment tester à fond pour le confirmer, et essayer de me le reproduire dans un petit jeu test à côté ou on peut le déclencher en un clic.

Z

#18 12-06-2020 06:28:41

Catmaya
Membre
Inscription : 14-04-2020

Re : Objets dans Groupe d'objets

Merci pour l'évolution.

Hors ligne

Pied de page des forums