public Jeu() {
		  // titre de la fenêtre
	      super("Snake");
	      jouer = false;
	      // créer le modèle du jeu
	      this.modele = new ModeleDuJeu();
	      // fermeture de l'application lorsque la fenêtre est fermée
	      setDefaultCloseOperation(EXIT_ON_CLOSE);
	      // pas de redimensionnement possible de la fenêtre
	      setResizable(false);
	      // créer un conteneur qui affichera le jeu
	      final JPanel content = new JPanel() {
	            /**
			 * 
			 */
			private static final long serialVersionUID = 1L;

				@Override
	            protected void paintComponent(Graphics g) {
	                  super.paintComponent(g);
	                  // affichage du modèle du jeu
	                  Jeu.this.modele.affichage(g);
	            }
	      };
	      
	      final JPanel menu = new JPanel() {
	            /**
			 * 
			 */
			private static final long serialVersionUID = 1L;

				@Override
	            protected void paintComponent(Graphics g) {
	                  super.paintComponent(g);
	                  }
	      };
	      
	      
	      //Initialise le menu
	      initMenu(menu,content);
	      //Initialise les boutons du menu réessayer
	      initMenuRéessayer(content);
	      //Initialise le contenu durant le jeu
	      initContent(content,menu);
	      
	      // Créer un thread infini
	      Thread thread = new Thread(new Runnable() {                  
	            @Override
	            public void run() {
	                  while (true) { // boucle infinie
	                        // à chaque fois que la boucle est exécutée, la
	                        // méthode de calcul du jeu est appelée.
	                        // Comme la boucle est infinie, la méthode de calcul
	                        // sera appelée en cycle perpétuel.
	                	  	if(jouer) {
	                	  		if(Jeu.this.modele.calcul()) {
		                        	  content.add(réessayerRéessayer);
		                          	  content.add(quitterRéessayer);
		                          	  content.remove(retourJeu);
		                        }

		                        // demander à l'EDT de redessiner le conteneur
		                        content.repaint();
	                	  	}
	                        try {
	                            Thread.sleep(DELAY);
	                        } catch (InterruptedException e) {
	                        	e.printStackTrace();
	                        }
	                  }                        
	            }
	      });
	      thread.start();
	}