From d948887a728b9356fdfeb268caf88380204d078e Mon Sep 17 00:00:00 2001 From: xdatomic-the-codeur Date: Tue, 11 Mar 2025 09:28:09 +0100 Subject: [PATCH] Phase 5 --- src/controleur/Controle.java | 48 ++++++++++++++++++++++++-- src/outils/connexion/ClientSocket.java | 46 ++++++++++++------------ src/vue/EntreeJeu.java | 17 +++++---- 3 files changed, 79 insertions(+), 32 deletions(-) diff --git a/src/controleur/Controle.java b/src/controleur/Controle.java index 3ce6092..3cf4cf8 100644 --- a/src/controleur/Controle.java +++ b/src/controleur/Controle.java @@ -1,14 +1,21 @@ package controleur; +import outils.connexion.AsyncResponse; +import outils.connexion.ClientSocket; +import outils.connexion.Connection; +import outils.connexion.ServeurSocket; +import vue.Arene; +import vue.ChoixJoueur; import vue.EntreeJeu; -public class Controle { +public class Controle implements AsyncResponse { private EntreeJeu frmEntreeJeu ; + public String type; /** * Constructeur */ private Controle() { - this.frmEntreeJeu = new EntreeJeu() ; + this.frmEntreeJeu = new EntreeJeu(this) ; this.frmEntreeJeu.setVisible(true); } @@ -16,5 +23,42 @@ public class Controle { // TODO Auto-generated method stub new Controle(); } + + public void evenementEntreeJeu(String info) { + // + if(info.contains("serveur")) { + System.out.println("srv"); + type = "serveur"; + // + new ServeurSocket(this, 6666); + + Arene areneJeu = new Arene(); + areneJeu.setVisible(true); + frmEntreeJeu.dispose(); + }else { + System.out.println("ip"); + type = "client"; + // + new ClientSocket(this, info, 6666); + + + //frmEntreeJeu.dispose(); + } + } + + @Override + public void reception(Connection connection, String ordre, Object info) { + // TODO Auto-generated method stub + switch (ordre){ + case "connexion": + if(type.equals("client")) { + frmEntreeJeu.dispose(); + Arene frmArene = new Arene(); + ChoixJoueur frmChoixJoueur = new ChoixJoueur(); + frmChoixJoueur.setVisible(true); + } + break; + } + } } diff --git a/src/outils/connexion/ClientSocket.java b/src/outils/connexion/ClientSocket.java index 2967fbc..59e1ba9 100644 --- a/src/outils/connexion/ClientSocket.java +++ b/src/outils/connexion/ClientSocket.java @@ -12,27 +12,27 @@ import javax.swing.JOptionPane; * */ public class ClientSocket { - - /** - * Constructeur : crée le socket de type client pour se connecter à un serveur (avec son ip et port d'écoute) - * @param delegate instance de la classe vers laquelle il faut transférer les réponses - * @param ip adresse IP du serveur - * @param port numéro port d'écoute du serveur - */ - public ClientSocket (AsyncResponse delegate, String ip, int port) { - try { - Socket socket = new Socket(ip, port); - System.out.println("connexion serveur réussie"); - // la connexion ne peut se faire que si un objet delegate existe (pour récupérer la réponse) - if(delegate != null) { - // création d'une connexion pour ce client, pour la communication avec le serveur (envoi et réception d'informations) - new Connection(socket, delegate) ; - } - } catch (UnknownHostException e) { - JOptionPane.showMessageDialog(null, "serveur non disponible"); - } catch (IOException e) { - JOptionPane.showMessageDialog(null, "IP incorrecte"); - } - } - + + /** + * Constructeur : crée le socket de type client pour se connecter à un serveur (avec son ip et port d'écoute) + * @param delegate instance de la classe vers laquelle il faut transférer les réponses + * @param ip adresse IP du serveur + * @param port numéro port d'écoute du serveur + */ + public ClientSocket (AsyncResponse delegate, String ip, int port) { + try { + Socket socket = new Socket(ip, port); + System.out.println("connexion serveur réussie"); + // la connexion ne peut se faire que si un objet delegate existe (pour récupérer la réponse) + if(delegate != null) { + // création d'une connexion pour ce client, pour la communication avec le serveur (envoi et réception d'informations) + new Connection(socket, delegate) ; + } + } catch (UnknownHostException e) { + JOptionPane.showMessageDialog(null, "serveur non disponible"); + } catch (IOException e) { + JOptionPane.showMessageDialog(null, "IP incorrecte"); + } + } + } diff --git a/src/vue/EntreeJeu.java b/src/vue/EntreeJeu.java index 80c0366..9e3af71 100644 --- a/src/vue/EntreeJeu.java +++ b/src/vue/EntreeJeu.java @@ -4,6 +4,9 @@ import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; + +import controleur.Controle; + import javax.swing.JLabel; import javax.swing.JTextField; import java.awt.Font; @@ -16,6 +19,7 @@ public class EntreeJeu extends JFrame { private static final long serialVersionUID = 1L; private JPanel contentPane; private JTextField textField; + private Controle control; /** * Launch the application. @@ -25,7 +29,7 @@ public class EntreeJeu extends JFrame { /** * Create the frame. */ - public EntreeJeu() { + public EntreeJeu(Controle ctrl) { setTitle("Urban Marginal"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 330, 160); @@ -44,9 +48,7 @@ public class EntreeJeu extends JFrame { btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - Arene areneJeu = new Arene(); - areneJeu.setVisible(true); - EntreeJeu.this.dispose(); + ctrl.evenementEntreeJeu("serveur"); } }); btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 12)); @@ -76,9 +78,7 @@ public class EntreeJeu extends JFrame { JButton btnNewButton_1 = new JButton("Connect"); btnNewButton_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - ChoixJoueur choixJoueur = new ChoixJoueur(); - choixJoueur.setVisible(true); - EntreeJeu.this.dispose(); + ctrl.evenementEntreeJeu(textField.getText()); } }); btnNewButton_1.setFont(new Font("Tahoma", Font.BOLD, 12)); @@ -94,5 +94,8 @@ public class EntreeJeu extends JFrame { btnNewButton_2.setFont(new Font("Tahoma", Font.BOLD, 12)); btnNewButton_2.setBounds(211, 91, 89, 23); contentPane.add(btnNewButton_2); + + control = ctrl; + } }