Déplacement en Diagonale en JAVA

Fermé
pipleton Messages postés 23 Date d'inscription vendredi 21 janvier 2011 Statut Membre Dernière intervention 15 juin 2012 - 25 janv. 2011 à 14:11
 swed - 25 janv. 2011 à 15:41
Bonjour,

Je voudrais faire bouger un rond d'un point x(5,105) vers un autre point y(100,200). Pour cela je veux utiliser les Thread et le double buffer.

J'ai le code ci dessous. Cependant, je n'obtiens pas le résultat en diagonale voulu.
Quelqu'un peut il m'aidé pour obtenir le résultat voulu?

Merci d'avance

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

public class Dame extends Applet implements Runnable
{
private Thread tAnimation;
private int xPos;
private int yPos;
private Image EcranVirtuel;
private Graphics gEcranVirtuel;

public void init()
{
EcranVirtuel = createImage (this.size().width, this.size().height);
gEcranVirtuel = EcranVirtuel.getGraphics();
}

public void start(){

if(tAnimation == null){
tAnimation = new Thread (this);
tAnimation.start();
}
}

public void stop()
{
if(tAnimation != null)
{
tAnimation.stop();
tAnimation = null;
}
}

public void run(){
setBackground (Color.blue);
for (xPos = 5; xPos < 105; xPos +=4 )
{
for (yPos =; yPos < 105; yPos +=4 )
{
repaint();
try {
Thread.sleep(100) ;
}
catch (InterruptedException e)
{
}
}
}
}

public void paint (Graphics g){
gEcranVirtuel.setColor(Color.black);
gEcranVirtuel.fillRect(0, 0, 100, 100);
gEcranVirtuel.setColor(Color.cyan);
gEcranVirtuel.fillRect(100, 0, 100, 100);
gEcranVirtuel.setColor(Color.red);
gEcranVirtuel.fillOval(xPos, yPos, 90, 90);
g.drawImage(EcranVirtuel, 0, 0, this);
}
}



A voir également:

1 réponse

Bonjour,

Je n'ai pas lu ton code. Je n'ai d'ailleurs pas compris pourquoi tu le postes...

Ici, ce que tu cherches est un algorithme, qui est totalement indépendant du langage de programmation.

Pour déplacer ton rond correctement d'un point A à un point B ;
Il faut déterminer l'équation de la droite A;B à partir des coordonnées des points (maths niveau collège).

Ensuite, à l'aide de cette équation ;
- pour chaque x entre xA et xB, calculer le y.
- OU pour chaque y entre yA et yB, calculer le x.
(solution à choisir en fonction de l'orientation de la droite pour avoir plus ou moins de précision).

Cordialement, M.
2