Déplacement en Diagonale en JAVA
pipleton
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
swed -
swed -
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);
}
}
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:
- Déplacement en Diagonale en JAVA
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
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.
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.