Le tri sera top...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Le tri sera top...

Message par Fig »

Bonjours, Désolé pour le jeu de mot préhistorique... :oops:

J'ai un probleme avec le tri d'une matrice et les fonctions sort()

j'ai un tableau du type:
personnage(x,y)
en y j'ai les coordonnées y et en x les coordonnées... x

je veux trier le tableau en fonction des coordonnées y (de la plus petite à la plus grande) et je veux que les coordonnées x se réalignent avec leur correspondantes.

Je me sers de cela pour afficher dans l'ordre de profondeur les sprites.

merci pour vos réponses
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

........
Dernière modification par Backup le mar. 19/août/2014 15:11, modifié 3 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tu peux faire la meme chose avec un tableau
il suffis de recuperer les Y dans un tableau
et les X dans un autre

et tu tri le tableau a 1 dimension des Y en Swapant Aussi sont equivalent X :D

Je viens de reediter mon code pour faire correspondre le numero des personage , pour que tu vois que ce principe s'aplique aussi a leur identité

on swap le Y, donc on swap le X, et on swap l'identité du personnage
pour que tout corresponde :D
Dernière modification par Backup le mer. 01/nov./2006 18:56, modifié 1 fois.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

et tu peux remplacer tout ça

Code : Tout sélectionner

debut:
For i=1 To 10
    A=perso(i)\y
     For o=i+1 To 10
        b=perso(o)\y
         If A>b
             Swap perso(o)\y,perso(i)\y
             Swap perso(o)\x,perso(i)\x
            i=1 : Goto debut
         EndIf
     Next o
Next i 
par ça

Code : Tout sélectionner

SortStructuredArray(perso(), 0, OffsetOf(perso\y), #PB_Sort_Long)
C'est magique PureBasic :)

Assurez vous d'avoir la dernière lib 'sort' en la téléchargeant ici
http://www.purebasic.com/beta/
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

......
Dernière modification par Backup le mar. 19/août/2014 15:12, modifié 1 fois.
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

MERCI

Message par Fig »

Oui, c'est exactement ce que je voulais... Cf eviter un code pure basic bouclé mais utiliser sort... (direct assembleur) parecque sinon vu que j'ai pas loin de 3000 personnages max, ca va trop ralentir.


Merci beaucoup!

Je vais essayer ça.

@+

PS: J'ai la version pour PC ton lien pour la lib, pointe vers deux dossiers Linux et Mac... :?
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Tu peux oublier le lien si tu as téléchargé la version 4.01
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Message par Fig »

OK, merci encore. :10:
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Répondre