Un mini-jeu "ClickOnTheYellowSquare" qui montre comment faire une petite animation 2D avec un JPanel (+ comment dessiner des éléments). La source montre aussi comment utiliser le MouseEvent et le MouseListener : le jeu va compter le nombre de clics effectués à gauche, à droite et sur le carré jaune.
Un carré rouge est dessiné au centre de la moitié gauche et un rond bleu est dessiné au centre de la moitié droite. Une ligne est tracée à la moitié pour séparer les 2.
De plus, une classe "EcouteClavier" va écouter le clavier et sitôt que le "mot magique" est tapé (ici, 'javafr'), une Jdialog s'ouvre en affichant un message.
J'ai codé cette source pour moi-même apprendre comment utiliser l'objet Graphic et Graphic2D.
Dans la classe Panneau, on peut ajouter des Carre.
Attention, si vous mettez beaucoup de carrés, cela risque de "lagger", d'avoir des ralentissements.
Source / Exemple :
package jeu;
import java.util.ArrayList;
import javax.swing.JFrame;
public class Fenetre extends JFrame {
Panneau pan = new Panneau();
public Fenetre(int longueur, int largeur){
this.setTitle("Click On The Yellow Square");
this.setSize(longueur, largeur);
// se positionne au centre
this.setLocationRelativeTo(null);
// Ferme-toi lorsqu'on clique sur "Fermer" !
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//On prévient notre JFrame que ce sera notre JPanel qui sera son contentPane
this.setContentPane(pan);
addKeyListener(new EcouteClavier());
// this.setAlwaysOnTop(true);
this.pack();
this.setDefaultLookAndFeelDecorated(true);
this.setExtendedState(this.MAXIMIZED_BOTH);
this.setVisible(true);
go();
}
private void go(){
ArrayList list = pan.getListeCarres();
Object[] tmp = list.toArray();
while(true){
for(int i=0;i<tmp.length;i++)
{
Carre c = (Carre) tmp[i];
int x = c.getPosX(), y = c.getPosY();
//Si la coordonnée x est inférieure à 1, on avance
if(x < 1) c.setBackX(false);
//Si la coordonnée x est supérieure à la taille du Panneau
//moins la taille du carre, on recule
if(x > pan.getWidth()- c.getLargeur()) c.setBackX(true);
//idem pour l'axe Y
if(y < 1) c.setBackY(false);
if(y > pan.getHeight()-c.getHauteur()) c.setBackY(true);
//Si on avance, on incrémente la coordonnée
if(!c.getBackX())
c.setPosX(++x);
//Sinon, on décrémente
else
c.setPosX(--x);
//Idem pour l'axe Y
if(!c.getBackY())
c.setPosY(++y);
else
c.setPosY(--y);
} // fin du for
try {
Thread.sleep(15);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//On redessine notre Panneau
pan.repaint();
} // fin du while
}
}
Conclusion :
Une petite source assez bête mais qui montre une utilisation simple des Graphic, Graphic2D, MouseListener et KeyListener.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.