Partage
  • Partager sur Facebook
  • Partager sur Twitter

Parcours de graphes

via JgraphT

    17 février 2012 à 10:20:32

    Bonjour bonjour,

    Aujourd'hui je rencontre quelques difficultés sur l'utilisation de jgrapht.
    Je cherche à creer une map rectangulaire (une matrice de cases)

    Comme dans le futur, je chercherai à faire du plus court chemin, la structure de ma map doit être un graphe.
    Après moult essais (épluchage des vieux cours de fac etc... omg ça commence à faire loin), j'ai opté pour ça lib citée plus haut.

    En ce qui concerne la création du graphe, c parfaitement clair et simple.
    Par contre j'ai du raté un truc en ce qui concerne le parcours de celui-ci.

    En effet pour chaque nœud du graphe, je souhaite exécuter un traitement.
    Notamment un traitement d'affichage graphique.

    Mais là c'est le drame, j'ai beau lire la javadoc et rechercher depuis 2h sur Google Dev.net Sdz et autres. Je ne trouve pas de solution (qui je pense n'est pas bien compliquée. (pour chaque noeud... faire...)

    Voilà pourquoi je sollicite un peu d'aide =)

    Allez un peu de code :
    public class Model
    {
    	private JFrame jFrame;
    	private Carte carte;
    	
    	public Model(JFrame _jFrame)
    	{
    		jFrame = _jFrame;
    		initialize();
    	}
    	
    	public void initialize()
    	{
    		carte = new Carte(this);
    	}
    	
    	public void update()
    	{
    		carte.update();
    	}
    	
    	public void draw(Graphics g) 
    	{
    		carte.draw(g);
    	}
    }
    


    public class Carte
    {
    	private Model model;
    	private UndirectedGraph<Case, DefaultEdge> graph;
    	
    	public Carte(Model _model)
    	{
    		model = _model;
    		initialize();
    	}
    
    	public void initialize()
    	{
    		graph = createCasesGraph();
    	}
    	
    	public void update()
    	{
    
    	}
    	
    	public void draw(Graphics g) 
    	{
    		System.out.println(graph.toString());
    		//**********************************
    		// Pour chaque case du graphe
    		//   case.draw(g);
    		//**********************************		
    	}
    	
    	private static UndirectedGraph<Case, DefaultEdge> createCasesGraph()
    	{
    		UndirectedGraph<Case, DefaultEdge> g =
    			new SimpleGraph<Case, DefaultEdge>(DefaultEdge.class);
    		
    		// Vertex
    		Case v1 = new Case(0,0);
    		Case v2 = new Case(0,1);
    		Case v3 = new Case(1,0);
    		Case v4 = new Case(1,1);
    
    		g.addVertex(v1);
    		g.addVertex(v2);
    		g.addVertex(v3);
    		g.addVertex(v4);
    
    		// Edges
    		g.addEdge(v1, v2);
    		g.addEdge(v1, v3);
    		
    		g.addEdge(v2, v1);
    		g.addEdge(v2, v4);
    		
    		g.addEdge(v3, v1);
    		g.addEdge(v3, v4);
    		
    		g.addEdge(v4, v2);
    		g.addEdge(v4, v3);
    	
    		return g;
    	}
    }
    


    public class Case 
    {
    	private int col;
    	private int row;
    	private int height;
    	private int width;
    
    	public Case()
    	{
    		this(0,0);
    	}
    
    	public Case(int _col, int _row)
    	{
    		col = _col;
    		row = _row;
    		initialize();
    	}
    
    	public void initialize()
    	{
    		height = 50;
    		width = 50;
    	}
    
    	public void update()
    	{
    
    	}
    
    	public void draw(Graphics g)
    	{
    		g.setColor(Color.black);
    		g.fillRect(col * width, row * width, width, height);
    		g.setColor(Color.white);
    		g.drawRect(col * width, row * width, width, height);
    
    		Graphics2D g2 = (Graphics2D) g;
    		FontRenderContext frc = g2.getFontRenderContext();
    		int fontSize = 11;
    		Font f = new Font("Comic Sans MS",Font.BOLD, fontSize);
    
    		String sScore = new String(col + "-" + row);
    		TextLayout tScore = new TextLayout(sScore, f, frc);
    		tScore.draw(g2,col * width, row * height + fontSize);
    	}
    }
    


    Voilà si quelqu'un a une idée, ça m'aiderait bien =)
    • Partager sur Facebook
    • Partager sur Twitter

    Parcours de graphes

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown