AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [Résolu] ds_list dans un script.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
keïtchi
Utilisateur confirmé: Rang **
avatar

Messages : 366
Localisation : Don't Follow me, I'm lost too!

MessageSujet: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 17:10

J'utilise des ds_list dans mes scripts quand je veux retourner plusieurs valeurs,
mais je me pose la question suivante:
Quand on crée une ds_list dans un script, à la fin de celui ci,
la ds_list sera t'elle automatiquement détruite?
Je ne peut pas la supprimé avant la fin du script vus que je la return.
Et je voudrais éviter de rajouté une nouvelle dl_list qui bouffe de la mémoire
à chaque fois que j'appel un script.

_________________
Mon Projet:


Dernière édition par keïtchi le Mer 13 Nov 2013 - 20:27, édité 1 fois
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 17:18

Nan mais tu peux rajouter au début de ta fonction la suppression de la dernière list utilisée, je sais pas comment t'as implémenté ton truc, mais ca te permettrait d'avoir qu'une seule ds_list d'ouverte, et tu la supprimerais définitivement dans le game end.

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
keïtchi
Utilisateur confirmé: Rang **
avatar

Messages : 366
Localisation : Don't Follow me, I'm lost too!

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 17:40

Pour par exemple Result=ds_list_create();
tu ferais:
Result=ds_list_create();
ds_list_clear(Result);?

En faite, ça vas être quoi le comportement de la ds_list Result si je la recrée à chaque fois que j''appel le script?
Va t'elle écraser les valeurs qu'elle contenait?
Va t'elle recrée une autre ds_list "local" du même nom?
Va t'elle ignoré tout simplement l'instruction?

_________________
Mon Projet:
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 17:47

Bah je pense que tu devrais faire un truc du genre :
Code:

if(variable_global_exists("list")) ds_list_destroy(global.list);
global.list=ds_list_create();
// tes opérations...
return global.list;
Bon j'ai pas testé et ca m'étonnerait que ca marche du premier coup, mais au niveau de la logique, c'est à peu près ca ^^

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
keïtchi
Utilisateur confirmé: Rang **
avatar

Messages : 366
Localisation : Don't Follow me, I'm lost too!

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 17:49

sous GMS ça marche pas variable_global_exists. T-T
mais j'ai compris ton idée, tu crée une variable global pour chaque list que tu return dans un script,
ça veux donc dire que chaqu'une des variables créent dans un script reste local
et donc le script les recréera autant de fois qu'il est appelé?

_________________
Mon Projet:


Dernière édition par keïtchi le Mer 13 Nov 2013 - 17:54, édité 1 fois
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 17:52

C'est bien ce que je pensais, bah alors tu vire la condition, et tu met directement ds_list_destroy(global.list);
Faut juste que tu créé une list avec cette variable au début, pour qu'elle soit initialisée...
Mais en fait après réflexion je me demande si ia pas plus simple... >< Ce que tu disais avant, c'est pas con, t'as qu'à faire un clear et la réutiliser tant que t'en as besoin, sans la recréer, en plus ca devrait être plus rapide... Suffit juste que tu la créée au début et que tu la supprime à la fin...

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
keïtchi
Utilisateur confirmé: Rang **
avatar

Messages : 366
Localisation : Don't Follow me, I'm lost too!

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 18:11

Y a un truc pas logique, je l'ai réaliser en discutant avec toi, je m'explique:
Si la ds_list crée dans un script est local, alors, quand ce script return,
toutes les variables qu'il contient son reset ou détruite non?
Donc la ds_list aussi, est la recrée à chaque appel n'est plus un problème.

Si à l'inverse les variables crée dans un script reste après le return
c'est que le système de script est vraiment mal fichu... x)
Ca voudrais dire que si un script est lancé en même temps
par 2 instances, les valeurs des variable de la première exécution
du script pourrais intérferer avec les valeurs de la seconde.

_________________
Mon Projet:
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 18:17

En vrai deux script peuvent pas être lancé en même temps avec GM, ia pas de multhi-threading ; et ca peut pas arriver avec un autre langage non plus, parce que les variables qui peuvent être accédées par deux threads sont 'protégées' (genre synchronized sur les fonctions en java).
Sinon pour répondre à ta question, les variable sont locales à l'objet appelant le script, sauf si tu les déclares au début de ton script avec var ; dans ce cas elles sont supprimées.
Code:
var cette_variable_va_etre_supprimee, celle_ci_aussi;
mais_pas_moi=0;

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
keïtchi
Utilisateur confirmé: Rang **
avatar

Messages : 366
Localisation : Don't Follow me, I'm lost too!

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 18:44

Ok, donc je crée mes variables avec var, puis je leurs assigne une valeurs,
je fait mon calcul, et quand je return la valeurs de mon script, toutes les variables seront supprimées
exemple:
for (i=1; i<5; i+=1){var CheckRunCost[i];} (ça marche comme ça avec un tableau?)
var Result;
Result=ds_list_create();
for (i=1; i<5; i+=1){
if (Une condition){CheckRunCost[i]=UneValeur;}}


ça marche aussi pour les objet?
si je crée mes variables avec var dans create,
et que j'y assigne des grid, ds_list etc,
elles seront supprimé automatiquement en même temps que l'instance qui les contient?
Si c'est ça, en dehors des variable local de la classe de mon objet,
j'vais crée toutes mes variables comme ça. :p

_________________
Mon Projet:


Dernière édition par keïtchi le Mer 13 Nov 2013 - 18:49, édité 1 fois
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 18:47

Nan mais var c'est que dans les scripts à ma connaissance. Mais bon, j'ai jamais beaucoup utilisé ca donc le mieux que tu puisse faire c'est tester par toi même ^^

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
keïtchi
Utilisateur confirmé: Rang **
avatar

Messages : 366
Localisation : Don't Follow me, I'm lost too!

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 18:58

Comment je peut faire pour savoir si la mémoire alloué à une variable local d'un objet à était libéré
après la suppression de ce dernier?
Je veux faire un jeu bien écrit et performant, mais je ne sais pas comment tester les performances.
Donc, j'essaye  de comprendre la logique de game maker,
mais, c'est vrai que le problème de fond,
c'est que je sais pas comment mesurer la mémoire alloué et utiliser par tel ou tel fonction, boucle etc.
Je ne peut pas tester non plus les fuite de mémoires,
c'est ce qui me fait le plus peur d'ailleurs,
plus elle sont petite plus c'est vicieux, et ça a était la raison de ce post. =)

_________________
Mon Projet:
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
avatar

Messages : 895

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 19:47

Déjà que c'est assez dur de gérer la mémoire sous GM manuellement normalement, alors sur GM:S je te dis pas xD
Surtout avec global_variable_exists() qui a été retiré ( Sans raison, on peut vraiment pas vérifier si une variable n'existe pas en C++? o_o . Si tu me dis 'ah mais non c'est une global', je crois en fait que global est un objet qui contient tout Yum!). Et puis jeu rapide et optimisé en GM... Tu es sur que tu voulais dire GM? mrgreen2

_________________
‎<‎Cysteine‎>‎ nON mais la touche maj s'active/se désactive toute seule
‎<‎Cysteine‎>‎ et a du mal à réponDRE QUANd j'appuie dessus
‎<‎Cysteine‎>‎ et je l'ai démont2? IL Ny a rien DEDANs
Revenir en haut Aller en bas
keïtchi
Utilisateur confirmé: Rang **
avatar

Messages : 366
Localisation : Don't Follow me, I'm lost too!

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 20:04

Tu as raison, au plus ça vas au plus je comprend que gérer la mémoire et gms ça vas pas de paire,
mais j'voudrais limité la casse autant que possible, et pas me retrouver avec un jeu sympa, mais tros gourmand en ressource.
Je crois que les fonctions on était retirées car la compilation est différente dans gms (pas sur).
Mais pour en revenir au sujet de base, apparemment, on ne peut pas utiliser var pour des tableau.

Comme la dis Térence68 quand un script est appelé il défini ses variable comme étant des variable local de l'objet qui l'a appeler
alors il suffi de crée directement la ds_list dans l'objet qui appel le script, sans la rendre global, et de la clear après chaque calcul.
Je pense que c'est la meilleur solution.

PS: Testé et approuvé, ça fonctionne belle est bien. =)
Thx all.

_________________
Mon Projet:
Revenir en haut Aller en bas
GrandeLangue
Bonne participation
avatar

Messages : 77
Localisation : Lille
Projet Actuel : Faire des maths

MessageSujet: Re: [Résolu] ds_list dans un script.   Mer 13 Nov 2013 - 22:25

keïtchi a écrit:
Mais pour en revenir au sujet de base, apparemment, on ne peut pas utiliser var pour des tableau.
Certes, et les tableaux sont un peu pourris dans GM...

Sauf que toi tu utilises GMS ! Et il se trouve qu'ils ont amélioré les tableaux :
tu peux faire myArray = 0 à la fin de ton script pour libérer la mémoire allouée à myArray.
http://csanyk.com/rants/2013/05/latest-gamemaker-studio-update-improves-gml-arrays-implementation/

_________________
Un superbe jeu de plateforme où vous pouvez contrôler le temps ici : TimeBoy

Pour maîtriser les pistons dans Minecraft : http://www.youtube.com/MindcraftMax
Project Spark est mort, vive Project Spark ! Top 25 des créations qui ont été réalisées avec ce moteur de création de jeu depuis sa sortie, avant que les serveurs n'aient été arrêtés : https://www.youtube.com/watch?v=nPenVqIcFgc
Revenir en haut Aller en bas
keïtchi
Utilisateur confirmé: Rang **
avatar

Messages : 366
Localisation : Don't Follow me, I'm lost too!

MessageSujet: Re: [Résolu] ds_list dans un script.   Jeu 14 Nov 2013 - 8:22

Génial, merci GrandeLangue!
J'peut même connaitre la longueur de mon tableau! *-*



_________________
Mon Projet:
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: [Résolu] ds_list dans un script.   

Revenir en haut Aller en bas
 
[Résolu] ds_list dans un script.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Index dans filiatus et médias
» [résolu] Bug dans Programme Arbre monopage
» [résolu] Comment récupèrer mes données enregistrées dans Hérédis 10 ?
» Investir dans l'agriculture bio.
» mort tragique d'un pompier talantais dans le var

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: