Ajouter un commentaire

Niroken

Lol j'ai regardé ton soucis et j'ai trouvé la solution :
Ca m'a pris un peu la tête mais le problème est tt bête :)

Je vais illustrer ca par un exemple :
A ton initialisation tu as par exemple
Trait[0] (x:10, y:10, taille:30)
Trait[1] (x:10, y:15, taille:20)
Trait[2] (x:10, y:20, taille:50)

Ensuite tu tries tes éléments par taille donc tu as
Trait[0] (x:10, y:15, taille:20)
Trait[1] (x:10, y:10, taille:30)
Trait[2] (x:10, y:20, taille:50)

Le truk c'est que quand tu vas afficher Trait[0] en premier
ben il sera tjr affiché en position verticale 15 et non en 10
comme il devrait l'être normalement.

Une résolution:

import java.awt.Color; 
import java.awt.Graphics; 

public class Trait 
{ 
	public int taille;

	public Trait(int aTaille) 
	{    
		taille = aTaille; 
	} 
    
	public void dessiner (Graphics g, int coordX, int coordY) 
	{ 
		g.setColor(Color.blue);
		g.drawLine(coordX, coordY, (coordX +taille), coordY);
    } 
}

import java.applet.*; 
import java.awt.*; 

public class Rect extends Applet implements Runnable 
{ 
	private Thread t;                  //création d'un thread t 
	private Trait tab[];               //création d'un tableau tab de type Traie 
    
	public Rect()                     //constructeur 
	{    
		tab = new Trait[10] ;            //initialisation du tableau tab de Traie de taille 10 
		t = new Thread(this); 
		
		for(int i = 0;i < 10; i++)                     //on génére 10 traits 
		{    
			int taille = (int) (Math.random() * 400 +1);   //pour la taille aléatoire d'un traie 
			tab[i]= new Trait(taille);    
		} 
		
		t.start(); 
	} 

	public void paint (Graphics g) 
	{    
		setSize(500, 200);                                    //taille de l'applet 
		g.drawRect(10,10,getSize().width - 20 ,getSize().height - 20);   //pour dessiner un rectangle 
	   
		for(int i = 0; i < 10; i++)                     //pour les 10 traits du tableau tab 
		{ 
			tab[i].dessiner(g, 10, 10 + (i * 5));               //on dessine un trait 
		} 
	} 

	public void triselection()                  //tri 
	{ 
		int i,j,m; 

		for(i=0;i<(tab.length-1);i++) 
		{ 
		 m = i; 
		 for(j=i+1;j<tab.length;j++) 
			if(tab[j].taille < tab[m].taille) 
			   m = j; 
		 if (m != i) 
			{ Trait c = tab[i]; 
			  tab[i] = tab[m]; 
			   tab[m] = c; 
			} 
		  
		} 
	} 

	public void run() 
	{    
		triselection();               //lance le tri sélection 
		repaint();                  //permet de réactualiser l'applet 
	} 
} 

Bonne chance,
Niroken

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 L     PPPP   EEEE   SSS   V     V 
L P P E S V V
L PPPP EEE SSS V V
L P E S V V
LLLL P EEEE SSSS V