Ajouter un commentaire

Niroken

En fait pour calculer le plus cours chemin ce n'est pas très difficile avec
ton énoncé.

Tu ajoutes à ton objet Carte un membre Itinéraire que tu instancie par défaut dont la signature est:

public class Itineraire {
  Ville mVilleDepart;
  Ville mVilleArrivee;
  List<Ville> mVillesParcourues;

  public Itineraire() {
    mVillesParcourues = new ArrayList<Ville>();
  }
    
  public Itineraire(Ville pVilleDepart, Ville pVilleArrivee) { 
    mVilleDepart = pVilleDepart;
    mVilleArrivee = pVilleArrivee;
    mVillesParcourues = new ArrayList<Ville>(); 
  } 
 
  public void calculeItineraire();

  public void getVilleDepart();

  public void getVilleArrivee();

  public void getVillesParcourues();

  public void setVilleDepart(Ville villeDepart);
	
  public void setVilleArrivee(Ville villeArrivee);
	
  public void setVillesParcourues(List<Ville> villesParcourues);

et fait référence au morceau de code que je t'ai passé qqes posts avant.
NB : Revoir le code de la méthode calculeDistance() je crains qu'il soit érroné.

Tu ajoutes a ton objet Carte une methode :

private void dessineItineraire(Graphics g) {
    	g.setColor(Color.blue);
    	
    	if (mItineraire.getVilleDepart() != null) {
    		g.drawString(
    				mItineraire.getVilleDepart().getNom(), 
    				mItineraire.getVilleDepart().getCoordonnees().x - 12, 
    				mItineraire.getVilleDepart().getCoordonnees().y - 2); 
        	g.fillRect(
        			mItineraire.getVilleDepart().getCoordonnees().x, 
        			mItineraire.getVilleDepart().getCoordonnees().y, 
        			2, 
        			2); 
    	}
    	
    	if (mItineraire.getVilleArrivee() != null) {
    		g.drawString(
    				mItineraire.getVilleArrivee().getNom(), 
    				mItineraire.getVilleArrivee().getCoordonnees().x  - 12, 
    				mItineraire.getVilleArrivee().getCoordonnees().y  - 2); 
        	g.fillRect(
        			mItineraire.getVilleArrivee().getCoordonnees().x, 
        			mItineraire.getVilleArrivee().getCoordonnees().y, 
        			2, 
        			2); 
    	}
    	
    	for (int i = 0; i < mItineraire.getVillesParcourues().size() - 1; i++) {
    		g.drawLine(
    				mItineraire.getVillesParcourues().get(i).getCoordonnees().x, 
    				mItineraire.getVillesParcourues().get(i).getCoordonnees().y, 
    				mItineraire.getVillesParcourues().get(i + 1).getCoordonnees().x, 
    				mItineraire.getVillesParcourues().get(i + 1).getCoordonnees().y);
    	}
    }

Des que tu sélectionnes une ville dans ton comboBox :
- deux cas de figure :
1 c est le comboBox ville de depart
2 c est le comboBox ville d arrivee

  public void itemStateChanged(ItemEvent e) {
		if (e.getSource().equals(mComboBoxVilleDepart)) {
			pcentre.getItineraire().setVilleDepart(#LaVilleSelectionnee#);
		} else if (e.getSource().equals(mComboBoxVilleArrivee)) {
			pcentre.getItineraire().setVilleArrivee(#LaVilleSelectionnee#);
		}
				
		pcentre.updateUi();
	}

Pour finir dès que tu appuies sur le bouton qui permet de lancer le calcul
de l itineraire tu fais :

  public void actionPerformed(ActionEvent e) {
    pcentre.getItineraire().calculeItineraire();
  }

Bonne chance,
Niroken

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 PPPP    GGG    CCC  DDD   TTTTTT 
P P G C D D TT
PPPP G GG C D D TT
P G G C D D TT
P GGG CCC DDD TT