Partage
  • Partager sur Facebook
  • Partager sur Twitter

Java Puissance 4 ,

Sujet résolu
    21 avril 2017 à 14:05:58

    Bonjour, je suis en terminal, et je réalise un projet , faire un puissance 4 en java, et mon problème est de pouvoir insérer sur une fenêtre lors d'un clic de bouton, mon système est simple, j'ai 7 boutons en haut de ma page et lorsque je clique sur l'un , limage d'un jeton rouge ou bleu apparaît au plus bas de la fenêtre et changer de joueur, mais j'ai du mal à voir comment faire apparaître l'image du jeton lors du clique de bouton, et je ne sais pas trop ou le placer dans mon programme voici mon programme, si quelqu'un peut m'aider, merci.
    import javax.swing.JFrame  ;
    import javax.swing.JButton ;
    import java.awt.event.*;
     import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JLabel;
     
     //- Definition de la classe fenetre -------------------------------------
    class Fenetre2 implements ActionListener // L'implementation de la fenetre est ActionListener car la fenetre doit savoir gerer l'action du bouton
    {
    	private JFrame  frame1; // Jframe correspondant au corps dela fenetre
    	private int[][] tab;
    	private JButton[] boutons;
    	
    	int joueur; //creation variable joueur
    	joueur = 1;
    	
    	Fenetre2 () // Constructeur de la classe fenetre   : remarque un constructeur est toujours public car il doit etre vu depuis l'exterieur de la classe
    	{
    		frame1 = new JFrame ("Fenetre 2"); // Creation de la JFrame par appel du constructeur
    		frame1.setSize(1800 , 800);
    		
    		//DesignFenetre2(); // Fonction mettant en place le comptenu de la fenetre		
    		
    		frame1.setDefaultCloseOperation(frame1.EXIT_ON_CLOSE) ; // Gestion de la fermutre de la fenetre
    		frame1.setVisible(true) ;      		// Affichage de la fenetre a l'ecran
    		frame1.setLayout(null);
    		
    	tab = new int[7][1];
    		boutons = new JButton[7];
    		 
    		for (int x=0 ; x < 7 ; x++)
    		{
    			JButton button = new JButton("Clique et c'est gagne"); // Creation du JButton par appel du constructeur
    			button.setBounds( 25 + (250*x), 50, 200, 50 ); // Le bouton est place aux coordonnees 100 en abscisse et 150 en ordonnee dans le repere de la fenetre.
    			frame1.add(button);	
    			boutons[x] = button;
    			button.addActionListener(this); // On precise que le bouton doit etre ecoute afin de gerer les actions associees a celui-ci.
     
    		}
    	}	
    		 public void actionPerformed(ActionEvent evt) // Controle des actions gerees par ActionListener
        {
    		Object source = evt.getSource();
    		
    		for(int i = 0; i < boutons.length; i++) {
    			JButton button = boutons[i];
    			
    			if(source == button) {
    				System.out.println(i);
    				
    				joueur = 2;
    			else 
    				joueur = 1;
    			}
    		}
    	}	
    }
    
    
    class Fenetre implements ActionListener // L'implementation de la fenetre est ActionListener car la fenetre doit savoir gerer l'action du bouton
    {
    	Fenetre2 fen; //tant que la fenetre existe la fenetre2 n'est pas ephemere et reste 
    	private JFrame  frame1; // Jframe correspondant au corps dela fenetre
    	private JButton button1;
    	private JButton button2;
    	private JButton button3;
    	private JLabel MonLabel;
    	
    	Fenetre () // Constructeur de la classe fenetre   : remarque un constructeur est toujours public car il doit etre vu depuis l'exterieur de la classe
    	{
    		frame1 = new JFrame ("PUISSANCE 4"); // Creation de la JFrame par appel du constructeur
    		frame1.setSize(600 , 400);
    		
    		
    		
    		DesignFenetre(); // Fonction mettant en place le comptenu de la fenetre		
    		
    		frame1.setDefaultCloseOperation(frame1.EXIT_ON_CLOSE) ; // Gestion de la fermutre de la fenetre
    		frame1.setVisible(true) ;                               // Affichage de la fenetre a l'ecran
    	}
    	
    	private void DesignFenetre()
    	{
    		
    		frame1.setLayout(null);  // L'agencement (Layout) null permet un positionnement en fonction des coordonnees relative en pixel par l'utilisation de la commande setBounds
    		
    		MonLabel = new JLabel("PUISSANCE 4 (pas pique des hannetons) ");
    		
    		MonLabel.setBounds( 150, 5, 500, 50 ); // Le JLabel est place aux coordonnees 100 en abscisse et 150 en ordonnee dans le repere de la fenetre. 
    
    		frame1.add(MonLabel);         // Placement du JLabel sur la fenetre
    		
    		button1 = new JButton("Un joueur"); // Creation du JButton par appel du constructeur
    		
    		button1.setBounds( 200, 50, 200, 50 ); // Le bouton est place aux coordonnees 100 en abscisse et 150 en ordonnee dans le repere de la fenetre. 
    
    		frame1.add(button1);         // Placement du bouton sur la fenetre
    		
    		button1.addActionListener(this); // On precise que le bouton doit etre ecoute afin de gerer les actions associees a celui-ci.
     
    
    		button2 = new JButton("Deux joueurs"); // Creation du JButton par appel du constructeur
    		
    		button2.setBounds( 200, 150, 200, 50 ); // Le bouton est place aux coordonnees 100 en abscisse et 150 en ordonnee dans le repere de la fenetre. 
    
    		frame1.add(button2);         // Placement du bouton sur la fenetre
    		
    		button2.addActionListener(this); // On precise que le bouton doit etre ecoute afin de gerer les actions associees a celui-ci.
    		
    		button3 = new JButton("Quitter"); // Creation du JButton par appel du constructeur
    		
    		button3.setBounds( 200, 250, 200, 50 ); // Le bouton est place aux coordonnees 100 en abscisse et 150 en ordonnee dans le repere de la fenetre. 
    
    		button3.addActionListener(this); // On precise que le bouton doit etre ecoute afin de gerer les actions associees a celui-ci.
    		
    		frame1.add(button3);         // Placement du bouton sur la fenetre
    		
    
    	}
    	public void actionPerformed(ActionEvent evt) // Controle des actions gerees par ActionListener
        {
    		Object source = evt.getSource();
    		
    		if ( source == button1 )
    		{
    		fen = new Fenetre2 ();
    		}	
    
    		if ( source == button2 )
    		{
    		fen = new Fenetre2 ();
    		}	 		 
    		
    		if ( source == button3)
    		{
    		System.exit(0); 	
    		}	
    		//if(evt.getSource()==button3)
    		//{
    		//this.setVisible(false);
    		//this.dispose();
    		//}	
    	}
    }
    
    //- Classe principale -----------------------------------------------
    
    class Projet
    {
    	private static Fenetre fen;      // Declaration d'un objet Fenetre nomme fen
    
    	public static void main(String[] args) 
    	{
    		fen = new Fenetre(); // Creation de la fenetre par appel du constructeur
    	}
    	
    }
    • Partager sur Facebook
    • Partager sur Twitter
      21 avril 2017 à 14:34:33

      Salut ! 

      Déjà pour récupérer l'action de l'utilisateur, je te conseil de faire une classe Event :

      public class Event implements ActionListener {
      
              Fenetre f;
      
      	Event (Fenetre fen) {
      	
      		this.f = fen;
      		
      	}
      	
      	public void actionPerformed(ActionEvent e) {
      
                      if  (e.getSource() == f.getBoutonJeton()) {
      
                                //Faire action
      
                       }
      
              }


      Ensuite pour l'animation du jeton, penche toi sur ça : https://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html

      • Partager sur Facebook
      • Partager sur Twitter
        21 avril 2017 à 18:07:18

        D'accord je te remercie

        Sinon j'ai une autre question , j'ai créer une variable joueur  auquel j'ai assigné la valeur 1, j'ai fait un Label pour afficher joueur + la variable, ça m'affiche joueur 1 , et je souhaite quand je clique sur un des boutons de passer de joueur 1 à joueur 2 , j'ai commencé sur un truc, ça passe de joueur 1 à joueur 2 mais pas de retour à joueur 1 après , et je ne comprends pas

        for(int i = 0; i < boutons.length; i++) {
        			JButton button = boutons[i];
        			
        			if (joueur == 1)
        			{
        				if(source == button) 
        				{
        				System.out.println(i);
        				
        				joueur = 2;
        				MonLabel.setText("Joueur " + joueur);
        				}

        J'ai commencé avec ça , j'ai mon passage de joueur 1 à joueur 2 et je souhaite avoir lorsque je clique sur un bouton un retour au joueur 1 donc j'ai  fait ça 

        for(int i = 0; i < boutons.length; i++) {
        			JButton button = boutons[i];
        			
        			if (joueur == 1)
        			{
        				if(source == button) 
        				{
        				System.out.println(i);
        				
        				joueur = 2;
        				MonLabel.setText("Joueur " + joueur);
        				}
        				
        			}	
        			if (joueur == 2)	
        			{
        				if(source == button) 
        				{
        				System.out.println(i);
        				joueur = 1;
        				MonLabel.setText("Joueur " + joueur);
        				}
        				
        			}	



         Mais ça ne marche pas, il bloque finalement sur joueur 1 

        • Partager sur Facebook
        • Partager sur Twitter
          22 avril 2017 à 15:15:19

          Dans un jeu de dé j'utilise une méthode pour set le nextplayer. Et ensuite je fais une actions si le next player est le joueur 1 ou le joueur 2.

          Quelques chose comme sa en somme :

          lancerJ1(){
             setNextPlayer(j2);
          }

          Cela t'éviterais de faire une boucle pour verifier qui doit joué a chaque clic sur ton bouton.

          -
          Edité par Sorrow81 22 avril 2017 à 15:16:44

          • Partager sur Facebook
          • Partager sur Twitter

          Java Puissance 4 ,

          × 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