Rafraichissement graphique d'un robot en simulation

Signaler
Messages postés
5
Date d'inscription
dimanche 21 juillet 2002
Statut
Membre
Dernière intervention
23 juin 2003
-
Messages postés
2
Date d'inscription
jeudi 29 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007
-
On est en train de faire un projet qui simule un robot dynamiquement.
On a reussi à faire evoluer le robot par contre on a une "trainéé". On aimerait voir le robot se deplacer sans visualiser ses positions precedentes.

On vous envoie un bout de code esperant que qq'un pourra nous aider.

Cette classe est la classe qui nous permet d'afficher le robot
package ihm;

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

import javax.swing.JFrame;

import Graphics.Robot.RobotGraphic;
import Graphics.Robot.RobotModel;
import Graphics.swing.SwingRenderer;
import Graphics.swing.SwingRobotAttributes;
import Graphics.swing.SwingRobotRenderer;
import Robots.SimulatorEvent;
import Robots.SimulatorListener;

public class RobotView extends View implements SimulatorListener
{
RobotGraphic robotGraphic;

public RobotView(JFrame owner, RobotModel model)
{
super(owner, model);
setupGraphics((RobotModel) model);
}

public RobotView(RobotModel model)
{
super(model);
setupGraphics((RobotModel) model);
}

public RobotModel getRobotModel()
{
return ((RobotModel) getModel());
}

public void setModel(RobotModel model)
{
super.setModel(model);
setupGraphics((RobotModel) model);
}

protected void setupGraphics(RobotModel model)
{
SwingRobotAttributes attributes = new SwingRobotAttributes();
attributes.setColor(Color.green);
attributes.filled();

Rectangle drawArea = new Rectangle(this.getPreferredSize().width,this.getPreferredSize().height);
robotGraphic = new RobotGraphic(drawArea, getRobotModel());
robotGraphic.setSize(30);

SwingRobotRenderer renderer = new SwingRobotRenderer(attributes, robotGraphic);
robotGraphic.setRenderer(renderer);
}

public void paintComponent(Graphics graphics)
{
((SwingRenderer)robotGraphic.getRenderer()).getAttributes().setGraphics(graphics);
robotGraphic.draw();
System.out.println(robotGraphic.getModel());
}

public void update(SimulatorEvent evt)
{
this.paintImmediately(this.getBounds());
}
}


Cette classe est la classe principale
package VectorTest;

import ihm.RobotView;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;

import Graphics.Robot.DefaultRobotModel;
import Robots.RobotPoint;
import Robots.Simulator;
import Value.BoundedValue;

public class GraphicTest extends JFrame
{
private DefaultRobotModel robotModel;
private RobotView robotView;
private Simulator simulator ;

public GraphicTest(String title)
{
super(title);

addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(java.awt.event.WindowEvent evt)
{
System.exit(0);
}
});

//setup robot model
BoundedValue x = new BoundedValue(50, 0, 500);
BoundedValue y = new BoundedValue(50, 0, 500);

robotModel = new DefaultRobotModel(x, y, 2);
RobotPoint robotPoint = new RobotPoint(x.getValue(), y.getValue(), 0);
robotModel.setRobot(robotPoint);

//setup robot view
robotView = new RobotView(robotModel);
robotView.setPreferredSize(new Dimension(500,500));
getContentPane().add(robotView, BorderLayout.NORTH);

//setup and start simulator
simulator = new Simulator(robotPoint);
simulator.addListener(robotView);
}

public void simule()
{
//simulator.simuleCartesian(1, 5, 2, 100, 100);
}

public static void main(String[] args)
{
GraphicTest g = new GraphicTest("robot");
g.show();
g.pack();
g.simule();
}
}


Merci d'avance

Stéph ;)

4 réponses

Messages postés
47
Date d'inscription
jeudi 6 février 2003
Statut
Membre
Dernière intervention
22 mars 2006
2
alors, je ne sais pas si cette methode est cree ou heritee, j ai pas pu trouver bcp de javadoc la ou je suis.

public void paintComponent(Graphics graphics)

Si elle est heritee, verifie la syntaxe ( le plus souvent, c Graphics g) de une, mais surtout, et c valable pour tout les methodes graphiques heritees, n oublie pas d appeler les methodes parentes en tout debut de fonction par un :

super.paintComponent(g) ;

par exemple.
Messages postés
5
Date d'inscription
dimanche 21 juillet 2002
Statut
Membre
Dernière intervention
23 juin 2003

On a fait ce que tu m'as dit, et c'est bon.
Merci pour ton aide
Messages postés
47
Date d'inscription
jeudi 6 février 2003
Statut
Membre
Dernière intervention
22 mars 2006
2
C est un truc a jamais oublier en java quand on utilise l heritage et la surcharge de classe, sinon, c est sur, ca aprt en vrille.

Sur ce, content d avoir pu t aider et bonne continuation pour ton projet.
Messages postés
2
Date d'inscription
jeudi 29 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007

je voudrais faire un programme en java pour deplacer un robot dans un labyrainthe , mais je suis debutant en java, veuillez m'aider ,

merci d'anvance.

kaza,