Pattern MVC pour verification

Pattern MVC pour verification - Java - Programmation

Marsh Posté le 04-12-2013 à 15:40:36    

Bonjour à tous !
 
Je débute et après quelques tutos je fait un exercice pour améliorer et mieux comprendre la logique des structures en Java
 
l'exercice est simple sur la base du jeu Pierre Feuille Ciseaux
 
1)Créer une interface qui permet de choisir pierre feuille ciseaux
2)comparer notre choix a celui de l'ordinateur(Random)
3)afficher l'image du coup jouer a chaque changement imgJ1 vs imgJ2.
4)attribuer 1 point au gagnant  
5)le premier à 5pt gagne 1pt de set
6)le premier a 2pt de set avec 2pt d’écart gagne un point de manche
7)le premier a 2pt de manche gagne le jeu! (fiouuu)
8) a chaque point attribuer l'humeur du joueur (statut image) doit changer
8)statut initial=5, max=10, min=0. (ou initial=0 min=-5 et max=10)
8)celui-ci est égale à nbrAtteindrePoint(5)+scoreJ1-scoreJ2
 
j'ai réalisé l'exercice est je souhaite avoir vos critiques sur la conception du programme, le choix des variable, des I/O image, Pattern MVC, Pattern Observer, objet....... et toutes les chose qui vous dérange dans ce programme.
 
le code :
package Contrôle
Class Bouton :

Code :
  1. package Controle;
  2. import java.awt.Dimension;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.Image;
  6. import java.awt.event.MouseEvent;
  7. import java.awt.event.MouseListener;
  8. import java.io.IOException;
  9. import javax.imageio.ImageIO;
  10. import javax.swing.JButton;
  11.  
  12. public class Bouton extends JButton implements MouseListener {
  13. private String name;
  14. private Image img;
  15. private int number;
  16. public Bouton(String str, int n, String imgJKP,int hight, int width) {
  17.  super(str);
  18.     this.name = str;
  19.     this.setNumber(n);
  20.     this.setPreferredSize(new Dimension(hight, width));
  21.     try {
  22.         img = ImageIO.read(getClass().getResourceAsStream(imgJKP));
  23.       } catch (IOException e) {
  24.         e.printStackTrace();
  25.       }
  26.     this.addMouseListener(this);
  27.    
  28. }
  29. public void paintComponent(Graphics g){
  30.     Graphics2D g2d = (Graphics2D)g;
  31.     g2d.drawImage(img, 0, 0, this);
  32. }
  33. public void mouseClicked(MouseEvent event) {
  34.     //Inutile                   
  35. }
  36. @Override
  37. public void mouseEntered(MouseEvent arg0) {
  38.  // TODO Auto-generated method stub
  39. }
  40. @Override
  41. public void mouseExited(MouseEvent arg0) {
  42.  // TODO Auto-generated method stub
  43. }
  44. @Override
  45. public void mousePressed(MouseEvent arg0) {
  46.  // TODO Auto-generated method stub
  47. }
  48. @Override
  49. public void mouseReleased(MouseEvent arg0) {
  50.  // TODO Auto-generated method stub
  51. }
  52. public int getNumber() {
  53.  return number;
  54. }
  55. public void setNumber(int number) {
  56.  this.number = number;
  57. }


Class JanKenPon

Code :
  1. package Controle;
  2. import vue.Windows;
  3. public class JanKenPon {
  4. public static void main(String[] args) {
  5.  // TODO Auto-generated method stub
  6.  Windows w = new Windows();
  7. }
  8. }


package Metier
Class Coups

Code :
  1. package Metier;
  2. import java.util.ArrayList;
  3. import ObserverCoups.ObservableCoups;
  4. import ObserverCoups.ObservateurCoups;
  5. public class Coups implements ObservableCoups {
  6. protected int jouer = 0;
  7. private ArrayList<ObservateurCoups> listCoupsObservateur = new ArrayList<ObservateurCoups>();
  8. public Coups() {
  9.  this.jouer = 0;
  10. }
  11. public void setCoupJouer(int c) {
  12.  this.jouer =  c;
  13.  this.updateCoupObservateur();
  14. }
  15. public int getCoupJouer() {
  16.  return this.jouer;
  17. }
  18. @Override
  19. public void addCoupObservateur(ObservateurCoups obs) {
  20.  this.listCoupsObservateur.add(obs);
  21. }
  22. @Override
  23. public void delCoupObservateur() {
  24.  this.listCoupsObservateur = new ArrayList<ObservateurCoups>();
  25. }
  26. @Override
  27. public void updateCoupObservateur() {
  28.  for(ObservateurCoups obs : this.listCoupsObservateur )
  29.   obs.updateCoups(this.jouer);
  30. }
  31. }


Class Joueur

Code :
  1. package Metier;
  2. public class Joueur {
  3. // varaible
  4. protected String name;
  5. protected String type;
  6. public Joueur() {
  7.  this.name = "anonyme";
  8.  this.type = "inconnu";
  9. }
  10. public Joueur(String name, String type) {
  11.  this.name = name;
  12.  this.type = type;
  13. }
  14. public String getName() {
  15.  return this.name;
  16. }
  17. public String getType() {
  18.  return this.type;
  19. }
  20. }


Class Partie

Code :
  1. package Metier;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import vue.Windows;
  6. import ObserverPartie.ObservablePartie;
  7. import ObserverPartie.ObservateurPartie;
  8. public class Partie implements ObservablePartie {
  9. // variable
  10. protected int egaliteI = 0;
  11. protected Thread reinitThread;
  12. protected int nbrT;
  13. protected int nbrS;
  14. protected int nbrManche;
  15. protected int nbrMatch;
  16. protected int nbrSE;
  17. protected int nbrJoueur;
  18. protected String comment;
  19. protected Joueur J1;
  20. protected Joueur J2;
  21. protected Score score;
  22. protected Coups coup;
  23. protected Personnage perso;
  24. protected final Map<Joueur, Score> scores;
  25. protected final Map<Joueur, Coups> coups;
  26. protected final Map<Joueur, Personnage> persos;
  27. private ArrayList<ObservateurPartie> listPartieObservateur = new ArrayList<ObservateurPartie>();
  28. public Partie() {
  29.  this.nbrT = 5;
  30.  this.nbrS = 3;
  31.  this.nbrManche = 2;
  32.  this.nbrMatch = 1;
  33.  this.nbrSE = 2;
  34.  this.nbrJoueur = 2;
  35.  this.comment = "Jouer";
  36.  scores = new HashMap<Joueur, Score>();
  37.  getScores().put(J1 = new Joueur("J1","Humain" ), score = new Score(getJ1().getName()));
  38.  getScores().put(J2 = new Joueur("J2","COM" ), score = new Score(getJ2().getName()));
  39.  coups = new HashMap<Joueur, Coups>();
  40.  getCoups().put(J1, coup = new Coups());
  41.  getCoups().put(J2, coup = new Coups());
  42.  persos = new HashMap<Joueur, Personnage>();
  43.  getPersos().put(J1, perso = new Personnage("s_" ));
  44.  getPersos().put(J2, perso = new Personnage("u_" ));
  45. }
  46. public Partie(int nbrT, int nbrS, int nbrManche, int nbrMatch, int nbrSE, String persoJ1, String persoJ2) {
  47.  this.nbrT = nbrT;
  48.  this.nbrS = nbrS;
  49.  this.nbrManche = nbrManche;
  50.  this.nbrMatch = nbrMatch;
  51.  this.nbrSE = nbrSE;
  52.  this.nbrJoueur = 2;
  53.  this.comment = "Jouer";
  54.  scores = new HashMap<Joueur, Score>();
  55.  getScores().put(J1 = new Joueur("J1","Humain" ), score = new Score(getJ1().getName()));
  56.  getScores().put(J2 = new Joueur("J2","COM" ), score = new Score(getJ2().getName()));
  57.  coups = new HashMap<Joueur, Coups>();
  58.  getCoups().put(J1, coup = new Coups());
  59.  getCoups().put(J2, coup = new Coups());
  60.  persos = new HashMap<Joueur, Personnage>();
  61.  getPersos().put(J1, perso = new Personnage(persoJ1));
  62.  getPersos().put(J2, perso = new Personnage(persoJ2));
  63. }
  64. public void action(int coup) {
  65.  int hasard = (int) (1+3*Math.random());
  66.  this.getCoups().get(this.getJ1()).setCoupJouer(coup);
  67.  this.getCoups().get(this.getJ2()).setCoupJouer(hasard);
  68.  compareCoups(coup, hasard);
  69.  reinitThread = new Thread(new ReinitThread());
  70.  reinitThread.start();
  71. }
  72. protected void compareCoups(int coup, int hasard) {
  73.  if(coup == hasard) {
  74.   egalite();
  75.  } else if (coup == 1 && hasard == 2) {
  76.   J1Win();
  77.  } else if (coup == 2 && hasard == 3) {
  78.   J1Win();
  79.  } else if (coup == 3 && hasard == 1) {
  80.   J1Win();
  81.  } else {
  82.   J2Win();
  83.  }
  84.  setStatut();
  85. }
  86. protected void egalite() {
  87.  egaliteI++;
  88.  if (egaliteI <= 1)
  89.   setComment("Egalité !" );
  90.  else if (egaliteI == 2)
  91.   setComment("Woooh "+egaliteI+"eme Egalité !" );
  92.  else if (egaliteI < 5)
  93.   setComment("Enorme "+egaliteI+"eme Egalité !" );
  94.  else if (egaliteI >= 5)
  95.   setComment("Whouuu quel tension ! "+egaliteI+"eme Egalité !" );
  96. }
  97. /// win point
  98. /// humain win
  99. protected void J1Win() {
  100.  this.getScores().get(this.getJ1()).setPoint();
  101.  setComment("Joueur 1 Gagne le Point" );
  102.  if (this.getScores().get(this.getJ1()).getPoint() == this.getNbrT()) {
  103.   // methode set
  104.   Set(this.getJ1(), this.getJ2());
  105.  }
  106. }
  107. // fin humain win
  108. /// COM gagne
  109. protected void J2Win() {
  110.  this.getScores().get(this.getJ2()).setPoint();
  111.  setComment("Joueur 2 Gagne le Point" );
  112.  // test si partie.nbrT pour les points est atteint
  113. }
  114. // fin com gagne
  115. // fin win point
  116. protected void Set(Joueur a, Joueur b) {
  117.  this.getScores().get(a).setSet();
  118.  advantage();
  119.  /// verifie si le score set >= on nombre de set definit par nbrS avec l'ecart de x set
  120.  if (this.getScores().get(a).getSet() >= this.getNbrS()) {
  121.   if (this.getScores().get(a).getAdv() >= this.getNbrSE()) {
  122.    // methode manche
  123.    Manche(a, b);
  124.   }
  125.  }
  126. }
  127. protected void Manche(Joueur a, Joueur b){
  128.  this.getScores().get(a).setManche();
  129.  // si les manche == nbrManche definit
  130.  if (this.getScores().get(a).getManche() == this.getNbrManche()) {
  131.   Match(a, b);
  132.  }
  133. }
  134. protected void Match(Joueur a, Joueur b){
  135.  this.getScores().get(a).setMatch();
  136.  // si les manche == nbrManche definit
  137.  if (this.getScores().get(a).getMatch() == this.getNbrMatch()) {
  138.   Winner(a);
  139.  }
  140. }
  141. protected void Winner(Joueur a) {
  142.  setComment(a.getName()+" Gagne le match !" );
  143. }
  144. protected void advantage() {
  145.  if (this.getScores().get(this.getJ1()).getSet() > this.getScores().get(this.getJ2()).getSet()) {
  146.   this.getScores().get(this.getJ1()).setAdv(this.getScores().get(this.getJ1()).getSet()-this.getScores().get(this.getJ2()).getSet());
  147.  } else {
  148.   this.getScores().get(this.getJ2()).setAdv(this.getScores().get(this.getJ2()).getSet()-this.getScores().get(this.getJ1()).getSet());
  149.  }
  150. }
  151. // controle des score */
  152. /// setstatut perso
  153. protected void setStatut() {
  154.  int J1 = this.getScores().get(this.getJ1()).getPoint();
  155.  int J2 = this.getScores().get(this.getJ2()).getPoint();
  156.  this.getPersos().get(this.getJ1()).setPersoStatut(this.getNbrT()+(J1-J2));
  157.  this.getPersos().get(this.getJ2()).setPersoStatut(this.getNbrT()+(J2-J1));
  158. }
  159. // fin setstatut perso */
  160. public void setComment(String comment) {
  161.  this.comment = comment;
  162.  updatePartieObservateur();
  163. }
  164. public String getComment() {
  165.  return this.comment;
  166. }
  167. public int getNbrT() {
  168.  return this.nbrT;
  169. }
  170. public int getNbrS() {
  171.  return this.nbrS;
  172. }
  173. public int getNbrManche() {
  174.  return this.nbrManche;
  175. }
  176. public int getNbrMatch() {
  177.  return this.nbrMatch;
  178. }
  179. public int getNbrSE() {
  180.  return this.nbrSE;
  181. }
  182. public Joueur getJ2() {
  183.  return J2;
  184. }
  185. public Joueur getJ1() {
  186.  return J1;
  187. }
  188. public Map<Joueur, Score> getScores() {
  189.  return scores;
  190. }
  191. public Map<Joueur, Coups> getCoups() {
  192.  return coups;
  193. }
  194. public Map<Joueur, Personnage> getPersos() {
  195.  return persos;
  196. }
  197. /// reinit des score
  198. protected void reinit() {
  199.  if (getScores().get(getJ2()).getPoint() == getNbrT() || getScores().get(getJ1()).getPoint() == getNbrT()) {
  200.   getScores().get(getJ1()).resetPoint();
  201.   getScores().get(getJ2()).resetPoint();
  202.   // labComment
  203.   setComment("Jouer !" );
  204.   // reinit egalite
  205.   egaliteI = 0;
  206.   //reinit coups jouer
  207.   getCoups().get(getJ1()).setCoupJouer(0);
  208.   getCoups().get(getJ2()).setCoupJouer(0);
  209.   //reinit persos statut
  210.   getPersos().get(getJ1()).setPersoStatut(5);
  211.   getPersos().get(getJ2()).setPersoStatut(5);
  212.  }
  213.  if (getScores().get(getJ1()).getSet() >= getNbrS() || getScores().get(getJ2()).getSet() >= getNbrS()) {
  214.   if (getScores().get(getJ1()).getAdv() >= getNbrSE() || getScores().get(getJ2()).getAdv() >= getNbrSE()) {
  215.    getScores().get(getJ1()).resetSet();
  216.    getScores().get(getJ2()).resetSet();
  217.   }
  218.  }
  219.  if (getScores().get(getJ1()).getManche() == getNbrManche() || getScores().get(getJ2()).getManche() == getNbrManche()) {
  220.   getScores().get(getJ1()).resetManche();
  221.   getScores().get(getJ2()).resetManche();
  222.  }
  223.  if (getScores().get(getJ1()).getMatch() == getNbrMatch() || getScores().get(getJ2()).getMatch() == getNbrMatch()) {
  224.   getScores().get(getJ1()).resetMatch();
  225.   getScores().get(getJ2()).resetMatch();
  226.  }
  227. }
  228. protected class ReinitThread implements Runnable {
  229. @Override
  230.  public void run() {
  231.   if (getScores().get(getJ2()).getPoint() == getNbrT() || getScores().get(getJ1()).getPoint() == getNbrT()) {
  232.    // TODO Auto-generated method stub
  233.    Windows.panBoutonsJeux.setVisible(false);
  234.    try {
  235.     Thread.sleep(3000);
  236.    } catch (InterruptedException e) {
  237.     // TODO Auto-generated catch block
  238.     e.printStackTrace();
  239.    }
  240.    reinit();
  241.    Windows.panBoutonsJeux.setVisible(true);
  242.   }
  243.  }
  244. }
  245. @Override
  246. public void addPartieObservateur(ObservateurPartie obs) {
  247.  // TODO Auto-generated method stub
  248.  this.listPartieObservateur.add(obs);
  249. }
  250. @Override
  251. public void delPartieObservateur() {
  252.  // TODO Auto-generated method stub
  253.  this.listPartieObservateur = new ArrayList<ObservateurPartie>();
  254. }
  255. @Override
  256. public void updatePartieObservateur() {
  257.  // TODO Auto-generated method stub
  258.  for(ObservateurPartie obs : this.listPartieObservateur )
  259.   obs.updatePartie(this.comment);
  260. }
  261. }


Class Personnage

Code :
  1. package Metier;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import Observer.Observable;
  6. import Observer.Observateur;
  7. public class Personnage implements Observable {
  8. protected int profil = 10;
  9. protected int statut = 5;
  10. protected Map<Integer, String> perso;
  11. protected String pathIconPerso = "/";
  12. private ArrayList<Observateur> listPersoObservateur = new ArrayList<Observateur>();
  13. public Personnage(String pathImg) {
  14.  this.profil = 10;
  15.  this.statut = 5;
  16.  perso = new HashMap<Integer, String>();
  17.  for (int i = 0; i<=10; i++) {
  18.   perso.put(i, pathIconPerso+pathImg+i+".png" );
  19.  }
  20. }
  21. public void setPersoStatut(int c) {
  22.  this.statut =  c;
  23.  this.updatePersoObservateur();
  24. }
  25. public int getPersoStatut() {
  26.  return this.statut;
  27. }
  28. public int getPersoProfil() {
  29.  return this.profil;
  30. }
  31. public int getPersoSize() {
  32.  return this.perso.size();
  33. }
  34. public String getPersoIcon() {
  35.  return this.perso.get(this.statut);
  36. }
  37. public String getPersoIcon(int c) {
  38.  return this.perso.get(c);
  39. }
  40. @Override
  41. public void addPersoObservateur(Observateur obs) {
  42.  this.listPersoObservateur.add(obs);
  43. }
  44. @Override
  45. public void delPersoObservateur() {
  46.  this.listPersoObservateur = new ArrayList<Observateur>();
  47. }
  48. @Override
  49. public void updatePersoObservateur() {
  50.  for(Observateur obs : this.listPersoObservateur )
  51.   obs.updatePerso(this.statut);
  52. }
  53. }


Class Score

Code :
  1. package Metier;
  2. import java.util.ArrayList;
  3. import ObserverScores.ObservableScores;
  4. import ObserverScores.ObservateurScores;
  5. public class Score implements ObservableScores {
  6. /// variable de Score
  7. protected String joueurName;
  8. protected int point;
  9. protected int set;
  10. protected int manche;
  11. protected int match;
  12. protected int adv;
  13. private ArrayList<ObservateurScores> listScoreObservateur = new ArrayList<ObservateurScores>();
  14. /// constructeur
  15. public Score(String name) {
  16.  this.joueurName = name;
  17.  this.point = 0;
  18.  this.set = 0;
  19.  this.manche = 0;
  20.  this.match = 0;
  21.  this.adv = 0;
  22. }
  23. public void setPoint() {
  24.  this.point += 1;
  25.  this.updateScoreObservateur();
  26. }
  27. public void setSet() {
  28.  this.set += 1;
  29.  this.updateScoreObservateur();
  30. }
  31. public void setManche() {
  32.  this.manche += 1;
  33.  this.updateScoreObservateur();
  34. }
  35. public void setMatch() {
  36.  this.match += 1;
  37.  this.updateScoreObservateur();
  38. }
  39. public void resetPoint() {
  40.  this.point = 0;
  41.  this.updateScoreObservateur();
  42. }
  43. public void resetSet() {
  44.  this.point = 0;
  45.  this.set = 0;
  46.  this.updateScoreObservateur();
  47. }
  48. public void resetManche() {
  49.  this.point = 0;
  50.  this.set = 0;
  51.  this.manche = 0;
  52.  this.updateScoreObservateur();
  53. }
  54. public void resetMatch() {
  55.  this.point = 0;
  56.  this.set = 0;
  57.  this.manche = 0;
  58.  this.match = 0;
  59.  this.updateScoreObservateur();
  60. }
  61. public int getPoint() {
  62.  return this.point;
  63. }
  64. public int getSet() {
  65.  return this.set;
  66. }
  67. public int getManche() {
  68.  return this.manche;
  69. }
  70. public int getMatch() {
  71.  return this.match;
  72. }
  73. public String getName() {
  74.  return this.joueurName;
  75. }
  76. public void setAdv(int adv) {
  77.  this.adv = adv;
  78. }
  79. public int getAdv() {
  80.  return this.adv;
  81. }
  82. @Override
  83. public void addScoreObservateur(ObservateurScores obs) {
  84.  this.listScoreObservateur.add(obs);
  85. }
  86. @Override
  87. public void delScoreObservateur() {
  88.  this.listScoreObservateur = new ArrayList<ObservateurScores>();
  89. }
  90. @Override
  91. public void updateScoreObservateur() {
  92.  for(ObservateurScores obs : this.listScoreObservateur )
  93.   obs.updateScore(this.point, this.set, this.manche, this.match);
  94. }
  95. }


package Vue
Class Windows

Code :
  1. package vue;
  2. import java.awt.BorderLayout;
  3. import java.awt.CardLayout;
  4. import java.awt.Color;
  5. import java.awt.Dimension;
  6. import java.awt.Font;
  7. import java.awt.GridBagConstraints;
  8. import java.awt.GridBagLayout;
  9. import java.awt.event.ActionEvent;
  10. import java.awt.event.ActionListener;
  11. import javax.swing.ImageIcon;
  12. import javax.swing.JFrame;
  13. import javax.swing.JLabel;
  14. import javax.swing.JPanel;
  15. import javax.swing.SwingConstants;
  16. import Controle.Bouton;
  17. import Metier.Partie;
  18. import Observer.Observateur;
  19. import ObserverCoups.ObservateurCoups;
  20. import ObserverPartie.ObservateurPartie;
  21. import ObserverScores.ObservateurScores;
  22. public class Windows extends JFrame {
  23. protected Partie partie = new Partie(5, 2, 2, 1, 1, "S_", "U_" );
  24. /// Jpanel
  25. protected JPanel panContainer = new JPanel();
  26. protected JPanel panGridBagAction = new JPanel();
  27. protected JPanel panGridBagScore = new JPanel();
  28. protected JPanel panJ1 = new JPanel();
  29. protected JPanel panJ2 = new JPanel();
  30. protected JPanel panPoint = new JPanel();
  31. protected JPanel panSet = new JPanel();
  32. protected JPanel panManche = new JPanel();
  33. protected JPanel panMatch = new JPanel();
  34. protected JPanel panIconJ1 = new JPanel();
  35. protected JPanel panIconJ2 = new JPanel();
  36. protected JPanel panStart = new JPanel();
  37. protected JPanel panComment = new JPanel();
  38. protected JPanel panPersonnage = new JPanel();
  39. protected JPanel panPersoJ1 = new JPanel();
  40. protected JPanel panPersoJ2 = new JPanel();
  41. protected JPanel panCoups = new JPanel();
  42. protected JPanel panCoupsJ1 = new JPanel();
  43. protected JPanel panCoupsJ2 = new JPanel();
  44. protected JPanel panBoutons = new JPanel();
  45. public static JPanel panBoutonsJeux = new JPanel();
  46. protected JPanel panBoutonsOpt = new JPanel();
  47. // CardLayout
  48. protected CardLayout clayPersoJ1;
  49. protected CardLayout clayPersoJ2;
  50. protected CardLayout clayCoupsJ1;
  51. protected CardLayout clayCoupsJ2;
  52. /// JLabel
  53. protected JLabel labJ1 = new JLabel("Joueur 1" );
  54. protected JLabel labJ2 = new JLabel("Joueur 2" );
  55. protected JLabel labPoint = new JLabel("Point" );
  56. protected JLabel labSet = new JLabel("Set" );
  57. protected JLabel labManche = new JLabel("Manche" );
  58. protected JLabel labMatch = new JLabel("Match" );
  59. protected JLabel labPointJ1 = new JLabel("0" );
  60. protected JLabel labSetJ1 = new JLabel("0" );
  61. protected JLabel labMancheJ1 = new JLabel("0" );
  62. protected JLabel labMatchJ1 = new JLabel("0" );
  63. protected JLabel labPointJ2 = new JLabel("0" );
  64. protected JLabel labSetJ2 = new JLabel("0" );
  65. protected JLabel labMancheJ2 = new JLabel("0" );
  66. protected JLabel labMatchJ2 = new JLabel("0" );
  67. protected JLabel labVersus = new JLabel("VS" );
  68. protected JLabel labComment;
  69. protected JLabel picLabCoupJ1;
  70. protected JLabel picLabCoupJ2;
  71. protected JLabel picLabIconJ1;
  72. protected JLabel picLabIconJ2;
  73. protected JLabel picLabSttPersoJ1;
  74. protected JLabel picLabSttPersoJ2;
  75. protected Bouton b1;
  76. protected Bouton b2;
  77. protected Bouton b3;
  78. protected String imgPath = "/";
  79. protected String[] tabCoups = {imgPath+"unknow.png",imgPath+"jan.png",imgPath+"ken.png",imgPath+"pon.png"};
  80. public Windows() {
  81.  this.setTitle("Jan! Ken! Pon!" );
  82.  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  83.     this.setLocation(0, 0);
  84.     this.setResizable(false);
  85.     this.setSize(700, 650);
  86.    
  87.     panJ1.setPreferredSize(new Dimension(300, 50));
  88.     panJ1.setBackground(Color.BLUE);
  89.     panJ2.setPreferredSize(new Dimension(300, 50));
  90.     panJ2.setBackground(Color.RED);
  91.     panPoint.setPreferredSize(new Dimension(200, 50));
  92.     panPoint.setBackground(Color.lightGray);
  93.     panSet.setPreferredSize(new Dimension(200, 50));
  94.     panSet.setBackground(Color.green);
  95.     panManche.setPreferredSize(new Dimension(200, 50));
  96.     panManche.setBackground(Color.lightGray);
  97.     panMatch.setPreferredSize(new Dimension(200, 50));
  98.     panMatch.setBackground(Color.green);
  99.     panIconJ1.setPreferredSize(new Dimension(300, 150));
  100.     panIconJ1.setBackground(Color.blue);
  101.     panIconJ2.setPreferredSize(new Dimension(300, 150));
  102.     panIconJ2.setBackground(Color.red);
  103.     panStart.setPreferredSize(new Dimension(200, 50));
  104.     panStart.setBackground(Color.lightGray);
  105.    
  106.     panGridBagScore.setLayout(new GridBagLayout());
  107.     GridBagConstraints gbcScore = new GridBagConstraints();
  108.     //------------------------------------------------
  109.     gbcScore.gridx = 0;
  110.     gbcScore.gridy = 4;
  111.     gbcScore.gridheight = 1;
  112.     gbcScore.gridwidth = 1;
  113.     panGridBagScore.add(panJ1, gbcScore);
  114.     panJ1.add(labJ1, SwingConstants.CENTER);
  115.     Font Joueur = new Font("Arial", Font.BOLD, 25);
  116.     labJ1.setFont(Joueur);
  117.     //-----------------
  118.     gbcScore.gridy = 0;
  119.     gbcScore.gridx = 1;
  120.     panGridBagScore.add(panPoint, gbcScore);
  121.     //-----------------
  122.     gbcScore.gridwidth = GridBagConstraints.REMAINDER;
  123.     gbcScore.gridy = 4;
  124.     gbcScore.gridx = 2;
  125.     panGridBagScore.add(panJ2, gbcScore);
  126.     panJ2.add(labJ2, SwingConstants.CENTER);
  127.     labJ2.setFont(Joueur);
  128.     //------------------------------------------------
  129.     gbcScore.gridx = 0;
  130.     gbcScore.gridy = 0;
  131.     gbcScore.gridheight = 4;
  132.     gbcScore.gridwidth = 1;
  133.     gbcScore.fill = GridBagConstraints.VERTICAL;
  134.     panGridBagScore.add(panIconJ1, gbcScore);
  135.     panIconJ1.setLayout(new BorderLayout());
  136.     panIconJ1.add(panPersoJ1, BorderLayout.NORTH);
  137.    
  138.     panPersoJ1.setBackground(Color.white);
  139.     panPersoJ1.setLayout(clayPersoJ1 = new CardLayout());
  140.    
  141.     for (int i=0; i<partie.getPersos().get(partie.getJ1()).getPersoSize(); i++) {
  142.      picLabSttPersoJ1 = new JLabel(new ImageIcon(getClass().getResource(partie.getPersos().get(partie.getJ1()).getPersoIcon(i))));
  143.      panPersoJ1.add(picLabSttPersoJ1, "img"+i);
  144.     }
  145.     clayPersoJ1.show(panPersoJ1, "img5" );
  146.     //On place un écouteur sur persoJ1
  147.     partie.getPersos().get(partie.getJ1()).addPersoObservateur(
  148.     new Observateur() {
  149.       public void updatePerso(int nStatut) {
  150.         clayPersoJ1.show(panPersoJ1, "img"+nStatut);
  151.       }
  152.     });
  153.     //-----------------
  154.     gbcScore.gridy = 1;
  155.     gbcScore.gridx = 1;
  156.     gbcScore.gridheight = 1;
  157.     gbcScore.fill = GridBagConstraints.HORIZONTAL;
  158.     panGridBagScore.add(panSet, gbcScore);
  159.    
  160.     gbcScore.gridx = 1;
  161.     gbcScore.gridy = 2;
  162.     gbcScore.gridheight = 1;
  163.     gbcScore.gridwidth = 1;
  164.     panGridBagScore.add(panManche, gbcScore);
  165.    
  166.     gbcScore.gridx = 1;
  167.     gbcScore.gridy = 3;
  168.     gbcScore.gridheight = 1;
  169.     gbcScore.gridwidth = 1;
  170.     panGridBagScore.add(panMatch, gbcScore);
  171.    
  172.     gbcScore.gridx = 1;
  173.     gbcScore.gridy = 4;
  174.     gbcScore.gridheight = 1;
  175.     gbcScore.gridwidth = 1;
  176.     panGridBagScore.add(panStart, gbcScore);
  177.     //-----------------
  178.     gbcScore.gridwidth = GridBagConstraints.REMAINDER;
  179.     gbcScore.gridheight = 4;
  180.     gbcScore.gridy = 0;
  181.     gbcScore.gridx = 2;
  182.     gbcScore.fill = GridBagConstraints.VERTICAL;
  183.     panGridBagScore.add(panIconJ2, gbcScore);
  184.     panIconJ2.setLayout(new BorderLayout());
  185.     panIconJ2.add(panPersoJ2, BorderLayout.NORTH);
  186.    
  187.     panPersoJ2.setBackground(Color.white);
  188.     panPersoJ2.setLayout(clayPersoJ2 = new CardLayout());
  189.    
  190.     for (int i=0; i<partie.getPersos().get(partie.getJ2()).getPersoSize(); i++) {
  191.      picLabSttPersoJ2 = new JLabel(new ImageIcon(getClass().getResource(partie.getPersos().get(partie.getJ2()).getPersoIcon(i))));
  192.      panPersoJ2.add(picLabSttPersoJ2, "img"+i);
  193.     }
  194.     clayPersoJ2.show(panPersoJ2, "img5" );
  195.     //On place un écouteur sur persoJ2
  196.     partie.getPersos().get(partie.getJ2()).addPersoObservateur(new Observateur(){
  197.       public void updatePerso(int nStatut) {
  198.        clayPersoJ2.show(panPersoJ2, "img"+nStatut);
  199.       }
  200.     });
  201.     //------------------------------------------------
  202.     panPoint.setLayout(new BorderLayout());
  203.     panSet.setLayout(new BorderLayout());
  204.     panManche.setLayout(new BorderLayout());
  205.     panMatch.setLayout(new BorderLayout());
  206.    
  207.     Font scores = new Font("Arial", Font.BOLD, 15);
  208.     Font scoresNum = new Font("Arial", Font.BOLD, 25);
  209.     Font comment = new Font("Arial", Font.BOLD, 20);
  210.    
  211.     labPoint.setFont(scores);
  212.     labSet.setFont(scores);
  213.     labManche.setFont(scores);
  214.     labMatch.setFont(scores);
  215.     labPointJ1.setFont(scoresNum);
  216.     labSetJ1.setFont(scoresNum);
  217.     labMancheJ1.setFont(scoresNum);
  218.     labMatchJ1.setFont(scoresNum);
  219.     labPointJ2.setFont(scoresNum);
  220.     labSetJ2.setFont(scoresNum);
  221.     labMancheJ2.setFont(scoresNum);
  222.     labMatchJ2.setFont(scoresNum);
  223.     labVersus.setFont(scores);
  224.    
  225.    
  226.     panPoint.add(labPoint, BorderLayout.CENTER);
  227.     labPoint.setHorizontalAlignment(SwingConstants.CENTER);
  228.     panSet.add(labSet, BorderLayout.CENTER);
  229.     labSet.setHorizontalAlignment(SwingConstants.CENTER);
  230.     panManche.add(labManche, BorderLayout.CENTER);
  231.     labManche.setHorizontalAlignment(SwingConstants.CENTER);
  232.     panMatch.add(labMatch, BorderLayout.CENTER);
  233.     labMatch.setHorizontalAlignment(SwingConstants.CENTER);
  234.    
  235.     panPoint.add(labPointJ1, BorderLayout.WEST);
  236.     panSet.add(labSetJ1, BorderLayout.WEST);
  237.     panManche.add(labMancheJ1, BorderLayout.WEST);
  238.     panMatch.add(labMatchJ1, BorderLayout.WEST);
  239.    
  240.     panPoint.add(labPointJ2, BorderLayout.EAST);
  241.     panSet.add(labSetJ2, BorderLayout.EAST);
  242.     panManche.add(labMancheJ2, BorderLayout.EAST);
  243.     panMatch.add(labMatchJ2, BorderLayout.EAST);
  244.    
  245.     panStart.add(labVersus);
  246.     labVersus.setHorizontalAlignment(SwingConstants.CENTER);
  247.    
  248.     panComment.setPreferredSize(new Dimension(695, 40));
  249.    
  250.     panCoups.setPreferredSize(new Dimension(695, 200));
  251.     panCoups.setLayout(new BorderLayout());
  252.    
  253.     panBoutons.setPreferredSize(new Dimension(695, 107));
  254.     panBoutons.setLayout(new BorderLayout());
  255.    
  256.     panGridBagAction.setLayout(new GridBagLayout());
  257.     GridBagConstraints gbcCtnr = new GridBagConstraints();
  258.     panGridBagAction.setBackground(Color.black);
  259.    
  260.     //On place un écouteur sur scoreJ2
  261.     partie.getScores().get(partie.getJ2()).addScoreObservateur(new ObservateurScores() {
  262.       public void updateScore(int point, int set, int manche, int match) {
  263.        labPointJ2.setText(""+point);
  264.        labSetJ2.setText(""+set);
  265.        labMancheJ2.setText(""+manche);
  266.        labMatchJ2.setText(""+match);
  267.       }
  268.     });
  269.    
  270.     partie.getScores().get(partie.getJ1()).addScoreObservateur(new ObservateurScores() {
  271.        public void updateScore(int point, int set, int manche, int match) {
  272.         labPointJ1.setText(""+point);
  273.         labSetJ1.setText(""+set);
  274.         labMancheJ1.setText(""+manche);
  275.         labMatchJ1.setText(""+match);
  276.        }
  277.      });
  278.     //------------------------------------------------
  279.     gbcCtnr.gridx = 0;
  280.     gbcCtnr.gridy = 0;
  281.     gbcCtnr.gridheight = 1;
  282.     gbcCtnr.gridwidth = GridBagConstraints.REMAINDER;;
  283.     panGridBagAction.add(panComment, gbcCtnr);
  284.     panComment.add(labComment = new JLabel("Jouer !" ));
  285.     labComment.setHorizontalAlignment(SwingConstants.CENTER);
  286.     labComment.setFont(comment);
  287.    
  288.     partie.addPartieObservateur(new ObservateurPartie(){
  289.       public void updatePartie(String comment) {
  290.        labComment.setText(comment);
  291.       }
  292.     });
  293.    
  294.     gbcCtnr.gridy = 1;
  295.     panCoupsJ1.setBackground(Color.white);
  296.     panCoupsJ2.setBackground(Color.white);
  297.     panGridBagAction.add(panCoups, gbcCtnr);
  298.     panCoupsJ1.setPreferredSize(new Dimension(350, 200));
  299.     panCoups.add(panCoupsJ1, BorderLayout.WEST);
  300.     panCoupsJ2.setPreferredSize(new Dimension(350, 200));
  301.     panCoups.add(panCoupsJ2, BorderLayout.EAST);
  302.     panCoupsJ1.setLayout(clayCoupsJ1= new CardLayout());
  303.     panCoupsJ2.setLayout(clayCoupsJ2= new CardLayout());
  304.     for (int i=0; i<tabCoups.length; i++) {
  305.      picLabCoupJ1 = new JLabel(new ImageIcon(getClass().getResource(tabCoups[i])));
  306.      picLabCoupJ2 = new JLabel(new ImageIcon(getClass().getResource(tabCoups[i])));
  307.      panCoupsJ1.add(picLabCoupJ1, "img"+i);
  308.      panCoupsJ2.add(picLabCoupJ2, "img"+i);
  309.     }
  310.    
  311.     clayCoupsJ1.show(panCoupsJ1, "img0" );
  312.     clayCoupsJ2.show(panCoupsJ2, "img0" );
  313.    
  314.     //On place un écouteur sur persoJ1
  315.     partie.getCoups().get(partie.getJ1()).addCoupObservateur(new ObservateurCoups(){
  316.       public void updateCoups(int nCoup) {
  317.        clayCoupsJ1.show(panCoupsJ1, "img"+nCoup);
  318.       }
  319.     });
  320.    
  321.     //On place un écouteur sur persoJ2
  322.     partie.getCoups().get(partie.getJ2()).addCoupObservateur(new ObservateurCoups(){
  323.       public void updateCoups(int nCoup) {
  324.        clayCoupsJ2.show(panCoupsJ2, "img"+nCoup);
  325.       }
  326.     });
  327.    
  328.     gbcCtnr.gridy = 2;
  329.     panGridBagAction.add(panBoutons, gbcCtnr);
  330.     panBoutons.add(panBoutonsJeux, BorderLayout.NORTH);
  331.     b1 = new Bouton("Jan", 1,imgPath+"jan.png", 95, this.getWidth());
  332.     b2 = new Bouton("Ken", 2,imgPath+"ken.png", 95, this.getWidth());
  333.     b3 = new Bouton("Pon", 3,imgPath+"pon.png", 95, this.getWidth());
  334.    
  335.     panBoutonsJeux.add(b1);
  336.     panBoutonsJeux.add(b2);
  337.     panBoutonsJeux.add(b3);
  338.     b1.addActionListener(new Jan());
  339.     b2.addActionListener(new Ken());
  340.     b3.addActionListener(new Pon());
  341.    
  342.     panBoutons.add(panBoutonsOpt, BorderLayout.SOUTH);
  343.     //------------------------------------------------
  344.    
  345.     panContainer.add(panGridBagScore);
  346.     panContainer.add(panGridBagAction);
  347.    
  348.     this.add(panContainer);
  349.     this.setVisible(true);
  350. }
  351. public class Jan implements ActionListener {
  352. @Override
  353.  public void actionPerformed(ActionEvent e) {
  354.   // TODO Auto-generated method stub
  355.    partie.action(1);
  356.  }
  357. }
  358. public class Ken implements ActionListener {
  359. @Override
  360.  public void actionPerformed(ActionEvent e) {
  361.   // TODO Auto-generated method stub
  362.   partie.action(2);
  363.  }
  364. }
  365. public class Pon implements ActionListener {
  366. @Override
  367.  public void actionPerformed(ActionEvent e) {
  368.   // TODO Auto-generated method stub
  369.   partie.action(3);
  370.  }
  371. }
  372. }


 
je ne maîtrise pas encore très bien java mais je souhaite mieux comprendre.
je m'en remet a vous, Merci d'avance pour votre temps.
Bonne journée

Reply

Marsh Posté le 04-12-2013 à 15:40:36   

Reply

Marsh Posté le 04-12-2013 à 17:09:33    

Le constructeur de la classe Windows fait 300 lignes. Il faut découper en méthodes ayant des noms évocateurs du boulot rendu.
 
Pour les patterns utilisés, je ne sais pas.  
Pas le temps d'inspecter 1000 lignes de code. Parfois il faut s'en tenir à des choix de conception maison, surtout si c'est propre, maintenable et que cela fonctionne (c'est ton cas n'est ce pas ?)...


Message édité par willy le kid le 04-12-2013 à 17:10:25
Reply

Marsh Posté le 04-12-2013 à 17:12:08    

Et descend tout ce qui est 'statique' layout, fontes et dispositions de la classe Windows dans des classes de GUI

Reply

Marsh Posté le 05-12-2013 à 11:56:18    

Pas trop la flamme non plus pour tout lire, mais :
- pour ta classe Bouton, si tu ne défini le comportement que d'une seule méthode du MouseListener, utilise plutôt un MouseAdapter (classe abstraite qui défini toutes les méthodes du ML comme n'ayant aucune comportement, sauf celui que tu redéfini) ;
- le français dans le code, c'est illisible ("ObservableCoups"  [:cerveau vomi]  );
- dans ta classe Partie, tu accède aux membres par leurs getters (getCoups()) plutôt qu'au champ directement, pourquoi ?
- respecter les conventions de nommage : une variable commence par une minuscule (classe Partie, J1 et J2 par exemple) ;
- déjà dit, mais trop de taff dans les constructeurs.
 
C'est très général, mais ça rendra déjà les choses un peu plus claires.

Reply

Marsh Posté le 05-12-2013 à 13:29:56    

Bonjour LeRiton, Bonjour willy le kid !
 
Merci pour votre réponse et pour votre temps !
Pour l'interface, je vais découper en méthode, a par en lisibilité cela apporte il autre chose ?
(peut être exécuter a nouveau une partie de ces méthode depuis une autre classe ?)
 
je comprend pas bien ce que tu veut dire Willy dans le second post, enfin je suis pas sur pourquoi dans des classes GUI je sépare mon label static comment tout seul(avec les autre static) dans une classe différente ?
 
LeMoutonLeRitonLeMoutonLeRitonLeMoutonLeRitonLeMoutonLeRitonLeMoutonLeRitonLeMoutonLeRitonLeMoutonLeRiton niarrc ! oups >_<"
 
-Bouton pour le moment j'ai pas fait de modification j'utiliserais les autres méthodes quand la fond sera bien construit.
 
-le français dans le code, ça cache, autre chose :(
j'ai créer un package ObserverCoups qui contient ObservableCoups et ObservateurCoups qui ecoute la classe coups, et upadte windows
mais j ai fait la mêmechose avec un package pour Score et les classe Obs...Scores, ...  
peut être que je peut dire a tout les objet observé d'utilisé le même package -_-" ?
 
-les getter setter simplement un truc idiot... modification ok !
-conventions de nommage... modification ok !
 
question :
Dans ma classe windows j'instancie l'objet partie, si j'ai une interface par la suite qui permet de choisir le nombre de point/set/manche... devrais je créer une classe interne à la classe windows qui instancie l'objet partie avec des paramètres ou créer une classe extérieur ou encore le faire dans la classe partie directement ?
 
Pour les bouton l'actionPerformed est dans das classe interne a la classe(windows) qui contient l'interface, c'est approprié ?
 
Merci beaucoup a vous deux et très bonne journée
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed