AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez
 

 Script pour trier un liste

Aller en bas 
AuteurMessage
arthuro
Utilisateur confirmé: Rang ****
arthuro

Messages : 1441
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

Script pour trier un liste Empty
MessageSujet: Script pour trier un liste   Script pour trier un liste EmptyJeu 3 Jan 2008 - 12: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.
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc

Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyJeu 3 Jan 2008 - 12: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...

_________________
Script pour trier un liste Control_commentTous les icones de gm utilisables sur le cbna ICI Script pour trier un liste Main1_change_sprite
Revenir en haut Aller en bas
http://www.lecbna.org
master47
Utilisateur confirmé: Rang *****
master47

Messages : 2368
Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyJeu 3 Jan 2008 - 13: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

_________________
Suivez la timeline ! The PacWars Timeline
C# .NET, Web & Sound Design.
---
Oldies: http://livegallery.lescigales.org/
Lawl :
Spoiler:
 
Revenir en haut Aller en bas
http://theperfectpattern.tumblr.com
arthuro
Utilisateur confirmé: Rang ****
arthuro

Messages : 1441
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyJeu 3 Jan 2008 - 13:35

Moi a la base, c'était juste pour des nombres, j'ai tester avec des mot et sa marchait gnii .
Revenir en haut Aller en bas
master47
Utilisateur confirmé: Rang *****
master47

Messages : 2368
Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyJeu 3 Jan 2008 - 15:05

ah ..

mais pour les nombre, tu as aussi ds_list_sort()

_________________
Suivez la timeline ! The PacWars Timeline
C# .NET, Web & Sound Design.
---
Oldies: http://livegallery.lescigales.org/
Lawl :
Spoiler:
 
Revenir en haut Aller en bas
http://theperfectpattern.tumblr.com
Super-Mouton
*Excellent utilisateur*
Super-Mouton

Messages : 4913
Localisation : Québec

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyJeu 3 Jan 2008 - 16: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..)

_________________
Hey là tabarnak lâche ma sig sacha >=|
Script pour trier un liste Balrogko6
Script pour trier un liste Supermouton
Revenir en haut Aller en bas
PhoenixD
Utilisateur confirmé: Rang **
PhoenixD

Messages : 344
Localisation : Bonne question!
Projet Actuel : Kingdom Hearts :: Animaniac

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyJeu 3 Jan 2008 - 19:52

Ah merci! J'en avais bien besoin.
Revenir en haut Aller en bas
http://www.zikost.com
arthuro
Utilisateur confirmé: Rang ****
arthuro

Messages : 1441
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyJeu 3 Jan 2008 - 20: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.
Revenir en haut Aller en bas
Blizter
Banni(e)


Messages : 2002

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyMar 8 Jan 2008 - 18:42

Sympa mais y'a déjà une fonction dans game maker lorsque tu travaille avec ds_list.
Revenir en haut Aller en bas
edi9999
Utilisateur confirmé: Rang *****
edi9999

Messages : 2480
Localisation : France
Projet Actuel : theatre flashy

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyMar 8 Jan 2008 - 20:18

Et en plus on peut faire plus simple avec un algorithme de tri quick

_________________
Mes tutos sur le site: -Tutoriel débutant- Tutoriel intermédiaire
Venez sur http://gameplay.c.la pour des tutos sur mon site.
Utilisez des hébérgeurs gratuits et sans temps d'attente!:
http://willhostforfood.com/
Revenir en haut Aller en bas
http://gameplay.c.la/
zebdal
Utilisateur confirmé: Rang *****
zebdal

Messages : 2874
Localisation : Chez Vanilla
Projet Actuel : Shrapnel
Kanon
Sengoku Rance Online
Vanilla H

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyLun 28 Juil 2008 - 0: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_fusion
si vous ne comprenez pas, je peux vous expliquer.
Revenir en haut Aller en bas
http://zebdal.free.fr
edi9999
Utilisateur confirmé: Rang *****
edi9999

Messages : 2480
Localisation : France
Projet Actuel : theatre flashy

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyLun 28 Juil 2008 - 8: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.

_________________
Mes tutos sur le site: -Tutoriel débutant- Tutoriel intermédiaire
Venez sur http://gameplay.c.la pour des tutos sur mon site.
Utilisez des hébérgeurs gratuits et sans temps d'attente!:
http://willhostforfood.com/
Revenir en haut Aller en bas
http://gameplay.c.la/
master47
Utilisateur confirmé: Rang *****
master47

Messages : 2368
Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyLun 28 Juil 2008 - 10:12

Sous GM, je ne pense pas qu'utiliser la Trifusion sera plus rapide en effet.

_________________
Suivez la timeline ! The PacWars Timeline
C# .NET, Web & Sound Design.
---
Oldies: http://livegallery.lescigales.org/
Lawl :
Spoiler:
 
Revenir en haut Aller en bas
http://theperfectpattern.tumblr.com
zebdal
Utilisateur confirmé: Rang *****
zebdal

Messages : 2874
Localisation : Chez Vanilla
Projet Actuel : Shrapnel
Kanon
Sengoku Rance Online
Vanilla H

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyLun 28 Juil 2008 - 11: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à.
Revenir en haut Aller en bas
http://zebdal.free.fr
Soulaï
Nouveau


Messages : 2

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptySam 20 Déc 2008 - 16: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 !
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc

Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyDim 21 Déc 2008 - 10:50

sinon...
Code:
depth=-y
dans step suffit Hohoho

_________________
Script pour trier un liste Control_commentTous les icones de gm utilisables sur le cbna ICI Script pour trier un liste Main1_change_sprite
Revenir en haut Aller en bas
http://www.lecbna.org
Soulaï
Nouveau


Messages : 2

Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste EmptyLun 22 Déc 2008 - 16:58

Ou comment dégoûter quelqu'un ? :nah: Merci pour cette solution plus simple !

depth=-y-sprite_height pour être plus précis
Revenir en haut Aller en bas
Contenu sponsorisé




Script pour trier un liste Empty
MessageSujet: Re: Script pour trier un liste   Script pour trier un liste Empty

Revenir en haut Aller en bas
 
Script pour trier un liste
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Quel support pour la liste d'attente ?
» [Anomalie notée] Trier moi mes petits enfants !
» Sites de jeux pour s'amuser en gagnant des cadeaux
» Configurer le pare-feu pour PG avec BitDefender Internet Security V10 ou V11
» Matériel pour école d'art.

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