| Script pour trier un liste | |
|
+5PhoenixD Super-Mouton master47 M@d_Doc arthuro 9 participants |
Auteur | Message |
---|
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Script pour trier un liste Jeu 3 Jan 2008 - 13:53 | |
| Bonjour a tous voici un script pour trier un tableau dans le bonne ordre vous pouvez soit -trié une liste de nombre (par ordre croissant) -trié une liste de mots (par ordre alphabétique) au début il faut définir un tableau, sous cette forme - Code:
-
tableau[0]=15 tableau[1]=61 tableau[2]=894 tableau[3]=56 tableau[4]=15 tableau[5]=156 tableau[6]=26 tableau[7]=1 tableau[8]=5987 tableau[9]=12 tableau[10]=2 tableau[11]=3 tableau[12]=89 et ensuite executer le script avec comme argument le nombre totale de case au tableau (ici 12!) ex tri(12)
voici le script: - Code:
-
{ i = 0; /* Indice de répétition du tri */ j = 0; /* Variable de boucle */ tmp = 0; /* Variable de stockage temporaire */ en_desordre = true; /* Booléen marquant l'arrêt du tri si le tableau est ordonné */ x=mouse_x y=mouse_y
/* Boucle de répétition du tri et le test qui arrête le tri dès que le tableau est ordonné */ for(i = 0 ; (i < argument0) and en_desordre; i+=1) { /* Supposons le tableau ordonné */ en_desordre = false; /* Vérification des éléments des places j et j-1 */ for(j = 1 ; j < argument0-i ; j+=1) { /* Si les 2 éléments sont mal triés */ if( tableau[j] < tableau[j-1]) { /* Inversion des 2 éléments */ tmp = tableau[j-1]; tableau[j-1] = tableau[j]; tableau[j] = tmp; /* Le tableau n'est toujours pas trié */ en_desordre = true; } } }
}
} je suis désolé mais j'ai pas put mettre un deuxième argument ou on précisait le nom du tableau. donc on ne peut travailler seulement avec un tableau nommé tableau. |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: Script pour trier un liste Jeu 3 Jan 2008 - 13:58 | |
| sympa! J'ai encore un peu nrélféchi sur le problème de l'argment tableau.... Si quelqu'un savait comment faire des pointeurs en gml Hohoho... |
|
| |
master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| Sujet: Re: Script pour trier un liste Jeu 3 Jan 2008 - 14:24 | |
| Rah ! Tu sais que je travaillais exactement sur le même script ce matin ! Alors la :gniah:
saauf que pour trier des nom moi j'utilise les valeurs ascii du premier caractère de chaque nom |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: Script pour trier un liste Jeu 3 Jan 2008 - 14:35 | |
| Moi a la base, c'était juste pour des nombres, j'ai tester avec des mot et sa marchait . |
|
| |
master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| Sujet: Re: Script pour trier un liste Jeu 3 Jan 2008 - 16:05 | |
| ah ..
mais pour les nombre, tu as aussi ds_list_sort() |
|
| |
Super-Mouton *Excellent utilisateur*
Messages : 4916 Localisation : Cyberworld Projet Actuel :
| Sujet: Re: Script pour trier un liste Jeu 3 Jan 2008 - 17:24 | |
| pour l'argument du tableau, au début du script tu pourrais faire quelque chose du genre var max; max = argument0; var nom; nom = argument1; Et après tu remplace tableau par "nom", argument0 avec max dans le script (Je sais pas si ça marcherait vu qu'avec directement argument ça marchait pas mais qui sait..) |
|
| |
PhoenixD Utilisateur confirmé: Rang **
Messages : 344 Localisation : Bonne question! Projet Actuel : Kingdom Hearts :: Animaniac
| Sujet: Re: Script pour trier un liste Jeu 3 Jan 2008 - 20:52 | |
| Ah merci! J'en avais bien besoin. |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: Script pour trier un liste Jeu 3 Jan 2008 - 21:54 | |
| - Citation :
- ah ..
mais pour les nombre, tu as aussi ds_list_sort() Ha, je savait pas. Et supermouton, j'ai essayer mille fois, une variable tableau en argument sa marche pas du tous je crois que sa marche dans les autre language puisque c'est une fonction en C que j'ai écrit en GML. |
|
| |
Blizter Banni(e)
Messages : 2002
| Sujet: Re: Script pour trier un liste Mar 8 Jan 2008 - 19:42 | |
| Sympa mais y'a déjà une fonction dans game maker lorsque tu travaille avec ds_list. |
|
| |
edi9999 Utilisateur confirmé: Rang *****
Messages : 2480 Localisation : France Projet Actuel : theatre flashy
| Sujet: Re: Script pour trier un liste Mar 8 Jan 2008 - 21:18 | |
| Et en plus on peut faire plus simple avec un algorithme de tri quick |
|
| |
zebdal Utilisateur confirmé: Rang *****
Messages : 2874 Localisation : Chez Vanilla Projet Actuel : Shrapnel
Kanon
Sengoku Rance Online
Vanilla H
| Sujet: Re: Script pour trier un liste Lun 28 Juil 2008 - 2:25 | |
| je remonte le topic pour savoir une chose: est ce qu'il est possible de faire de la récursivité avec le GML? car si oui, il y a un outil beaucoup plus rapide et efficace pour trier: le trifusion: http://fr.wikipedia.org/wiki/Tri_fusionsi vous ne comprenez pas, je peux vous expliquer. |
|
| |
edi9999 Utilisateur confirmé: Rang *****
Messages : 2480 Localisation : France Projet Actuel : theatre flashy
| Sujet: Re: Script pour trier un liste Lun 28 Juil 2008 - 10:38 | |
| C'est un bon algorithme, meme un des meilleurs connu a ce jour je crois. Et on peut bien sur utiliser de la recursivite, mais c'est plutot lent. |
|
| |
master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| Sujet: Re: Script pour trier un liste Lun 28 Juil 2008 - 12:12 | |
| Sous GM, je ne pense pas qu'utiliser la Trifusion sera plus rapide en effet. |
|
| |
zebdal Utilisateur confirmé: Rang *****
Messages : 2874 Localisation : Chez Vanilla Projet Actuel : Shrapnel
Kanon
Sengoku Rance Online
Vanilla H
| Sujet: Re: Script pour trier un liste Lun 28 Juil 2008 - 13:34 | |
| - Citation :
- Et on peut bien sur utiliser de la recursivite, mais c'est plutot lent.
si ca fait ralentir le système, c'est sur que ca sera plus lent. c'est vrai que le gml a l'air d'être beaucoup moins efficace que du C a ce niveau là. |
|
| |
Soulaï Nouveau
Messages : 2
| Sujet: Re: Script pour trier un liste Sam 20 Déc 2008 - 17:39 | |
| Merci mille fois !!! Je bloquais pour gérer mon système d'affichage au niveau de la profondeur mais grâce à ce petit algorithme, j'ai enfin réussi à faire une gestion automatique pour tous mes objets. Pour ceux que ça intéresse et qui font un jeu en 2D isométrique : si vous voulez gérer facilement l'affichage de tous vos objets en fonction de la position verticale de l'objet, il faut commencer par créer un parent qui regroupe tous les objets. Ensuite, vous mettez un événement step dans ce parent qui exécute le code suivant : - Code:
-
//Cette boucle regroupe toutes les instances des objets dans un tableau. t=0; while ( t < instance_count ) { tableau[t] = instance_find(all,t); t+=1; }
i = 0; /* Indice de répétition du tri */ j = 0; /* Variable de boucle */ tmp = 0; /* Variable de stockage temporaire */ en_desordre = true; /* Booléen marquant l'arrêt du tri si le tableau est ordonné */
/* Boucle de répétition du tri et le test qui arrête le tri dès que le tableau est ordonné */ for(i = 0 ; (i < instance_count) and en_desordre; i+=1) { /* Supposons le tableau ordonné */ en_desordre = false; /* Vérification des éléments des places j et j-1 */ for(j = 1 ; j < instance_count-i ; j+=1) { /* Si les 2 éléments sont mal triés */ /* Compare les deux bordures du bas des objets */ if( (tableau[j].y + tableau[j].sprite_height) > (tableau[j-1].y + tableau[j-1].sprite_height)) { /* Inversion des 2 éléments */ tmp = tableau[j-1]; tableau[j-1] = tableau[j]; tableau[j] = tmp; /* Le tableau n'est toujours pas trié */ en_desordre = true; } } }
t=0; /* Ordonne les profondeurs de tous les objets dans l'ordre croissant des variables y des instances */ while ( t < instance_count ) { tableau[t].depth = t; t+=1;
}
Merci encore ! |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: Script pour trier un liste Dim 21 Déc 2008 - 11:50 | |
| sinon... - Code:
-
depth=-y dans step suffit Hohoho |
|
| |
Soulaï Nouveau
Messages : 2
| Sujet: Re: Script pour trier un liste Lun 22 Déc 2008 - 17:58 | |
| Ou comment dégoûter quelqu'un ? :nah: Merci pour cette solution plus simple !
depth=-y-sprite_height pour être plus précis |
|
| |
Contenu sponsorisé
| Sujet: Re: Script pour trier un liste | |
| |
|
| |
| Script pour trier un liste | |
|