Rafraichissement graphique d'un robot en simulation

cs_SuperSteph Messages postés 5 Date d'inscription dimanche 21 juillet 2002 Statut Membre Dernière intervention 23 juin 2003 - 4 juin 2003 à 16:49
kazary Messages postés 2 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007 - 10 déc. 2007 à 22:07
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

mrshardax Messages postés 47 Date d'inscription jeudi 6 février 2003 Statut Membre Dernière intervention 22 mars 2006 2
4 juin 2003 à 19:35
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.
0
cs_SuperSteph Messages postés 5 Date d'inscription dimanche 21 juillet 2002 Statut Membre Dernière intervention 23 juin 2003
6 juin 2003 à 08:22
On a fait ce que tu m'as dit, et c'est bon.
Merci pour ton aide
0
mrshardax Messages postés 47 Date d'inscription jeudi 6 février 2003 Statut Membre Dernière intervention 22 mars 2006 2
6 juin 2003 à 13:37
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.
0
kazary Messages postés 2 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
10 déc. 2007 à 22:07
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,
0
Rejoignez-nous