Phase 6 : fenêtre ChoixJoueur

This commit is contained in:
Erwann PHILIPPE 2025-03-11 11:13:51 +01:00
parent d948887a72
commit cb4d3e79ee
2 changed files with 116 additions and 23 deletions

View file

@ -10,6 +10,8 @@ import vue.EntreeJeu;
public class Controle implements AsyncResponse { public class Controle implements AsyncResponse {
private EntreeJeu frmEntreeJeu ; private EntreeJeu frmEntreeJeu ;
public String type; public String type;
private ChoixJoueur frmChoixJoueur;
private Arene frmArene;
/** /**
* Constructeur * Constructeur
@ -40,9 +42,6 @@ public class Controle implements AsyncResponse {
type = "client"; type = "client";
// //
new ClientSocket(this, info, 6666); new ClientSocket(this, info, 6666);
//frmEntreeJeu.dispose();
} }
} }
@ -53,12 +52,17 @@ public class Controle implements AsyncResponse {
case "connexion": case "connexion":
if(type.equals("client")) { if(type.equals("client")) {
frmEntreeJeu.dispose(); frmEntreeJeu.dispose();
Arene frmArene = new Arene(); this.frmArene = new Arene();
ChoixJoueur frmChoixJoueur = new ChoixJoueur(); this.frmChoixJoueur = new ChoixJoueur(this);
frmChoixJoueur.setVisible(true); this.frmChoixJoueur.setVisible(true);
} }
break; break;
} }
} }
public void evenementChoixJoueur(String pseudo, int numPerso) {
//
this.frmChoixJoueur.dispose();
this.frmArene.setVisible(true);
}
} }

View file

@ -6,18 +6,30 @@ import java.nio.charset.StandardCharsets;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import controleur.Controle;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import java.awt.Color; import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import javax.swing.JTextField;
public class ChoixJoueur extends JFrame { public class ChoixJoueur extends JFrame {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private JPanel contentPane; private JPanel contentPane;
private Controle control;
private JLabel lblPersonnage;
private int persoNum = 1;
private int nbPerso = 3;
private JTextField txtPseudo;
/** /**
* Launch the application. * Launch the application.
@ -26,7 +38,7 @@ public class ChoixJoueur extends JFrame {
/** /**
* Create the frame. * Create the frame.
*/ */
public ChoixJoueur() { public ChoixJoueur(Controle ctrl) {
setTitle("Choice"); setTitle("Choice");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setPreferredSize(new Dimension(400, 275)); this.getContentPane().setPreferredSize(new Dimension(400, 275));
@ -38,27 +50,34 @@ public class ChoixJoueur extends JFrame {
setContentPane(contentPane); setContentPane(contentPane);
contentPane.setLayout(null); contentPane.setLayout(null);
JLabel lblNewLabel = new JLabel("");
String chemin = "fonds/fondchoix.jpg"; String chemin = "fonds/fondchoix.jpg";
URL ressourceURL = getClass().getClassLoader().getResource(chemin);
if (ressourceURL != null) { lblPersonnage = new JLabel("");
String ressource = URLDecoder.decode(ressourceURL.getPath(), StandardCharsets.UTF_8); lblPersonnage.setBounds(141, 98, 121, 122);
lblNewLabel.setIcon(new ImageIcon(ressource)); lblPersonnage.setHorizontalAlignment(SwingConstants.CENTER);
} else { contentPane.add(lblPersonnage);
System.out.println("❌ Image non trouvée !");
}
lblNewLabel.setBounds(0, 0, 396, 261);
contentPane.add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel(""); JLabel lblNewLabel_1 = new JLabel("");
lblNewLabel_1.addMouseListener(new MouseAdapter() { lblNewLabel_1.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
if(persoNum+1 <= nbPerso) {
persoNum++;
affichePerso(persoNum);
} else {
persoNum = 1;
affichePerso(persoNum);
}
System.out.println("Suivant"); System.out.println("Suivant");
} }
@Override
public void mouseExited(MouseEvent e) {
sourisNormale();
}
@Override
public void mouseEntered(MouseEvent e) {
sourisDoigt();
}
}); });
lblNewLabel_1.setBackground(new Color(128, 255, 0)); lblNewLabel_1.setBackground(new Color(128, 255, 0));
lblNewLabel_1.setBounds(293, 108, 93, 81); lblNewLabel_1.setBounds(293, 108, 93, 81);
@ -68,8 +87,23 @@ public class ChoixJoueur extends JFrame {
lblNewLabel_1_1.addMouseListener(new MouseAdapter() { lblNewLabel_1_1.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
if(persoNum-1 >= 1) {
persoNum--;
affichePerso(persoNum);
} else {
persoNum = 3;
affichePerso(persoNum);
}
System.out.println("Précédent"); System.out.println("Précédent");
} }
@Override
public void mouseEntered(MouseEvent e) {
sourisDoigt();
}
@Override
public void mouseExited(MouseEvent e) {
sourisNormale();
}
}); });
lblNewLabel_1_1.setBackground(new Color(128, 255, 0)); lblNewLabel_1_1.setBackground(new Color(128, 255, 0));
lblNewLabel_1_1.setBounds(10, 96, 93, 81); lblNewLabel_1_1.setBounds(10, 96, 93, 81);
@ -79,13 +113,68 @@ public class ChoixJoueur extends JFrame {
lblNewLabel_2.addMouseListener(new MouseAdapter() { lblNewLabel_2.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
Arene arena = new Arene();
arena.setVisible(true); if(txtPseudo.getText().length() == 0) {
ChoixJoueur.this.dispose(); JOptionPane.showMessageDialog(null, "La saisie du pseudo est obligatoire !");
txtPseudo.requestFocus();
}else {
ctrl.evenementChoixJoueur(txtPseudo.getText(), nbPerso);
}
}
@Override
public void mouseEntered(MouseEvent e) {
sourisDoigt();
}
@Override
public void mouseExited(MouseEvent e) {
sourisNormale();
} }
}); });
lblNewLabel_2.setBounds(293, 200, 103, 61); lblNewLabel_2.setBounds(293, 200, 103, 61);
contentPane.add(lblNewLabel_2); contentPane.add(lblNewLabel_2);
txtPseudo = new JTextField();
txtPseudo.setColumns(10);
txtPseudo.setBounds(141, 235, 121, 25);
contentPane.add(txtPseudo);
JLabel lblNewLabel = new JLabel("");
lblNewLabel.setBounds(0, 0, 396, 261);
contentPane.add(lblNewLabel);
affichePerso(persoNum);
URL ressourceURL = getClass().getClassLoader().getResource(chemin);
if (ressourceURL != null) {
String ressource = URLDecoder.decode(ressourceURL.getPath(), StandardCharsets.UTF_8);
lblNewLabel.setIcon(new ImageIcon(ressource));
} else {
System.out.println("❌ Image non trouvée !");
} }
control = ctrl;
}
public void affichePerso(int numPerso) {
String chemin = "personnages/perso"+ numPerso+ "marche1d1.gif";
URL ressourceURL = getClass().getClassLoader().getResource(chemin);
if (ressourceURL != null) {
String ressource = URLDecoder.decode(ressourceURL.getPath(), StandardCharsets.UTF_8);
lblPersonnage.setIcon(new ImageIcon(ressource));
} else {
System.out.println("❌ Image non trouvée !");
}
}
public void sourisNormale() {
//
contentPane.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
public void sourisDoigt() {
//
contentPane.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
} }