Commit d83e1090 authored by Jérémie's avatar Jérémie
Browse files

Merge remote-tracking branch 'origin/master'

parents 2b878933 2ee2cd1a
......@@ -45,26 +45,37 @@ public class FenetreConnexion extends JFrame {
public FenetreConnexion(String titre){
super(titre);
JPanel principal = new JPanel(new BorderLayout()); // Création du panel principal qui regroupe tout les autres panel
JPanel principal = new JPanel(new BorderLayout());
// Création du panel principal qui regroupe tout les autres panel
this.setContentPane(principal);
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 : "); //Création du label pseudo
north.add(labelpseudo); // ajout du label pseudo au panel north
pseudo = new JTextField(); //Création d'un JTextField pour pouvoir rentrer le pseudo
pseudo.setPreferredSize(new Dimension(100,30)); //On set une pprefered size pour pouvoir bien voir le TextField
north.add(pseudo); //on ajoute le textfield pseudo au panel north
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 : ");
//Création du label pseudo
north.add(labelpseudo);
// ajout du label pseudo au panel north
pseudo = new JTextField();
//Création d'un JTextField pour pouvoir rentrer le pseudo
pseudo.setPreferredSize(new Dimension(100,30));
//On set une pprefered size pour pouvoir bien voir le TextField
north.add(pseudo);
//on ajoute le textfield pseudo au panel north
//north.add(envoyepseudo);
principal.add(north,BorderLayout.NORTH); //On ajoute le panel north au panel principal
principal.add(north,BorderLayout.NORTH);
//On ajoute le panel north au panel principal
JPanel grille = new JPanel();
grille.setLayout(new GridLayout(11,11)); //On crée le Panel grille qui va nous servir pour la grille de bataille navale
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++) { //Création de la première ligne de la grille avec une boucle for de 11 occurences.
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"};
final JLabel labellettre = new JLabel(lettres[i], SwingConstants.CENTER);
labellettre.setBorder(BorderFactory.createLineBorder(Color.BLACK)); //Remplissage et création des JLabels en fonction de i.
labellettre.setBorder(BorderFactory.createLineBorder(Color.BLACK));
//Remplissage et création des JLabels en fonction de i.
grille.add(labellettre);
}
......@@ -74,87 +85,130 @@ public class FenetreConnexion extends JFrame {
int chiffre = 1;
char lettre = 'A';
final String[] co = new String[2];
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++) { //Boucle for avec 110 occurences pour remplir le reste du tableaux
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) { //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); //Alors on crée un Jlabel contenant un chiffre de la listes nombres.
labelchiffres.setBorder(BorderFactory.createLineBorder(Color.BLACK)); //On set une border pour chaque label pour bien séparer les colonne/lignes.
grille.add(labelchiffres); //on ajoute le JLabel tout juste crée au panel Grille
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++) {
//Boucle for avec 110 occurences pour remplir le reste du tableaux
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) {
//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);
//Alors on crée un Jlabel contenant un chiffre de la listes nombres.
labelchiffres.setBorder(BorderFactory.createLineBorder(Color.BLACK));
//On set une border pour chaque label pour bien séparer les colonne/lignes.
grille.add(labelchiffres);
//on ajoute le JLabel tout juste crée au panel Grille
j++;
} 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) { //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
} 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) {
//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';
if (i != 1)
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.
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)); //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); //On fait en sorte que le JButton qu'on à assigné au Bouttons est blanc pour l'esthétique
boutton.getButton().setEnabled(false); //On fait en sorte que le bouton soit désactiver quand il est créé.
bouttons[o] = boutton; //On fait en sorte que le Bouttons qu'on vient de créé soit ajouter à notre liste de Bouttons.
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);
//On fait en sorte que le JButton qu'on à assigné au Bouttons est blanc pour l'esthétique
boutton.getButton().setEnabled(false);
//On fait en sorte que le bouton soit désactiver quand il est créé.
bouttons[o] = boutton;
//On fait en sorte que le Bouttons qu'on vient de créé soit ajouter à notre liste de Bouttons.
o++;
boutton.getButton().setBorder(BorderFactory.createLineBorder(Color.BLACK)); //On set les Border en noir
//On créé l'action Listener qui va nous permettre de créer nos bateaux.
boutton.getButton().addActionListener(e -> {
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(); // 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); // On colore le bouton en gris pour faire en sorte de se répérer sur la grille
} 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(); //donc on assigne les coordonées du deuxième click à co[1
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){ //Si le résultat du return de test création n'est pas null
if(flotte.add(c.TestCreation())==0){ //Si le résultat du Test Création est 0 alors le bateaux a bien été ajouté.
ShipCategory s = c.TestCreation().gettheCategory(); //Maintenant on récupère la catégorie du Bateau qu'on vient de créer
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();
// 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);
// On colore le bouton en gris pour faire en sorte de se répérer sur la grille
} 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();
//donc on assigne les coordonées du deuxième click à co[1
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){
//Si le résultat du return de test création n'est pas null
if(flotte.add(c.TestCreation())==0){
//Si le résultat du Test Création est 0 alors le bateaux a bien été ajouté.
ShipCategory s = c.TestCreation().gettheCategory();
//Maintenant on récupère la catégorie du Bateau qu'on vient de créer
//Ici on va faire en sorte que notre liste de bateaux décrémente en fonction du type de bateaux qu'on a créé
//C'est très important pour compter le nombre de bateaux restant pour l'utilisateurs.
if(s==ShipCategory.SUBMARINE){
pays[0]--;
} if (s==ShipCategory.DESTROYER) {
pays[1]--;
} 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]--; //C'est très important pour compter le nombre de bateaux restant pour l'utilisateurs.
} if (s==ShipCategory.CRUISER) {
pays[2]--;
} if (s==ShipCategory.BATTLESHIP) {
pays[3]--;
} if (s==ShipCategory.AIRCRAFT_CARRIER) {
pays[4]--;
}
System.out.println(Arrays.toString(pays)); //On print à l'utilisateur ce qui lui reste comme Bateau
System.out.println(flotte.getShips()); //On print à l'utilisateur sa flotte.
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
System.out.println(Arrays.toString(pays));
//On print à l'utilisateur ce qui lui reste comme Bateau
System.out.println(flotte.getShips());
//On print à l'utilisateur sa flotte.
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))); //on initialise une couleur rgb aléatoire.
for(int i1 = 0; i1 <100; i1++){ //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[i1].getString()))){ //on vérifie si le bouton sur lequel on est correspond à un de ceux de la liste de coordonées du bateaux.
bouttons[i1].getButton().setBackground(randomColor); //maintenant on fait en sorte que le bateau soit de la couleur aléatoire initialisé plus tôt
bouttons[i1].getButton().setEnabled(false); // Maintenant on désactive les bouttons sur lesquels sont positionnés les bateaux.
for(int i1 = 0; i1 <100; i1++){
//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[i1].getString()))){
//on vérifie si le bouton sur lequel on est correspond à un de ceux de la liste de coordonées du bateaux.
bouttons[i1].getButton().setBackground(randomColor);
//maintenant on fait en sorte que le bateau soit de la couleur aléatoire initialisé plus tôt
bouttons[i1].getButton().setEnabled(false);
// Maintenant on désactive les bouttons sur lesquels sont positionnés les bateaux.
}
}
} 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"); // donc on fait apparaitre un pop-up
for(int i1 = 0; i1 <100; i1++){ //On fait un parcours de la liste de boutons pour pouvoir remettre une couleur blanche sur le premier bouton sur lequel on a cliqué
} 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");
// donc on fait apparaitre un pop-up
for(int i1 = 0; i1 <100; i1++){
//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[i1].getString().equals(co[0])){
bouttons[i1].getButton().setBackground(Color.WHITE);
}
}
}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éé.
}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");
for(int i1 = 0; i1 <100; i1++){ //On fait un parcours de la liste
if(bouttons[i1].getString().equals(co[0])){ //de boutons pour pouvoir remettre une
bouttons[i1].getButton().setBackground(Color.WHITE); //couleur blanche sur le premier bouton sur lequel
} // on a cliqué.
for(int i1 = 0; i1 <100; i1++){
//On fait un parcours de la liste
if(bouttons[i1].getString().equals(co[0])){
//de boutons pour pouvoir remettre une couleur blanche sur le premier bouton sur lequel on a cliqué.
bouttons[i1].getButton().setBackground(Color.WHITE);
}
}
}
} else { //Ce else réfere au moment où l'utilisateur essaye de créer un bateaux en diagonale.
} else {
//Ce else réfere au moment où l'utilisateur essaye de créer un bateaux en diagonale.
for(int i1 = 0; i1 <100; i1++){
if(bouttons[i1].getString().equals(co[0])){
bouttons[i1].getButton().setBackground(Color.WHITE);
}
}
co[0]=null; // on réinitialise la première coordonée.
co[0]=null;
// on réinitialise la première coordonée.
}
} catch (CoordsBadShipException | BadCoordException coordsBadShipException) {coordsBadShipException.printStackTrace();}
co[0]=null; //ici on réinitialise les deux coordonées après avoir créé un bateaux.
co[0]=null;
co[1]=null;
//ici on réinitialise les deux coordonées après avoir créé un bateaux.
if (flotte.isFrenchConfiguration()){
if(flotte.isComplete()){
envoyepseudo.setEnabled(true);
......@@ -166,11 +220,14 @@ public class FenetreConnexion extends JFrame {
}
}
});
grille.add(boutton.getButton()); // On ajoute le JButton de notre bouttons a la grille
grille.add(boutton.getButton());
// On ajoute le JButton de notre bouttons a la grille
}
lettre++; // on incrémente la lettre a chaque changement de colonne.
lettre++;
// on incrémente la lettre a chaque changement de colonne.
}
principal.add(grille,BorderLayout.CENTER); //On ajoute notre grille de bataille navale à notre Panel.
principal.add(grille,BorderLayout.CENTER);
//On ajoute notre grille de bataille navale à notre Panel.
JPanel bas = new JPanel(new BorderLayout());
JPanel bas2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
......@@ -203,6 +260,8 @@ public class FenetreConnexion extends JFrame {
creerPartie = new JButton("Créer partie");
boutons.add(rejoindre);
boutons.add(creerPartie);
rejoindre.setEnabled(false);
creerPartie.setEnabled(false);
est.add(boutons);
choixDisposition = new JLabel("Quelle dispositions voulez-vous choisir ?");
......
package vue; //package
package vue;
//package
import com.sun.source.tree.NewArrayTree; //importation
import info1.network.Game;
......@@ -16,25 +17,36 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
public class FenetreJeux extends JFrame { //création de la classe Fenetre jeux extension de JFrame
private JComboBox pInitialise; //initialisation de tout les widget
public class FenetreJeux extends JFrame {
//création de la classe Fenetre jeux extension de JFrame
private JComboBox pInitialise;
//initialisation de tout les widget
private JButton rejoindre;
private JButton creerPartie;
private JTextArea zoneMessage;
public FenetreJeux(String titre){ //constructeur
super(titre); //envoyer le titre au constructeur de JFrame
JPanel principal = new JPanel(new BorderLayout()); //nouveau JPanel avec un BorderLayout
this.setContentPane(principal); //On l'affiche
JPanel north = new JPanel(new FlowLayout()); //nouveau JPanel avec un flowlayout
principal.add(north,BorderLayout.NORTH); //qu'on ajoute au Panel principale en haut
JPanel grille = new JPanel(); //nouveau panel
grille.setLayout(new GridLayout(11,11)); //avec un grid layout
for (int i=0; i<11;i++){ //boucle initialisation axe du tableau
public FenetreJeux(String titre){
//constructeur
super(titre);
//envoyer le titre au constructeur de JFrame
JPanel principal = new JPanel(new BorderLayout());
//nouveau JPanel avec un BorderLayout
this.setContentPane(principal);
//On l'affiche
JPanel north = new JPanel(new FlowLayout());
//nouveau JPanel avec un flowlayout
principal.add(north,BorderLayout.NORTH);
//qu'on ajoute au Panel principale en haut
JPanel grille = new JPanel();
//nouveau panel
grille.setLayout(new GridLayout(11,11));
//avec un grid layout
for (int i=0; i<11;i++){
//boucle initialisation axe du tableau
String[] lettres={" ","A","B","C","D","E","F","G","H","I","J"};
final JLabel labellettre = new JLabel(lettres[i],SwingConstants.CENTER);
labellettre.setBorder(BorderFactory.createLineBorder(Color.BLACK));
......@@ -62,36 +74,41 @@ public class FenetreJeux extends JFrame { //création de la cl
chiffre++;
}
final Bouttons boutton = new Bouttons(new JButton(), lettre + String.valueOf(chiffre));
boutton.getButton().setBackground(Color.WHITE); //mettre les bouton en blanc
boutton.getButton().setBackground(Color.WHITE);
//mettre les bouton en blanc
bouttons[o] = boutton;
o++;
boutton.getButton().setBorder(BorderFactory.createLineBorder(Color.BLACK)); //mettre une bordure sur les boutons
boutton.getButton().addActionListener(new ActionListener() { //attribuer l'action listener au boutons
boutton.getButton().setBorder(BorderFactory.createLineBorder(Color.BLACK));
//mettre une bordure autour des boutons
boutton.getButton().addActionListener(new ActionListener() {
//attribuer l'action listener au boutons
@Override
public void actionPerformed(ActionEvent e) { //Créer l'actionPerfomed lorsqu'on clique sur un bouton
boutton.getButton().setBackground(Color.RED); //On met le bouton en rouge
boutton.getButton().setEnabled(false); //et on le desactive
public void actionPerformed(ActionEvent e) {
//Créer l'actionPerfomed lorsqu'on clique sur un bouton
boutton.getButton().setBackground(Color.RED);
//On met le bouton en rouge
boutton.getButton().setEnabled(false);
//et on le desactive
}});
grille.add(boutton.getButton());
}
lettre++;
}
principal.add(grille,BorderLayout.CENTER); //ajout de cette grille au Jpanel principale
JPanel bas = new JPanel(new BorderLayout()); //Création d'un nouveau Jpanel
JPanel boutons = new JPanel(new FlowLayout()); //CRéation d'un nouveau Jpanel
principal.add(grille,BorderLayout.CENTER);
//ajout de cette grille au Jpanel principale
bas.add(boutons,BorderLayout.CENTER); //qui contient la grille de bouton
principal.add(bas,BorderLayout.SOUTH); //qu'on ajoute au panel principale
JPanel bas = new JPanel(new BorderLayout());
//Création d'un nouveau Jpanel
JPanel boutons = new JPanel(new FlowLayout());
//CRéation d'un nouveau Jpanel
JPanel vide = new JPanel(new FlowLayout());
principal.add(vide,BorderLayout.WEST);
bas.add(boutons,BorderLayout.CENTER);
//qui contient la grille de bouton
JPanel vide2 = new JPanel(new FlowLayout());
principal.add(vide,BorderLayout.EAST);
principal.add(bas,BorderLayout.SOUTH);
//qu'on ajoute au panel principale
}
}
......
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