1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
| //import java.awt.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class JeuCEP extends javax.swing.JFrame {
// Constructeur
public JeuCEP() {
// Afficher la boite de bienvenue et explications
new Bienvenue(this, true);
setBounds(50,50,470,380); // Positionner et donner une taille à la fenêtre
initComponents(); // Placer et afficher les composants créés depuis le mode Design
listeCartes = new ArrayList<Carte>(); // Créer un tableau d'objets de type Carte
for (int i=0; i < nombreDePhotos; i++){ // Répéter autant de fois qu'il y a de carte: Créer une carte avec tous ses champs
listeCartes.add( new Carte("../Photos/carte"+i+".png", "../Photos/dos.png", i, "Prénom"+i, "Nom"+i, "Département"+i, "Fonction"+i));
}
Collections.shuffle(listeCartes); // Mélanger toutes les photos du dossier de photos
System.out.println(listeCartes.size());
listeCartes.subList((nombreDeCartes/2), listeCartes.size()).clear(); //Prends que les 26 premières et supprime le reste des 74 cartes de la liste
System.out.println(listeCartes.size());
listeCartes.addAll(listeCartes); //Double les mêmes cartes à la liste pour avoir des paires (52 cartes)
System.out.println(listeCartes.size());
Collections.shuffle(listeCartes); //Remélange toutes les cartes
System.out.println(listeCartes.size());
System.out.println();
for (int i=0; i < nombreDeCartes; i++){
System.out.print(i+" "+listeCartes.get(i).getUrlFace()+" ");
System.out.print(listeCartes.get(i).getDepartement()+" ");
System.out.println(listeCartes.get(i).getFonction()+" ");
}
// Afficher les cartes
afficherLesCartesAvecEvt();
}
// Affiche tout le jeu de cartes en y ajoutant un écouteur d'événement
private void afficherLesCartesAvecEvt(){
for (int i=0; i < nombreDeCartes; i++) {
// Placer les cartes dans le Panneau grilleDeCartes
grilleDeCartes.add(listeCartes.get(i));
// Ajouter un écouteur d'événements sur chaque carte de la liste
listeCartes.get(i).addMouseListener(new java.awt.event.MouseAdapter() {
@Override
// Lorsque la carte reçoit l'événement mousReleased
public void mouseReleased(java.awt.event.MouseEvent evt) {
// exécuter la méthode :
carteMouseReleased(evt);
}
});
}
}
// Actions à mener à l'écoute de l'événement mousReleased
private void carteMouseReleased(java.awt.event.MouseEvent evt) {
// Mémoriser la carte cliquée
carteCliquee = (Carte) evt.getSource();
// Si le drapeau aRetourner est vrai, c'est le 3ieme clic
// les cartes doivent être retournées, si elles sont différentes
if(aRetourner){
premiereCarte.tournerVersDos();
secondeCarte.tournerVersDos();
aRetourner = false;
}
// Si c'est le premier clic
if(nombreDeClick ==0){
nombreDeClick = 1;
// Mémoriser la premiereCarte carte et la tourner
premiereCarte = carteCliquee;
premiereCarte.tournerVersFace();
// Supprimer l'écouteur d'evt pour qu'elle ne puisse plus être retournée
premiereCarte.removeMouseListener(premiereCarte.getMouseListeners()[0]);
} else {
// Si c'est le second clic
if (nombreDeClick == 1){
nombreDeClick =0;
// Mémoriser la secondeCarte carte et la tourner
secondeCarte = carteCliquee;
secondeCarte.tournerVersFace();
// Si les cartes sont différentes
if( secondeCarte.getId() != premiereCarte.getId()){
// Mettre le drapeau aRetourner à vrai pour retourner les cartes au prochain clic
aRetourner = true;
// Remettre un écouteur sur la premier carte, pour que l'on puisse cliquer à nouveau dessus
premiereCarte.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseReleased(java.awt.event.MouseEvent evt) {
carteMouseReleased(evt);
}
});
}
else { // Si les cartes sont identiques
// Supprimer l'écouteur d'evt de la secondeCarte carte pour qu'elle ne puisse plus être retournée
secondeCarte.removeMouseListener(secondeCarte.getMouseListeners()[0]);
// Compter le nombre de paires trouvées
nombreDePaires+=2;
// Si le nombre de paires trouvées vaut le nombre de cartes, la partie est finie
// if (nombreDePaires == 4){
if (nombreDePaires == nombreDeCartes){
// Afficher la boite de dialogue pour proposer une nouvelle partie
new Message(this, true);
}
}
}
}
}
// Retourner toutes les cartes
private void retournerToutesLesCartes(){
// Parcourir la liste des cartes et les tourner vers le dos
for (int i=0; i < nombreDeCartes; i++) {
listeCartes.get(i).tournerVersDos();
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
grilleDeCartes = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
grilleDeCartes.setBorder(javax.swing.BorderFactory.createTitledBorder(" Cherchez les paires de cartes identiques"));
grilleDeCartes.setMinimumSize(new java.awt.Dimension(470, 364));
grilleDeCartes.setPreferredSize(new java.awt.Dimension(470, 364));
grilleDeCartes.setLayout(new java.awt.GridLayout(4, 13));
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(grilleDeCartes, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 800, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(grilleDeCartes, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 400, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
/**
* Fonction main appelée au lancement de l'application
* Rend visible la fenêtre au sein de laquelle sont placés les composants créés en mode Design
* @param args
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JeuCEP().setVisible(true);
}
});
}
// Variables globales utilisées par l'application
private List<Carte> listeCartesTemp, listeCartes;
private static final int nombreDeCartes = 52, nombreDePhotos = 100;
Carte carteCliquee, premiereCarte, secondeCarte;
boolean coteFace = false, aRetourner = false;
int nombreDeClick=0;
int nombreDePaires = 0;
// Déclaration de variables créées par NetBeans par l'intermédiaire du mode Design
// Variables declaration - do not modify
private javax.swing.JPanel grilleDeCartes;
// End of variables declaration
} |
Partager