AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Cartes Pokémon : la prochaine extension Pokémon sera EV6.5 Fable ...
Voir le deal

 

 [Résolu] Comparer valeurs entre les instances

Aller en bas 
2 participants
AuteurMessage
chopsuey
Utilisateur confirmé: Rang ***
chopsuey


Messages : 523
Localisation : saint etienne
Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...

[Résolu] Comparer valeurs entre les instances Empty
MessageSujet: [Résolu] Comparer valeurs entre les instances   [Résolu] Comparer valeurs entre les instances EmptyDim 13 Avr 2014 - 1:41

Salut, je bloque depuis bien une heure là dessus.
Je voudrais connaitre le x le plus petit de toute les instances du même objet.

Pour ça j'enregistre les id dans une liste et je teste dans une boucle imbriqué dans une autre chaque valeur contre chaque valeur.

n1=0
for(i=0;i<instance_number(obj_col);i+=1)
{
totalxm=0
n2=0
   for(i=0;i<instance_number(obj_col);i+=1)
   {
   id_col1=ds_list_find_value(global.list_col,n1)
   id_col2=ds_list_find_value(global.list_col,n2)
       if id_col1.x<=id_col2.x
       {totalxm+=1}
       if totalxm==instance_number(obj_col)
       {xm=id_col1.x;break}
       n2+=1
   }
n1+=1
}

totalxm comptabilise le nombre de fois où x est plus petit ou égal au autres. Si totalxm atteint le nombre d'instance, normalement ça veut dire que ce x est bien le plus petit.  Il semblerait que totalxm ne soit jamais = au nombre d'instances car xm reste inconnue dans le debug.

Je préfèrerais si possible que quelqu'un trouve l'erreur dans ma boucle au lieu de me proposer une autre technique  happy1 .

ps. samylebonois abstiens toi de me répondre une réponse aléatoire comme tu sais si bien le faire.

_________________
Spoiler:
Revenir en haut Aller en bas
Bast
Administrateur
Bast


Messages : 20021
Localisation : Alsace

[Résolu] Comparer valeurs entre les instances Empty
MessageSujet: Re: [Résolu] Comparer valeurs entre les instances   [Résolu] Comparer valeurs entre les instances EmptyDim 13 Avr 2014 - 12:43

J'ai un peu de mal à saisir ce que tu as essayé de faire avec ton code. Pourquoi mettre une boucle dans une autre alors que les deux utilisent la même variable i ?

Ça ne va pas répondre à ta question de la manière dont tu voulais, mais il y a une méthode très simple pour trouver une valeur minimum parmi les instances d'un objet:
Code:
global.MinX = 9999;
with Object global.MinX = min(global.MinX,x);

_________________
[Résolu] Comparer valeurs entre les instances Sigico10
Revenir en haut Aller en bas
http://www.lecbna.org/
chopsuey
Utilisateur confirmé: Rang ***
chopsuey


Messages : 523
Localisation : saint etienne
Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...

[Résolu] Comparer valeurs entre les instances Empty
MessageSujet: Re: [Résolu] Comparer valeurs entre les instances   [Résolu] Comparer valeurs entre les instances EmptyDim 13 Avr 2014 - 13:47

Merci bast mais j'ai besoin de calculer cette valeur en continu pas de façon ponctuel.

Si je n'ai pas les deux même variables d'itération le jeu freez.
Mais effectivement c'est pas logique d'utiliser i pour les deux boucles.
Ma 1er boucle teste id_col1.n qui est comparé dans l'autre boucle avec id_col2.n2 si cette comparaison ne donne aucun résultat, la 1er boucle recommence une itération pour id_col1.n (en ajoutant 1 à n) jusqu'à ce que la 2eme boucle finisse par trouver le x qui est plus petit que tous les autres. (c'est pas très clair comme explication j'ai l'impression  Oups! )

_________________
Spoiler:
Revenir en haut Aller en bas
chopsuey
Utilisateur confirmé: Rang ***
chopsuey


Messages : 523
Localisation : saint etienne
Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...

[Résolu] Comparer valeurs entre les instances Empty
MessageSujet: Re: [Résolu] Comparer valeurs entre les instances   [Résolu] Comparer valeurs entre les instances EmptyDim 13 Avr 2014 - 14:14

Haa c'est bon j'ai trouvé  awesome 
J'avais oublié de remplacer une des variables d'itération...
Merci bast c'était bien ça le problème.

_________________
Spoiler:
Revenir en haut Aller en bas
Bast
Administrateur
Bast


Messages : 20021
Localisation : Alsace

[Résolu] Comparer valeurs entre les instances Empty
MessageSujet: Re: [Résolu] Comparer valeurs entre les instances   [Résolu] Comparer valeurs entre les instances EmptyDim 13 Avr 2014 - 15:20

J'ai passé une dizaine de minutes à essayer de comprendre ton code, et effectivement ça marche pour peu que les deux boucles utilisent des variables différentes, mais ça reste inutilement compliqué. Tu stockes l'ensemble des IDs d'instances dans une ds_list, lances une boucle pour tester si l'ID 0 est inférieur ou égal à l'ID 0, puis 1, puis 2, tout en comptant avec totalxm le nombre de fois ou cette comparaison retourne un true, en ne retenant ensuite l'ID 0 que si totalxm est égal au nombre d'instances, ce qui ne peut être le cas que si l'ID 0 a été testé inférieur à tous les autres. Si ce n'est pas le cas, alors tu relances la boucle en comparant cette fois-ci l'ID 1 à l'ID 0, puis 1, puis 2.. Et ainsi de suite.

C'est fonctionnel mais très alambiqué. Inutile de stocker les IDs d'instances dans une liste et de parcourir celle-ci avec des boucles: with le fait déjà automatiquement. Il suffit alors d'écrire quelque-chose dans ce style (j'ai repris tes noms de variables):

Code:
xm = 9999;
with obj_col
{
    if x < other.xm other.xm = x;
}

Qui peut être simplifié avec la fonction min():

Code:
xm = 9999;
with obj_col
{
    other.xm = min(x,other.xm);
}

Ce qui est donc que je t'ai donné dans mon message précédent.

_________________
[Résolu] Comparer valeurs entre les instances Sigico10
Revenir en haut Aller en bas
http://www.lecbna.org/
chopsuey
Utilisateur confirmé: Rang ***
chopsuey


Messages : 523
Localisation : saint etienne
Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...

[Résolu] Comparer valeurs entre les instances Empty
MessageSujet: Re: [Résolu] Comparer valeurs entre les instances   [Résolu] Comparer valeurs entre les instances EmptyDim 13 Avr 2014 - 21:21

Bon du coup effectivement je me suis bien compliqué la vie.
Je n'utilisais pas other par ce que dans la doc il est écrit ça:
"other: L'autre instance concernée dans un événement de collision"
Donc j'ai toujours crus que c'était pas vraiment utile, mais apparemment ça ne sert pas qu'à ça.

_________________
Spoiler:
Revenir en haut Aller en bas
Contenu sponsorisé





[Résolu] Comparer valeurs entre les instances Empty
MessageSujet: Re: [Résolu] Comparer valeurs entre les instances   [Résolu] Comparer valeurs entre les instances Empty

Revenir en haut Aller en bas
 
[Résolu] Comparer valeurs entre les instances
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] classer des valeurs
» [Résolu] Mettre plusieurs valeurs pour une fonction
» Variable entre value et value [résolu]
» [RESOLU] variables entre objets
» Multiplication entre variables... [résolu]

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: