This commit is contained in:
Erwann PHILIPPE 2025-03-11 09:28:09 +01:00
parent 7dd79ff3b1
commit d948887a72
3 changed files with 79 additions and 32 deletions

View file

@ -1,14 +1,21 @@
package controleur; 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; import vue.EntreeJeu;
public class Controle { public class Controle implements AsyncResponse {
private EntreeJeu frmEntreeJeu ; private EntreeJeu frmEntreeJeu ;
public String type;
/** /**
* Constructeur * Constructeur
*/ */
private Controle() { private Controle() {
this.frmEntreeJeu = new EntreeJeu() ; this.frmEntreeJeu = new EntreeJeu(this) ;
this.frmEntreeJeu.setVisible(true); this.frmEntreeJeu.setVisible(true);
} }
@ -17,4 +24,41 @@ public class Controle {
new Controle(); 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;
}
}
} }

View file

@ -13,26 +13,26 @@ import javax.swing.JOptionPane;
*/ */
public class ClientSocket { public class ClientSocket {
/** /**
* Constructeur : crée le socket de type client pour se connecter à un serveur (avec son ip et port d'écoute) * 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 delegate instance de la classe vers laquelle il faut transférer les réponses
* @param ip adresse IP du serveur * @param ip adresse IP du serveur
* @param port numéro port d'écoute du serveur * @param port numéro port d'écoute du serveur
*/ */
public ClientSocket (AsyncResponse delegate, String ip, int port) { public ClientSocket (AsyncResponse delegate, String ip, int port) {
try { try {
Socket socket = new Socket(ip, port); Socket socket = new Socket(ip, port);
System.out.println("connexion serveur réussie"); 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) // la connexion ne peut se faire que si un objet delegate existe (pour récupérer la réponse)
if(delegate != null) { if(delegate != null) {
// création d'une connexion pour ce client, pour la communication avec le serveur (envoi et réception d'informations) // création d'une connexion pour ce client, pour la communication avec le serveur (envoi et réception d'informations)
new Connection(socket, delegate) ; new Connection(socket, delegate) ;
} }
} catch (UnknownHostException e) { } catch (UnknownHostException e) {
JOptionPane.showMessageDialog(null, "serveur non disponible"); JOptionPane.showMessageDialog(null, "serveur non disponible");
} catch (IOException e) { } catch (IOException e) {
JOptionPane.showMessageDialog(null, "IP incorrecte"); JOptionPane.showMessageDialog(null, "IP incorrecte");
} }
} }
} }

View file

@ -4,6 +4,9 @@ import java.awt.EventQueue;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import controleur.Controle;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JTextField; import javax.swing.JTextField;
import java.awt.Font; import java.awt.Font;
@ -16,6 +19,7 @@ public class EntreeJeu extends JFrame {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private JPanel contentPane; private JPanel contentPane;
private JTextField textField; private JTextField textField;
private Controle control;
/** /**
* Launch the application. * Launch the application.
@ -25,7 +29,7 @@ public class EntreeJeu extends JFrame {
/** /**
* Create the frame. * Create the frame.
*/ */
public EntreeJeu() { public EntreeJeu(Controle ctrl) {
setTitle("Urban Marginal"); setTitle("Urban Marginal");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 330, 160); setBounds(100, 100, 330, 160);
@ -44,9 +48,7 @@ public class EntreeJeu extends JFrame {
btnNewButton.addActionListener(new ActionListener() { btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
Arene areneJeu = new Arene(); ctrl.evenementEntreeJeu("serveur");
areneJeu.setVisible(true);
EntreeJeu.this.dispose();
} }
}); });
btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 12)); btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 12));
@ -76,9 +78,7 @@ public class EntreeJeu extends JFrame {
JButton btnNewButton_1 = new JButton("Connect"); JButton btnNewButton_1 = new JButton("Connect");
btnNewButton_1.addActionListener(new ActionListener() { btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
ChoixJoueur choixJoueur = new ChoixJoueur(); ctrl.evenementEntreeJeu(textField.getText());
choixJoueur.setVisible(true);
EntreeJeu.this.dispose();
} }
}); });
btnNewButton_1.setFont(new Font("Tahoma", Font.BOLD, 12)); 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.setFont(new Font("Tahoma", Font.BOLD, 12));
btnNewButton_2.setBounds(211, 91, 89, 23); btnNewButton_2.setBounds(211, 91, 89, 23);
contentPane.add(btnNewButton_2); contentPane.add(btnNewButton_2);
control = ctrl;
} }
} }