Commit 1bd44450 authored by Tristan MAISONNEUVE's avatar Tristan MAISONNEUVE
Browse files

Fenetre Connexion Commentaires part1

parent d343844b
...@@ -45,26 +45,26 @@ public class FenetreConnexion extends JFrame { ...@@ -45,26 +45,26 @@ public class FenetreConnexion extends JFrame {
public FenetreConnexion(String titre){ public FenetreConnexion(String titre){
super(titre); super(titre);
JPanel principal = new JPanel(new BorderLayout()); JPanel principal = new JPanel(new BorderLayout()); // Création du panel principal qui regroupe tout les autres panel
this.setContentPane(principal); this.setContentPane(principal);
JPanel north = new JPanel(new FlowLayout()); JPanel north = new JPanel(new FlowLayout()); //Création du panel North en Flow layout pour pouvoir centrer l'entré de pseudo
JLabel labelpseudo = new JLabel("Pseudo : "); JLabel labelpseudo = new JLabel("Pseudo : "); //Création du label pseudo
north.add(labelpseudo); north.add(labelpseudo); // ajout du label pseudo au panel north
pseudo = new JTextField(); pseudo = new JTextField(); //Création d'un JTextField pour pouvoir rentrer le pseudo
pseudo.setPreferredSize(new Dimension(100,30)); pseudo.setPreferredSize(new Dimension(100,30)); //On set une pprefered size pour pouvoir bien voir le TextField
north.add(pseudo); north.add(pseudo); //on ajoute le textfield pseudo au panel north
//north.add(envoyepseudo); //north.add(envoyepseudo);
principal.add(north,BorderLayout.NORTH); principal.add(north,BorderLayout.NORTH); //On ajoute le panel north au panel principal
JPanel grille = new JPanel(); JPanel grille = new JPanel();
grille.setLayout(new GridLayout(11,11)); grille.setLayout(new GridLayout(11,11)); //On crée le Panel grille qui va nous servir pour la grille de bataille navale
for (int i = 0; i < 11; i++) { for (int i = 0; i < 11; i++) { //Création de la première ligne de la grille avec une boucle for de 11 occurences.
String[] lettres = {" ", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J"}; String[] lettres = {" ", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};
final JLabel labellettre = new JLabel(lettres[i], SwingConstants.CENTER); final JLabel labellettre = new JLabel(lettres[i], SwingConstants.CENTER);
labellettre.setBorder(BorderFactory.createLineBorder(Color.BLACK)); labellettre.setBorder(BorderFactory.createLineBorder(Color.BLACK)); //Remplissage et création des JLabels en fonction de i.
grille.add(labellettre); grille.add(labellettre);
} }
...@@ -74,97 +74,96 @@ public class FenetreConnexion extends JFrame { ...@@ -74,97 +74,96 @@ public class FenetreConnexion extends JFrame {
int chiffre = 1; int chiffre = 1;
char lettre = 'A'; char lettre = 'A';
final String[] co = new String[2]; final String[] co = new String[2];
Bouttons[] bouttons = new Bouttons[100]; Bouttons[] bouttons = new Bouttons[100]; //Initialisations d'une liste de Bouttons, les objets Bouttons
//contiennent un JButton et un String pour décrire le coordonnées.
for (int i = 0; i < (11 * 10); i++) { for (int i = 0; i < (11 * 10); i++) { //Boucle for avec 110 occurences pour remplir le reste du tableaux
String[] nombres = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; String[] nombres = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; //Init du tableaux pour la partie gauche de la grille
if (i % 11 == 0) { if (i % 11 == 0) { //si i modulo 11 est égal à 0 alors ca veut dire qu'on est retourné sur la première colonne.
final JLabel labelchiffres = new JLabel(nombres[j], SwingConstants.CENTER); final JLabel labelchiffres = new JLabel(nombres[j], SwingConstants.CENTER); //Alors on crée un Jlabel contenant un chiffre de la listes nombres.
labelchiffres.setBorder(BorderFactory.createLineBorder(Color.BLACK)); labelchiffres.setBorder(BorderFactory.createLineBorder(Color.BLACK)); //On set une border pour chaque label pour bien séparer les colonne/lignes.
grille.add(labelchiffres); grille.add(labelchiffres); //on ajoute le JLabel tout juste crée au panel Grille
j++; j++;
} else { } else { //Si i n'est pas modulo 11 cela veut dire qu'on est dans la partie jouable de la grille.
if (i % 11 == 1) { if (i % 11 == 1) { //donc si i modulo 11 est égal à 1 cela veut dire que nous somme sur la colonne de droite, donc nous allons réinitialiser le tableaux lettre à la lettre A
lettre = 'A'; lettre = 'A';
if (i != 1) if (i != 1)
chiffre++; chiffre++; //si i !=1 alors on ajoute aussi un chiffre car on change de ligne, si on ne met pas cette conditions la boucle viendra des la première ligne passer à 2.
} }
final Bouttons boutton = new Bouttons(new JButton(), lettre + String.valueOf(chiffre)); final Bouttons boutton = new Bouttons(new JButton(), lettre + String.valueOf(chiffre)); //Maintenant on crée un Bouttons avec un new JButton et une concaténation de la lettre de la colonne plus de l'int de ligne.
boutton.getButton().setBackground(Color.WHITE); boutton.getButton().setBackground(Color.WHITE); //On fait en sorte que le JButton qu'on à assigné au Bouttons est blanc pour l'esthétique
boutton.getButton().setEnabled(false); boutton.getButton().setEnabled(false); //On fait en sorte que le bouton soit désactiver quand il est créé.
bouttons[o] = boutton; bouttons[o] = boutton; //On fait en sorte que le Bouttons qu'on vient de créé soit ajouter à notre liste de Bouttons.
o++; o++;
boutton.getButton().setBorder(BorderFactory.createLineBorder(Color.BLACK)); boutton.getButton().setBorder(BorderFactory.createLineBorder(Color.BLACK)); //On set les Border en noir
boutton.getButton().addActionListener(new ActionListener() { boutton.getButton().addActionListener(new ActionListener() { //On créé l'action Listener qui va nous permettre de créer nos bateaux.
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if(co[0]==null){ if(co[0]==null){ //Si quand on clique sur un Boutton et que co[0] est null alors c'est la première coordonées d'un bateaux
co[0]=boutton.getString(); co[0]=boutton.getString(); // Donc on fait en sorte que la string de la coordonéé du bouton sur lequel on a cliqué soit assigné à co[0]
boutton.getButton().setBackground(Color.LIGHT_GRAY); boutton.getButton().setBackground(Color.LIGHT_GRAY); // On colore le bouton en gris pour faire en sorte de se répérer sur la grille
} else { } else { // Si co[0] n'est pas null alors cela veut dire que l'utilisateur clique pour la deuxième fois.].
co[1] = boutton.getString(); co[1] = boutton.getString(); //donc on assigne les coordonées du deuxième click à co[1
final CreationB c = new CreationB(co[0],co[1],pays); final CreationB c = new CreationB(co[0],co[1],pays); //à partir de la on crée une classe qui va nous permettre de tester la taille des coordonées por créer le bon bateau.
try {if(c.TestCreation()!=null){ try {if(c.TestCreation()!=null){ //Si le résultat du return de test création n'est pas null
if(flotte.add(c.TestCreation())==0){ if(flotte.add(c.TestCreation())==0){ //Si le résultat du Test Création est 0 alors le bateaux a bien été ajouté.
c.TestCreation().gettheCategory(); ShipCategory s = c.TestCreation().gettheCategory(); //Maintenant on récupère la catégorie du Bateau qu'on vient de créer
ShipCategory s = c.TestCreation().gettheCategory();
if(s==ShipCategory.SUBMARINE){ if(s==ShipCategory.SUBMARINE){
pays[0]--; pays[0]--;
} if (s==ShipCategory.DESTROYER) { } if (s==ShipCategory.DESTROYER) {
pays[1]--; pays[1]--;
} if (s==ShipCategory.CRUISER) { } if (s==ShipCategory.CRUISER) { //Ici on va faire en sorte que notre liste de bateaux décrémente en fonction du type de bateaux qu'on a créé
pays[2]--; pays[2]--; //C'est très important pour compter le nombre de bateaux restant pour l'utilisateurs.
} if (s==ShipCategory.BATTLESHIP) { } if (s==ShipCategory.BATTLESHIP) {
pays[3]--; pays[3]--;
} if (s==ShipCategory.AIRCRAFT_CARRIER) { } if (s==ShipCategory.AIRCRAFT_CARRIER) {
pays[4]--; pays[4]--;
} }
System.out.println(Arrays.toString(pays)); System.out.println(Arrays.toString(pays)); //On print à l'utilisateur ce qui lui reste comme Bateau
System.out.println(flotte.getShips()); System.out.println(flotte.getShips()); //On print à l'utilisateur sa flotte.
List<ICoord> listec = c.TestCreation().getCoords(); List<ICoord> listec = c.TestCreation().getCoords(); //on créé une liste de coordonée qui va récup les coordonées du bateaux qu'on vient de créer
final Color randomColor = new Color((int)(Math.random() * (255-50)),(int)(Math.random() * (255-50)),(int)(Math.random() * (255-50))); final Color randomColor = new Color((int)(Math.random() * (255-50)),(int)(Math.random() * (255-50)),(int)(Math.random() * (255-50))); //on initialise une couleur rgb aléatoire.
for(int i=0;i<100;i++){ for(int i=0;i<100;i++){ //On fait un parcours de la liste de boutons pour savoir ou il faut colorer les cases correspondant au bateau qu'on a créé.
if(listec.contains(new Coord(bouttons[i].getString()))){ if(listec.contains(new Coord(bouttons[i].getString()))){ //on vérifie si le bouton sur lequel on est correspond à un de ceux de la liste de coordonées du bateaux.
bouttons[i].getButton().setBackground(randomColor); bouttons[i].getButton().setBackground(randomColor); //maintenant on fait en sorte que le bateau soit de la couleur aléatoire initialisé plus tôt
bouttons[i].getButton().setEnabled(false); bouttons[i].getButton().setEnabled(false); // Maintenant on désactive les bouttons sur lesquels sont positionnés les bateaux.
} }
} }
} else if(flotte.add(c.TestCreation())==-2) { } else if(flotte.add(c.TestCreation())==-2) { //Si le résultat de la création du bateaux est -2 cela signigie qu'on dépasse le seuil de case pour la flotte.
JOptionPane.showMessageDialog(null, "Flotte déja pleine"); JOptionPane.showMessageDialog(null, "Flotte déja pleine"); // donc on fait apparaitre un pop-up
for(int i=0;i<100;i++){ for(int i=0;i<100;i++){ //On fait un parcours de la liste de boutons pour pouvoir remettre une couleur blanche sur le premier bouton sur lequel on a cliqué
if(bouttons[i].getString().equals(co[0])){ if(bouttons[i].getString().equals(co[0])){
bouttons[i].getButton().setBackground(Color.WHITE); bouttons[i].getButton().setBackground(Color.WHITE);
} }
} }
}else{ }else{ //si la réponse est autre que 0 ou -2 alors cela veut dire que le bateaux qu'on a créé chevauche un autre bateaux déja créé.
JOptionPane.showMessageDialog(null, "les bateux ne doivent pas se chevaucher"); JOptionPane.showMessageDialog(null, "les bateux ne doivent pas se chevaucher");
for(int i=0;i<100;i++){ for(int i=0;i<100;i++){ //On fait un parcours de la liste
if(bouttons[i].getString().equals(co[0])){ if(bouttons[i].getString().equals(co[0])){ //de boutons pour pouvoir remettre une
bouttons[i].getButton().setBackground(Color.WHITE); bouttons[i].getButton().setBackground(Color.WHITE); //couleur blanche sur le premier bouton sur lequel
} } // on a cliqué.
} }
} }
} else { } else { //Ce else réfere au moment où l'utilisateur essaye de créer un bateaux en diagonale.
for(int i=0;i<100;i++){ for(int i=0;i<100;i++){
if(bouttons[i].getString().equals(co[0])){ if(bouttons[i].getString().equals(co[0])){
bouttons[i].getButton().setBackground(Color.WHITE); bouttons[i].getButton().setBackground(Color.WHITE);
} }
} }
co[0]=null; co[0]=null; // on réinitialise la première coordonée.
} }
} catch (CoordsBadShipException coordsBadShipException) {coordsBadShipException.printStackTrace();} catch (BadCoordException badCoordException) {badCoordException.printStackTrace();} } catch (CoordsBadShipException coordsBadShipException) {coordsBadShipException.printStackTrace();} catch (BadCoordException badCoordException) {badCoordException.printStackTrace();}
co[0]=null; co[0]=null; //ici on réinitialise les deux coordonées après avoir créé un bateaux.
co[1]=null; co[1]=null;
} }
} }
}); });
grille.add(boutton.getButton()); grille.add(boutton.getButton()); // On ajoute le JButton de notre bouttons a la grille
} }
lettre++; lettre++; // on incrémente la lettre a chaque changement de colonne.
} }
principal.add(grille,BorderLayout.CENTER); principal.add(grille,BorderLayout.CENTER); //On ajoute notre grille de bataille navale à notre Panel.
JPanel bas = new JPanel(new BorderLayout()); JPanel bas = new JPanel(new BorderLayout());
JPanel bas2 = new JPanel(new FlowLayout(FlowLayout.CENTER)); JPanel bas2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment