| [Résolu] Parents et variables des enfants | |
|
|
Auteur | Message |
---|
Liang Pas mal
Messages : 37
| Sujet: [Résolu] Parents et variables des enfants Jeu 24 Mar 2011 - 19:35 | |
| Bonjour, je me remets au GML, après une tentative de passage au C++ (je continuerai quand je trouverai un GUI sympa) Hors donc, j'ai découvert l'énorme potentiel de l'héritage en me penchant sur le C, et j'aimerais l'appliquer à mes projets GM ! J'ai donc fait ce code : - Code:
-
for (i=0;i<instance_number(o_parent);i+=1) { draw_text(32,150+i*60,o_parent.objdistance) } Ainsi, mon objet devrait afficher la variable "objdistance" de chaque instance fille de l'objet o_parent ! Mais ce n'est pas le cas... Pourquoi donc ? Comment arriver à atteindre la variable objdistance de toutes les instances filles de o_parent dans cette boucle ? Merci d'avance, Liang. (Encore une fois, je sens que la solution va être on ne peut plus simple, et pourtant je n'arrive pas à mettre le doigt dessus...)
Dernière édition par Liang le Mer 30 Mar 2011 - 10:03, édité 1 fois |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu] Parents et variables des enfants Jeu 24 Mar 2011 - 19:50 | |
| Moi quand je vois o_parent.objdistance je peut te dire que ça donneras toujours la même chose. J'ai pas trop saisie comment tu t'y prend pour faire ce que tu veux mais a mon avis faire un tour dans la doc du coté des instances ne serais pas une mauvaise idée.
Entre autre voir ça : instance_find(obj,n) instance_id[0..n-1] object_get_parent(ind) |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Résolu] Parents et variables des enfants Jeu 24 Mar 2011 - 20:48 | |
| with() {} _________________ Tous les icones de gm utilisables sur le cbna ICI |
|
| |
Liang Pas mal
Messages : 37
| Sujet: Re: [Résolu] Parents et variables des enfants Sam 26 Mar 2011 - 14:18 | |
| En gros, il faudrait que je stocke l'id de chaque instance des objets enfants lors de leur création ? En fait, mon but est d'arriver à ranger les instances filles dans un tableau, selon leur distance par rapport au héros (dans l'ordre croissant). J'essaie donc de récupérer la variable "objdistance" pour chacune des instances... Je ne peux pas le faire en passant par l'objet parent j'imagine ? Merci Onilink, le fait que j'aie été voir ces précisions sur la doc m'a pas mal aidé par ailleurs Liang |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu] Parents et variables des enfants Sam 26 Mar 2011 - 14:37 | |
| Moi je vois l'algo comme ça :
for(i=0; i<instance_number(child); i+=1) { child_id = instance_find(child, i) ranger_dans_tableau(child_id, child_id.distance_heros) } |
|
| |
Liang Pas mal
Messages : 37
| Sujet: Re: [Résolu] Parents et variables des enfants Sam 26 Mar 2011 - 15:27 | |
| Ca m'épate toujours de voir à quoi on peut arriver quand on connaît parfaitement ses commandes... Toutefois, j'ai toujours quelques questions quant à ce code : - Code:
-
for(i=0; i<instance_number(child); i+=1) Ne vaudrait-il pas mieux mettre "instance_number(parent), vu que j'ai plusieurs objets enfants différents ? - Code:
-
ranger_dans_tableau(child_id, child_id.distance_heros) Ranger_dans_tableau serait un sript écrit auparavant ? Sinon, si c'est le nom du tableau, ne faut-il pas mettre les arguments entre crochets ? Et cette commande ne permet pas de les ranger par ordre croissant, si ? Merci toutefois pour cette réponse concise et efficace ! |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu] Parents et variables des enfants Sam 26 Mar 2011 - 16:09 | |
| Bah c'est une forme algorithmique que je te donne, l'idée du code que tu devrais créer. Évidement ranger_dans_tableau est une fonction a écrire, mais utiliser une ds_map serais très bien aussi.
Dans le cas ou tu a plusieurs child tu peut toujours faire un truc du genre a mon avis :
nb_child = 3 child[0] = obj_1 child[1] = obj_5 child[2] = obj_blabla [...]
for(j=0; j<nb_child; j+=1) for(i=0; i<instance_number(child[j]); i+=1) { child_id = instance_find(child[j], i) ranger_dans_tableau(child_id, child_id.distance_heros) }
Bien sur y a d'autres méthodes j'imagine, mais celle la devrais être très rapide. |
|
| |
Liang Pas mal
Messages : 37
| Sujet: Re: [Résolu] Parents et variables des enfants Sam 26 Mar 2011 - 19:53 | |
| J'avais trouvé la même méthode entre temps, elle marche nickel ! Mais je ne m'en suis servi que pour afficher la distance entre les objets, et je n'arrive pas à trouver comment coder cette fameuse fonction "ranger_dans_tableau". J'ai vu dans l'aide GM un méthode pour récupérer la variable la plus élevée : - Spoiler:
maxid = -1; maxpower = 0; for (i=0; i<instance_count; i+=1) { iii = instance_id[i]; if (iii.object_index == unit) { if (iii.power > maxpower) {maxid = iii; maxpower = iii.power;} } }
Mais comment faire pour récupérer toutes les valeurs et les réarranger dans l'ordre croissant...? Vaut-il mieux utiliser un tableau, une liste ou une map...? Merci d'avance, Liang. |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu] Parents et variables des enfants Sam 26 Mar 2011 - 20:17 | |
| Utilise une map. Ça correspond exactement a ton problème.
Quand tu vas ajouter ds_map_add(id, child_id, child_id.distance) ça va ce mettre dans l'ordre tout seul.
Ensuite tu n'auras qu'a récupérer tes valeurs avec ds_map_find_first(id) (tu récupère avec la premiere key = child_id) et ds_map_find_next(id,key) (tu récupère les valeurs suivantes)
|
|
| |
Liang Pas mal
Messages : 37
| Sujet: Re: [Résolu] Parents et variables des enfants Dim 27 Mar 2011 - 4:46 | |
| Ah Nickel ! Je testerai ça dès que possible, et te tiendrai au courant ! Merci beaucoup Edit : Petite question sur les Maps ! Sont-elles considérées comme "globales" ? Autrement dit, si je crée la map map_name dans un objet, pourrais-je accéder à/modifier cette même map depuis un autre objet en appelant simplement une fonction telle que ds_map_find_value(map_name,key) ? Réponse perso : Non elles ne sont pas globales, il faut y accéder comme ceci : ds_map_find_value(objet_contenant_la_map.map_name,key) |
|
| |
Liang Pas mal
Messages : 37
| Sujet: Re: [Résolu] Parents et variables des enfants Lun 28 Mar 2011 - 0:44 | |
| Ca le fait, mais il ne faut pas mettre l'id en key mais en valeur, et la distance non en valeur mais en key. Dès lors, cela trie en fonction de la distance de l'objet, et non plus de son id ! Et j'ai un petit soucis ! Pour m'entraîner avec les maps, j'ai fait un petit projet rapide... Mais il y a quelque chose que je ne comprends pas... J'ai deux objet, l'un créant une map, l'autre affichant les key et valeurs de cette map. Pour le premier, le générateur de map, j'ai ces codes : create : - Code:
-
map_id=ds_map_create() ds_map_add(map_id,0,50) Appuyer sur entrée : - Code:
-
for (i=0;i<ctrl.maxsize;i+=1) { if !ds_map_exists(object0.map_id,i) ds_map_add(object0.map_id,i,ceil(random(50))) else ds_map_replace(object0.map_id,i,ceil(random(50))) } Un key 0 étant déclaré dès le début, le code devrait juste changer sa valeur ! Or, mes options d'affichage me montrent qu'en plus de changer la valeur de la key 0, ce code génère un autre key 0 avec une autre valeur... Ce qui fait que je me retrouve avec 2 key 0... Pourquoi cela ? Merci d'avance, (et encore merci pour ton aide !! ) Liang. |
|
| |
supmaster004 Utilisateur confirmé: Rang *****
Messages : 2188 Localisation : x=23.256842 y=43.456879 Projet Actuel : Faire des parodies de jeux en 1h
| Sujet: Re: [Résolu] Parents et variables des enfants Lun 28 Mar 2011 - 13:56 | |
| lol j'avais jamais capté que les parents entrainent des enfants en GML ><
ça fait un peu tendancieux comme topic du coup :p |
|
| |
Liang Pas mal
Messages : 37
| Sujet: Re: [Résolu] Parents et variables des enfants Mer 30 Mar 2011 - 10:03 | |
| Ok le sujet est résolu. Le code final se rapproche de très près à celui proposé par Onilink, qui m'a vraiment aidé sur le coup ! - Code:
-
Dans un objet controleur :
for (i=0;i<instance_number(objet_parent);i+=1) { child_id=instance_find(objet_parent,i) // Trouve l'id des instances distance_child=child_id.variable_name // Trouve la variable des instances }
Dans l'objet parent :
variable_name=valeur_voulue.
Pour récupérer ces valeurs, utiliser un tableau ou une Map. J'ai posté un exemple, peut-être pas optimisé, mais qui, à priori, marche : https://cbna.forumactif.com/t10839-exemple-classer-des-objets-selon-leur-distance-a-un-autre |
|
| |
Contenu sponsorisé
| Sujet: Re: [Résolu] Parents et variables des enfants | |
| |
|
| |
| [Résolu] Parents et variables des enfants | |
|