Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide sur un projet

    17 septembre 2011 à 9:53:42

    Bonjour,

    Je suis en train de réaliser un jeu pour mieux comprendre java il s'agit du Image utilisateur . J'ai besoin de votre aide pour la gestion des différentes classes java. Je ne sais pas si ma pensée est bonne. Voici une image permettant de récapituler les différentes classes pour mon jeu.

    Image non disponible

    Merci pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      17 septembre 2011 à 10:11:34

      Je vais quand même te faire une critique.
      Je ne vois pas l'architecture MVC.
      Même pour une petite application, c'est toujours important de débuté sur de bonnes bases.
      ;)

      EDIT > Seconde critique ^^
      Ta classe Main, je pense qu'il serait préférable de ne faire qu'un simple appel a un méthode d'une classe application. Supprime tous les liens vers Partie, Plateau et Pieges
      • Partager sur Facebook
      • Partager sur Twitter
        17 septembre 2011 à 10:16:02

        J'ai regarder ce tuto : http://www.siteduzero.com/tutoriel-3-3 [...] dele-mvc.html
        mais il n'est pas très clair pour moi. Je ne comprends pas comment on fait..

        EDIT => je n'ai pas mis de flèche pour dire qu'il n'y avait pas de lien direct mais je ne savais pas comment l'exprimer
        • Partager sur Facebook
        • Partager sur Twitter
          17 septembre 2011 à 10:20:28

          Je pense que dans la gestion de retour, si tu utilise une méthode procédural, tu vas te mélanger les pinceaux ;)

          Avec ton application, je créerai uniquement une vue et un modèle on oublie le contrôleur.
          Ta classe Main devrait avoir uniquement:
          public class Main {
          	/**
          	 * @param args
          	 */
          	public static void main(String[] args) {
          		Observable model = new Model();
          		Fenetre fen = new Fenetre(model);
          		fen.setVisible(true);
          	}
          }
          

          // Voilà tu sépares dans ta classe main le modèle et la vue.
          Tu crées une classe Model abstraite dans un package model. Et tu met toutes tes vue dans un autre package vue.

          Tu implémentes ta classe model et ainsi faire des retours aux classes.
          • Partager sur Facebook
          • Partager sur Twitter
            17 septembre 2011 à 10:24:37

            Citation : peofofo

            Je pense que dans la gestion de retour, si tu utilise une méthode procédural, tu vas te mélanger les pinceaux ;)

            Avec ton application, je créerai uniquement une vue et un modèle on oublie le contrôleur.
            Ta classe Main devrait avoir uniquement:

            public class Main {
            	/**
            	 * @param args
            	 */
            	public static void main(String[] args) {
            		Observable model = new Model();
            		Fenetre fen = new Fenetre(model);
            		fen.setVisible(true);
            	}
            }
            


            // Voilà tu sépares dans ta classe main le modèle et la vue.
            Tu crées une classe Model abstraite dans un package model. Et tu met toutes tes vue dans un autre package vue.



            A quoi correspond model ? Ca correspond a la partie ? et la fenêtre correspond au plateau ?

            EDIT : Je ne comprends pas trop la différence entre contrôleur et modèle.
            Voila une nouveau avec la présentation MVC est-ce un bon schéma ?

            Image non disponible
            • Partager sur Facebook
            • Partager sur Twitter
              17 septembre 2011 à 10:46:42

              Il faut que tu sépares ton code de ton affichage graphique grosso-modo.

              Voici un exemple:

              public class Model implements Observable{
              	private ArrayList<Observer> listObserver = new ArrayList<Observer>();
              	
              	public Model(){
              	}
              	public void accueilObserver(){
              		for(Observer obs : this.listObserver)
              			obs.accueil();
              	}
              }
              


              Interface Observable
              public interface Observable {
              	public void accueilObserver();
              }
              


              Interface Observer
              public interface Observer {
              	public void accueil();
              }
              


              Classe Fenetre:
              public class Fenetre extends JFrame implements Observer{
              	public Fenetre(Observable obs){
              		this.setTitle("Jeu de l'oie");
              	    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              	   	 this.setSize(900, 600);
              	   	 this.setLocationRelativeTo(null);
              	    	this.setResizable(true);
              	    	this.setExtendedState(this.MAXIMIZED_BOTH);
              	    	    
              	    	this.model = obs;
              	    	this.model.addObserver(this);// On place notre écouteur
              	    
              	
              	    
              	   	 initMenu();//  Méthode d'initialisation au menu
              	    	new Taille_panel(this.size);//On définit la taille du panel
              	    
              	   	 this.conteneur.setPreferredSize(this.size );
              	   	 this.conteneur.setBackground(Color.white);
              	    	this.conteneur.add(new GamePanel(this.size, model).getPanel());// On peut définir la page par défaut à l'ouverture de l'application.
              	   	 this.setContentPane(this.conteneur);
              	}
              	private void initMenu() {// Tu initialises ton menu
              	}
              	public void accueil(){
              		System.out.println("Mis a jour accueil");
              		conteneur.removeAll();
              		conteneur.add(new AccueilPanel(size, model).getPanel(), BorderLayout.CENTER);
              		conteneur.revalidate();
              	}
              }
              

              La classe fenêtre va te rediriger directement sur la page GamePanel

              public class GamePanel extends ModPanel{
              	private Model model;
              
              	public ComptitionPanel(Dimension dim, Observable mod) {
              		super(dim);
              		this.model = (Model)mod;
              		initPanel();
              	}
              
              	protected void initPanel() {
              		
              		//En-tête
              		JPanel head = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
              		head.setPreferredSize(Dimension_taille.taille_1500_55);
              		
              		// Bouton Accueil
              		JButton accueil = new JButton("Accueil");
              		accueil.addActionListener(new ActionListener() {
              			public void actionPerformed(ActionEvent arg0) {
              				model.accueilObserver(); // on revient a l'accueil Retour à la classe Fenetre
              			}
              		});
              		head.add(accueil);
              		this.panel.add(head);
              	}
              }
              

              Voilà l'exemple utilisé d'un Schéma MVC. Tu est dans ta page GamePanel, tu veux revenir à la page accueil, tu fais un appel à une méthode de ton model qui te ramène sur la classe Fenetre.
              ;)
              • Partager sur Facebook
              • Partager sur Twitter
                17 septembre 2011 à 11:07:33

                Woaow !

                J'essaye de comprendre ;-)
                Donc si j'ai bien compris le panelGame est le "main" du programme. Observable c'est ce que l'utilisateur ne va pas voir (le modèle ?) et oberser c'est ce que l'utilisateur va voir (la vue).
                • Partager sur Facebook
                • Partager sur Twitter
                  17 septembre 2011 à 11:35:13

                  Non, le main du programme reste ta classe Main.java.
                  Voici un aperçu des classes.
                  J'ai oublié de mettre les classes pion.java, piege.java, si c'est du graphique, tu l'ajoute dans ton package vue:
                  Image utilisateur

                  L'avantage d'avoir une architecture structuré, t'évitera d'avoir des méthodes de partout.


                  EDIT> lorsque tu exécute cette méthode:
                  model.accueilObserver(); // on revient a l'accueil Retour à la classe Fenetre
                  Voici le chemin des classes
                  Image utilisateur
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 septembre 2011 à 11:50:49

                    Merci d'avoir pris le temps d'avoir fais ce schéma.

                    J'ai des questions (désole ;-) )
                    je ne comprends pas pourquoi il y a des méthodes entre fenetre et (GamePanel et ReglesPanel).
                    Ou plutot je ne comprends pas a quoi sert ces fichiers peut être.
                    Moi je comprends que GamePanel c'est le jeu c'est à dire le plateau.
                    Ensuite ReglesPanel c'est les règles du jeu.
                    Donc dans fenetre il y aura un truc soit il choisit la plateau soit il choisit les règles du jeu.

                    Mod panel c'est le choix de l'utilisateur : multi ou solo.

                    Ensuite observer et observable ce sont deux interfaces l'un fait le lien avec la vue et l'autre le modèle.
                    Mais par contre model.java je ne comprends pas a quoi il sert..

                    Merci pour toutes vos réponses.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 septembre 2011 à 12:09:19

                      J'ai modifié le schéma pour te mettre le passage lorsque tu fais appel à une méthode.

                      Page Règle->(Fenetre->Main->Modele)->Observable->Observer->Fenetre->Page Game.(Le passage entre Fenetre et Modèle est fait explicitement par ta méthode dans ta classe Main:)
                      Observable model = new Model();
                      Fenetre fen = new Fenetre(model);
                      

                      Citation : lefandordinateur

                      je ne comprends pas pourquoi il y a des méthodes entre fenetre et (GamePanel et ReglesPanel).
                      Ou plutot je ne comprends pas a quoi sert ces fichiers peut être.
                      Moi je comprends que GamePanel c'est le jeu c'est à dire le plateau.
                      Ensuite ReglesPanel c'est les règles du jeu.
                      Donc dans fenetre il y aura un truc soit il choisit la plateau soit il choisit les règles du jeu.


                      L'affichages des fenêtres se fait uniquement a partir de ta classe Fenetre.

                      il faut obligatoirement revenir a la page Fenetre pour modifier ton contenu de ta page.

                      Donc dans cette classe, tu as les méthodes pour ouvrir toutes les fenêtres.
                      Dans ta classe Fenetre(lorsque tu modifies l'intérieur de ton panel:
                      conteneur.add(new GamePanel(size, model).getPanel(), BorderLayout.CENTER);
                      

                      Tu envoi à ta page Accueil le model.
                      Il te suffit alors dans ta page d'accueil de faire model.accueilObserver();// Pour revenir sur la page accueil.
                      Et faire le parcours ci dessus:


                      J'ai des questions (désole ;-) )


                      Citation : lefandordinateur

                      Mod panel c'est le choix de l'utilisateur : multi ou solo.


                      NON.
                      ModPanel est une classe abstraite. C'est en gros le format standard du contenu de ta fenêtre.
                      Exemple: si toutes tes pages ont un fond jaune, au lieu d'indiquer dans toutes tes classes Panel le fond du contenu.
                      Tu le fais directement dans ta classe ModPanel qui est hérité par toutes tes pages.

                      Citation : lefandordinateur

                      Ensuite observer et observable ce sont deux interfaces l'un fait le lien avec la vue et l'autre le modèle.
                      Mais par contre model.java je ne comprends pas a quoi il sert..


                      Exact.
                      Les 2 interfaces font le lien entre la vue et le modèle.
                      model.java est indispensable, c'est dans cette classe ou tu vas faire appel au shéma MVC( elle est instancié au début du programme).
                      Cette classe sera présente dans toutes tes pages, il te suffira alors de faire appel a une méthode de cette classe pour retourner dans une classe précédente.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 septembre 2011 à 12:29:40

                        Merci pour vos explications

                        j'ai tout compris sauf.. model.java et apperement c'est le plus important.. Pourquoi celui-ci n'est pas en lien avec partie, partiesolo etc.. ?

                        C'est dans celui-ci qu'on va implémenter avancepion (par exemple ?)

                        EDIT: Par quoi commenceriez vous pour ce projet ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 septembre 2011 à 23:23:09

                          Citation : lefandordinateur

                          Merci pour vos explications

                          j'ai tout compris sauf.. model.java et apperement c'est le plus important.. Pourquoi celui-ci n'est pas en lien avec partie, partiesolo etc.. ?

                          C'est dans celui-ci qu'on va implémenter avancepion (par exemple ?)

                          EDIT: Par quoi commenceriez vous pour ce projet ?



                          Je vais essayé de répondre.
                          L'exemple que je t'ai donné est une partie d'un modèle MVC simplifié.

                          Les classes qui traite les opérations de jeu (partie, solo, réseau ...) font partis de la couche métier. Dans la classe Model, tu as l'implémentation du pattern Observer (méthodes te permettant de revenir "en arrière").
                          Dans la classe model, tu peux également ajouté des méthodes abstraites pour ensuite les utiliser dans les classes partie, solo....
                          A condition que le raisonnement reste logique.
                          Cette classe reste GENERALE MÊME ABSTRAITE.

                          Dans l'application que je développe actuellement, j'ai bien évidemment toutes mes méthodes pour le pattern Observer, mais également le traitement des fichiers logs:
                          Model.java
                          //Fichier logs
                          DOMConfigurator.configure("file/log4j.xml");
                          logger.info("-------------------------- Démarrage du programme --------------------------------------");
                          System.setErr(new PrintStream(new JscLoggingOutputStream(logger, Level.FATAL), true));
                          System.setOut(new PrintStream(new JscLoggingOutputStream(logger, Level.DEBUG), true));
                          

                          Ce code me permet de faire appel immédiatement a la bibliothèque au démarrage de l'application.(Pour un accès au fichier logs immédiate)
                          J'ai également un constructeur Model(){}.
                          Dans ce constructeur, j'ai mis une instance sur une classe me permettant de connaitre la licence de l'application. Afin de vérifier au démarrage du programme, si l'utilisateur utilise une licence ou pas ( et ensuite de pouvoir modifier toutes les autres classes en fonction de cette information).

                          Dans cette classe, il faut mettre tous ce qui est nécessaire de démarrer immédiatement, pour en profiter dans toutes les classes.

                          La classe Partie pour moi n'est pas à mettre au démarrage, car il y a surement une validation de l'utilisateur sur le choix de la partie.
                          Donc cette classe reste dans le même package mais n'a pas forcément besoin d'avoir des méthodes abstraites dans la classe Model.

                          Mais généralement il n'y a pas qu'une seule classe modèle, mais des classes modèles a tous niveau.
                          Exemple du composant JTtable

                          JTable peut être décomposé en vue, en classe Model et même Controleur.
                          Exemple pour un tableau:
                          Dans la vue de ma page je vais faire apparaitre le tableau en instanciant JTable:
                          Page Membres.java (avec à l'intérieur un tableau)
                          table = new JTable(new Tableau_membres_model());// j'ajoute le Model de ma JTable: Tableau_membres_model()
                          		table_model = (Tableau_membres_model) table.getModel();// J'en profite pour également faire des opérations sur les méthodes de mon modèle
                          


                          Dans le package model.jtable
                          J'ai une classe Tableau_membres_model.java héritant de AbstractTableModel.
                          J'ai à l'intérieur le nom des champs, le nombre de colonnes, le nombres de lignes, les cellules éditables, le format des cellules...
                          En voici une partie:
                          public class Tableau_membres_model extends Tableau {
                          	static Logger logger = Logger.getLogger("Tableau_membres_model.class");
                          	private ArrayList<ArrayList<String>>  list_colonnes = new ArrayList<ArrayList<String>>();
                          	private ArrayList<ArrayList<ArrayList<Object>>>  list_lignes = new ArrayList<ArrayList<ArrayList<Object>>>();
                          	private DAO<Membres> membresDao = new MembresDao();
                          	private ArrayList<Membres> membres = new ArrayList<Membres>();
                          	private Datetime date;
                          	
                          	public Tableau_membres_model(){
                          		initTableau();
                          	}
                          	
                          	private void initTableau() {
                          		list_colonnes.add(0, new ArrayList<String>());
                          		list_colonnes.get(0).add(0, "Nb");
                          		list_colonnes.add(1, new ArrayList<String>());
                          		list_colonnes.get(1).add(0, "Nom");
                          		list_colonnes.add(2, new ArrayList<String>());
                          		list_colonnes.get(2).add(0, "Prenom");
                          		list_colonnes.add(3, new ArrayList<String>());
                          		list_colonnes.get(3).add(0, "Mot de passe");
                          		list_colonnes.add(4, new ArrayList<String>());
                          		list_colonnes.get(4).add(0, "Solde");
                          		list_colonnes.add(5, new ArrayList<String>());
                          		list_colonnes.get(5).add(0, "Affichage");
                          		list_colonnes.add(6, new ArrayList<String>());
                          		list_colonnes.get(6).add(0, "Forfait");
                          		list_colonnes.add(7, new ArrayList<String>());
                          		list_colonnes.get(7).add(0, "Adminitration");
                          		list_colonnes.add(8, new ArrayList<String>());
                          		list_colonnes.get(8).add(0, "Suppression");
                          		addrow();
                          	}
                          	
                          	public void addrow() {
                          		// TODO Auto-generated method stub
                          		list_lignes.clear();// On efface les lignes
                          		//On met a jour les lignes:
                          		membres.clear();
                          		membres=membresDao.select();
                          		for(int i = 0; i < membres.size(); i++){
                          			// On affiche la date sous le bon format
                          			String affichage, status, forfait;
                          			if(membres.get(i).getAfficher()==0){
                          				affichage = "NON";
                          			}
                          			else{
                          				affichage = "OUI";	
                          			}
                          			if(membres.get(i).getForfait()==0){
                          				forfait = "NON";
                          			}
                          			else{
                          				forfait = "OUI";	
                          			}
                          			if(membres.get(i).getAdmin()==0){
                          				status="Membre";
                          			}
                          			else if(membres.get(i).getAdmin()==1){
                          				status="Gestionnaire";	
                          			}
                          			else{
                          				status="Administrateur";
                          			}
                          	
                          			// On met les infos dans le tableau
                          			list_lignes.add(i, new ArrayList<ArrayList<Object>>());
                          			list_lignes.get(i).add(0, new ArrayList<Object>());
                          			list_lignes.get(i).get(0).add(0, i+1);
                          			list_lignes.get(i).get(0).add(1, membres.get(i).getId());
                          			list_lignes.get(i).add(1, new ArrayList<Object>());
                          			list_lignes.get(i).get(1).add(0, membres.get(i).getNom());
                          			list_lignes.get(i).add(2, new ArrayList<Object>());
                          			list_lignes.get(i).get(2).add(0, membres.get(i).getPrenom());
                          			list_lignes.get(i).add(3, new ArrayList<Object>());
                          			list_lignes.get(i).get(3).add(0, membres.get(i).getPasse());
                          			list_lignes.get(i).add(4, new ArrayList<Object>());
                          			list_lignes.get(i).get(4).add(0, Chiffre.convers_string(membres.get(i).getSolde())+"€");
                          			list_lignes.get(i).get(4).add(1, membres.get(i).getSolde());
                          			list_lignes.get(i).add(5, new ArrayList<Object>());
                          			list_lignes.get(i).get(5).add(0, affichage);
                          			list_lignes.get(i).get(5).add(1, membres.get(i).getAfficher());
                          			list_lignes.get(i).add(6, new ArrayList<Object>());
                          			list_lignes.get(i).get(6).add(0, forfait);
                          			list_lignes.get(i).get(6).add(1, membres.get(i).getForfait());
                          			list_lignes.get(i).add(7, new ArrayList<Object>());
                          			list_lignes.get(i).get(7).add(0, status);
                          			list_lignes.get(i).get(7).add(1, membres.get(i).getAdmin());
                          			list_lignes.get(i).add(8, new ArrayList<Object>());
                          			list_lignes.get(i).get(8).add(0, "Supprimer");
                          		}
                          		this.fireTableDataChanged();
                          	}
                          
                          	public int getColumnCount() {
                          		// TODO Auto-generated method stub
                          		return list_colonnes.size();
                          	}
                          
                          	public int getRowCount() {
                          		// TODO Auto-generated method stub
                          		return list_lignes.size();
                          	}
                          	
                          	public String getColumnName(int col) {
                          		// TODO Auto-generated method stub
                          		return list_colonnes.get(col).get(0);
                          	}
                          
                          	public Object getValueAt(int row, int col) {
                          		return list_lignes.get(row).get(col).get(0);
                          	}
                          	
                          	public Object getValueAt(int row, int col, int indice) {
                          		return list_lignes.get(row).get(col).get(indice);
                          	}
                          	
                          	public boolean isCellEditable(int row, int col){
                          		if((col>=1 && col<4) || (col>=5 && col<=8)){
                          			return true;
                          		}
                          		else{
                          			return false; 
                          		}
                          	}....
                          



                          j'utilise une classe vue qui peut définir une seule cellule:
                          Exemple pour un bouton dans une cellule:
                          public class ButtonRenderer extends JButton implements TableCellRenderer{
                          }

                          Une classe dans le package controleur me permettant de créer des actions lors d'un clic sur le bouton d'une JTable
                          public class ButtonEditor extends DefaultCellEditor {
                          }

                          Une dernière chose sur le Pattern MVC, imaginons que tu est besoin de mettre a jour des nouvelles classes issue de classes existantes, mais n'étant pas très éloigné de ces dernières sans pour autant se correspondre, pour une plus grande mobilité, on peut encapsuler ces classes en créant des Interfaces (Pattern Strategy), sans pour autant reprendre toutes les classes issues de ces correspondances.
                          Mais je ne pense pas que tu est besoin de ce pattern pour ton application.

                          Je te renvoi aux tutos indispensable pour tous bien comprendre:
                          http://www.siteduzero.com/tutoriel-3-6 [...] observer.html
                          http://www.siteduzero.com/tutoriel-3-6 [...] tern-mvc.html
                          http://www.siteduzero.com/tutoriel-3-6 [...] strategy.html

                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 septembre 2011 à 11:30:58

                            Merci j'ai compris maintenant le rôle de model, vue et controller ;-)
                            Ce que je comprends c'est que dans model.java : C'est la liaison entre le premier menu (choix mode jeu : solo ou multi) et le suivant (Si c'est dans solo alors on choisit la difficulté si c'est multijoueur on demande en réseau ou sur le même ordinateur) enfin si je comprends bien.

                            Ensuite quand j'aurais cliquez sur le bouton "lancer la partie" a ce moment la je vais faire appel à la classe partie.java. C'est cela ?

                            Mais pour le moment je ne sais pas comment on va faire l’intéraction avec les boutons et les différentes classes présentes dans le model.

                            Merci encore
                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 septembre 2011 à 12:48:22

                              Ce qu'il faut surtout comprendre est que cette classe est appelé au début de ton application et te permet d'avoir toutes tes méthodes et attribut de cette classe a tous moment.

                              Citation : lefandordinateur


                              Ensuite quand j'aurais cliquez sur le bouton "lancer la partie" a ce moment la je vais faire appel à la classe partie.java. C'est cela ?


                              Tous dépend de ce que tu met dans ta classe partie.
                              Je suppose qu'un moment donnée tu auras une page avec le choix entre une nouvelle partie, ou une partie enregistré?
                              Dans ce cas tu auras une vue sur ta page.
                              PartiePanel.java dans le package vue.
                              Partie.java dans le package Model.
                              Dans ta vue lors d'une nouvelle partie tu vas surement instancié la classe Model Partie.
                              PartiePanel.java
                              Partie partie_de_jeu=new Partie();
                              //Après pour lancer ta nouvelle partie dans la page jeu.
                              model.gameObserver(partie_de_jeu); // on va dans la page jeu avec la partie sélectionné.
                              


                              Dans ta page Fenetre tu auras un méthode:
                              public void game(Partie partie_de_jeu) {
                              	conteneur.removeAll();
                              	conteneur.add(new GamePanel(size, model, partie_de_jeu).getPanel(), BorderLayout.CENTER);
                              	conteneur.revalidate();	
                              	}
                              

                              GamePanel.java // la page jeu
                              Tu auras dans ton constructeur:
                              public GamePanel(Dimension dim, Observable mod, Partie partie_lance) {
                              	super(dim);
                              	this.model = (Model) mod;
                              	this.partie_lance= partie_lance;
                              	initPanel();
                              }
                              

                              Tu peux apercevoir que ta classe model n'a rien perdu lors d'un changement de page

                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 septembre 2011 à 14:19:05

                                Je vais vous montrer comment je veux gérer l'IHM.

                                Image utilisateur

                                Du coup partie.java va servir pendant la partie c'est à dire le contrôles des dés, le déplacement des pions, etc.. Enfin, tout ce qui concerne les mouvements pendant la partie, mais comme il faudra des méthodes getPositionPion(), getValueDice() il faut peut être qu'il y est des classes spécifique par rapport a ces méthodes soit pion.java et dice.java. Cependant dice.java n'aura qu'une méthode getValueDice() je pense.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 septembre 2011 à 15:04:27

                                  Lorsque tu charges une partie. Elle ne peut pas être en réseau! :o

                                  Donc dans ta classe model Plateau.java, tu vas avoir besoin de la classe Partie :
                                  Partie -> Te donne la partie chargé ou une nouvelle partie.

                                  Dans la classe Partie, tu vas avoir besoin de la classe:
                                  Mode_joueur -> type de partie solo ou multi

                                  Dans la classe Mode_joueur, tu vas avoir besoin des classes:
                                  Multi -> te donne l'accès au jeu ne réseau
                                  Solo -> te donne l'accès

                                  Dans la classe Solo, tu vas avoir besoin des classes:
                                  Niveau -> type de niveau de la partie
                                  PersonnageSolo -> choix du personnage solo

                                  Dans la classe Multi, tu vas avoir besoin des classes:
                                  ModeMulti -> Sélectionne le mode jeu en réseau
                                  PersonnageMulti -> te donne le nom des joueurs

                                  Il faudrait pour simplifier que ta classe Partie regroupe toutes les classes nécessaires a lancer ta partie pour la classe Plateau.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 septembre 2011 à 17:20:25

                                    Citation : peofofo

                                    Lorsque tu charges une partie. Elle ne peut pas être en réseau! :o


                                    Et si la partie est en réseau mais les utilisateurs l'ont suspendus pour la continuer plus tard ? Ca n'est pas possible ?


                                    Citation : peofofo


                                    Donc dans ta classe model Plateau.java, tu vas avoir besoin de la classe Partie :
                                    Partie -> Te donne la partie chargé ou une nouvelle partie.


                                    Comment on fait cela en java avec un héritage ?


                                    Citation : peofofo


                                    Il faudrait pour simplifier que ta classe Partie regroupe toutes les classes nécessaires a lancer ta partie pour la classe Plateau.


                                    Plateau dans quel partie ? Model ? Donc plateau.java comporterait donc les dés, les pions, les cases du plateau et enfin les pièges présent sur le plateau ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 septembre 2011 à 14:43:50

                                      Les méthodes pour le schéma MVC, je te les ai données. Après si tu n'arrives pas réaliser ton diagramme UML, retourne lire les tutos sur les héritages, interfaces et polymorphisme. Regarde ensuite les tutos sur le pattern MVC.
                                      http://www.siteduzero.com/tutoriel-3-1 [...] -en-java.html

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        20 septembre 2011 à 14:56:28

                                        D'accord on m'a dit que ca servait à rien de faire l'UML pour Java...

                                        Merci pour votre aide ;-)
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Aide sur un projet

                                        × 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.
                                        • Editeur
                                        • Markdown