J'ai codé un petit jeu en java et j'essaie maintenant de l'incorporer à une page html au moyen d'un JApplet.
Le jeu semble fonctionner mais le JPanel contenu dans mon JApplet ne s'affiche pas correctement.
Je n'arrive pas à l'afficher d'une autre taille que 200*200 alors qu'il devrait être en 400*400.
Voici le code, je sais qu'il y a d'autres moyens plus adaptés pour faire plus simplement ce mini-jeu mais je suis parti la dessus et j'y reste.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Date;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Rectangle extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private int largeur[] = new int[5];
private int hauteur[] = new int[5];
private int posX[] = new int[5];
private int posY[] = new int[5];
private int posXinit[] = new int[5];
private int posYinit[] = new int[5];
boolean clique = false;
public Rectangle() {
for(int i =0; i<largeur.length; i++)
{
this.largeur[i] = 30;
this.hauteur[i] = 30;
this.posX[i] = 40;
this.posY[i] = 80;
this.posXinit[i] = this.posX[i];
this.posYinit[i] = this.posY[i];
}
this.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getX() >= getPosX(4) && arg0.getX() <= getPosX(4)+getLargeur(4) && arg0.getY() >= getPosY(4) && arg0.getY() <= getPosY(4)+getHauteur(4)) {
if(!clique) {
Th t = new Th();
t.start();
clique = true;
}
}
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
});
this.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
setPosX(e.getX()-getLargeur(4)/2, 4);
setPosY(e.getY()-getHauteur(4)/2, 4);
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
});
}
public Rectangle(int largeur[], int hauteur[], int posX[], int posY[]) {
for(int i=0; i<this.largeur.length; i++) {
this.largeur[i] = largeur[i];
this.hauteur[i] = hauteur[i];
this.posX[i] = posX[i];
this.posY[i] = posY[i];
this.posXinit[i] = this.posX[i];
this.posYinit[i] = this.posY[i];
this.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getX() >= getPosX(4) && arg0.getX() <= getPosX(4)+getLargeur(4) && arg0.getY() >= getPosY(4) && arg0.getY() <= getPosY(4)+getHauteur(4)) {
if(!clique) {
Th t = new Th();
t.start();
clique = true;
}
}
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
});
this.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
setPosX(e.getX()-getLargeur(4)/2, 4);
setPosY(e.getY()-getHauteur(4)/2, 4);
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
});
}
}
public int getLargeur(int i) {
return this.largeur[i];
}
public int getHauteur(int i) {
return this.hauteur[i];
}
public int getPosX(int i) {
return this.posX[i];
}
public int getPosY(int i) {
return this.posY[i];
}
public int getPosInitX(int i) {
return this.posXinit[i];
}
public int getPosInitY(int i) {
return this.posYinit[i];
}
public void setLargeur(int largeur, int i) {
this.largeur[i] = largeur;
}
public void setHauteur(int hauteur, int i) {
this.hauteur[i] = hauteur;
}
public void setDimension(int largeur, int hauteur, int i) {
this.largeur[i] = largeur;
this.hauteur[i] = hauteur;
}
public void setPosX(int posX, int i) {
this.posX[i] = posX;
}
public void setPosY(int posY, int i) {
this.posY[i] = posY;
}
public void setCoord(int posX, int posY, int i) {
this.posX[i] = posX;
this.posY[i] = posY;
}
public void paintComponent(Graphics g) {
g.setColor(Color.white);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.GREEN);
for(int i=0; i<largeur.length; i++) {
if(i==largeur.length-1)
g.setColor(Color.RED);
g.fillRect(posX[i], posY[i], largeur[i], hauteur[i]);
}
}
class Th extends Thread implements MouseMotionListener {
private int pas = 10;
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent e) {
posX[4] = e.getX()-largeur[4]/2;
posY[4] = e.getY()-hauteur[4]/2;
}
private boolean continuer() {
for(int i=0; i<largeur.length-1;i++) {
if(posX[4]<=0 || posX[4]+largeur[4] >= getWidth() || posY[4]+hauteur[4] >= getHeight() || posY[4] <= 0) {
return false;
}
if(((posX[4]+largeur[4] >= posX[i]) && (posX[4] <= posX[i]+largeur[i])) && ((posY[4] >= posY[i] && posY[4] <= posY[i]+hauteur[i]) || (posY[4]+hauteur[4] >= posY[i] && posY[4]+hauteur[4] <= posY[i]+hauteur[i]))) {
return false;
}
if(((posY[4]+hauteur[4] >= posY[i]) && (posY[4] <= posY[i]+hauteur[i])) && ((posX[4] >= posX[i] && posX[4] <= posX[i] +largeur[i]) || (posX[4]+largeur[4] >= posX[i] && posX[4]+largeur[4] <= posX[i]+largeur[i]))) {
return false;
}
}
return true;
}
public void run() {
boolean backX[] = {true, false, true, false};
boolean backY[] = {false, true, false, true};
Date debut = new Date();
Timer timer = createTimer();
timer.start();
while(continuer()) {
for(int i=0; i<largeur.length-1; i++) {
if(getPosX(i) < 1)
backX[i] = true;
else if(getPosX(i) > getWidth() - largeur[i])
backX[i] = false;
if(getPosY(i) < 1)
backY[i] = true;
else if(getPosY(i) > getHeight() - hauteur[i])
backY[i] = false;
if(backX[i])
setPosX(getPosX(i)+1, i);
else
setPosX(getPosX(i)-1, i);
if(backY[i])
setPosY(getPosY(i)+1, i);
else
setPosY(getPosY(i)-1, i);
repaint();
}
try {
Thread.sleep(pas);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Date fin = new Date();
JOptionPane.showMessageDialog(null, "Temps total : " +(fin.getTime() - debut.getTime())/1000 + "." + (fin.getTime() - debut.getTime())%1000 +"s");
clique = false;
for(int i=0; i<5;i++) {
setPosX(getPosInitX(i), i);
setPosY(getPosInitY(i), i);
repaint();
}
}
private Timer createTimer() {
ActionListener action = new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(pas>1) {
pas--;
}
}
};
return new Timer(3000, action);
}
}
}
import java.awt.BorderLayout;
import javax.swing.JApplet;
public class Fenetre extends JApplet {
/**
*
*/
private static final long serialVersionUID = 1L;
private Rectangle re;
public void init() {
//this.setTitle("Jeu du carré rouge");
this.setSize(400, 400);
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//this.setLocationRelativeTo(null);
int largeur[] = {100, 40, 60, 50, 50};
int hauteur[] = {40, 60, 50, 45, 50};
int posX[] = {10, this.getWidth()-2*40, 10, this.getWidth()-2*50, (this.getWidth()-50)/2};
int posY[] = {10, 10, this.getHeight()-2*50, this.getHeight()-2*45, (this.getHeight()-50)/2};
this.getContentPane().add(new Rectangle(largeur, hauteur, posX, posY), BorderLayout.CENTER);
//initMenu();
this.setVisible(true);
}
}
Voilà ce que ça donne chez moi, et ce que ça devrait donner
× 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.