Commit 45cc9c26 authored by Jolan RENOUX's avatar Jolan RENOUX
Browse files

Merge remote-tracking branch 'origin/master' into master

parents 1fa4b739 562d581f
......@@ -3,14 +3,17 @@ package modele.info1.ships;
import javax.swing.*;
public class Bouttons {
//Initialisation d'une variable Jboutton et String
JButton bouton;
String co;
//Constructeur de notre objet
public Bouttons(JButton bouton,String co){
this.bouton = bouton;
this.co = co;
}
//Getters
public JButton getButton(){
return bouton;
}
......
......@@ -24,35 +24,47 @@ public class Coord implements ICoord {
* @throws BadCoordException si la chaine de caractère ne permet pas de définir une coordonnée alphanumérique
*/
public Coord(String xy) throws BadCoordException {
//Si la longueur de String est égale à trois
if(xy.length()==3){
//On vérifie si le premier caractère est bien une lettre et les deux suivants sont des chiffres.
if (Character.isLetter(xy.charAt(0))&&Character.isDigit(xy.charAt(1))&&Character.isDigit(xy.charAt(2))){
//On vérifie si la partie numérique est supèreieure a 10 si oui on renvoie un BadCoordException.
if (Integer.parseInt(xy.substring(1,3))>10)
throw new BadCoordException();
//on vérifie si ce n'est pas une lettre dérière J.
if (xy.charAt(0)>=75)
throw new BadCoordException();
//Construction des variables.
this.x=xy.substring(0,0);
this.y=xy.substring(1,3);
this.alphax=xy.charAt(0);
this.Coord=xy;
}
//Si le premier if ne passe pas alors on renvoie une exception.
else {
throw new BadCoordException();
}
}
//Si le test de longueur de 3 ne passe pas alors on va tester si notre string aa une longueur de 2.
if(xy.length()==2){
//On vérifie si le premier carcatère est une lettre et si le deuxième est un chiffre.
if (Character.isLetter(xy.charAt(0)) && Character.isDigit(xy.charAt(1))){
//on vérifie si ce n'est pas une lettre dérière J.
if (xy.charAt(0)>=75)
throw new BadCoordException();
//On vérifie si notre chiffre n'est pas 0
if (xy.charAt(1)==48)
throw new BadCoordException();
//Construction des variables.
this.x=xy.substring(0,0);
this.y=xy.substring(1,2);
this.alphax=xy.charAt(0);
this.Coord=xy;
}
//Si le premier if ne passe pas alors on renvoie une exception.
else {
throw new BadCoordException();
}
......@@ -67,19 +79,20 @@ public class Coord implements ICoord {
@Override
public int getX() {
int i;
//En table ASCII 65=A,66=B etc.... donc si on fait un A-64 ca nous donnera un int à 1,Si c'est B ca deviendra un int à 2 etc...
i = alphax-64;
//On retourne notre coordonée X sous forme d'int
return i;
}
@Override
public int getY() {
//On retourne un Integer a partir de la string de Y
return Integer.parseInt(y);
}
@Override
public String toString() {
return this.Coord;
}
public String toString() { return this.Coord; }
@Override
public boolean equals(Object o) {
......
......@@ -8,17 +8,21 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CreationB {
//Initialisation des variables
String[] co = new String[2];
Coord[] cord1 = new Coord[2];
int[] pays = new int[5];
//Constructeur
public CreationB(String str, String str2,int[] pays) {
this.co[0] = str;
this.co[1] = str2;
this.pays[0]=pays[0];this.pays[1]=pays[1];this.pays[2]=pays[2];this.pays[3]=pays[3];this.pays[4]=pays[4];
}
//Méthode de création de bateau qui retourne le bateau créé
public Ship TestCreation() throws CoordsBadShipException, BadCoordException {
//On va créer les Coordonées voulu par rapport a la string donée
try {
cord1[0] = new Coord(co[0]);
} catch (BadCoordException badCoordException) {
......@@ -30,7 +34,9 @@ public class CreationB {
badCoordException.printStackTrace();
}
//on vérifie la taille du bateau en fonction de ses coordonées
int taille = 0;
//On vérifie si le bateau est à l'horizontale
if (cord1[0].getY() == cord1[1].getY()) {
if (cord1[0].getX() > cord1[1].getX()){
taille = cord1[0].getX() - cord1[1].getX() + 1;
......@@ -38,70 +44,91 @@ public class CreationB {
taille = cord1[1].getX() - cord1[0].getX() + 1;
}
}
//Sinon on vérifie si il est à la verticale
if (cord1[0].getX() == cord1[1].getX()) {
if (cord1[0].getY() > cord1[1].getY()) {
taille = cord1[0].getY() - cord1[1].getY() + 1;
} else {
taille = cord1[1].getY() - cord1[0].getY() + 1;
}
//Ici on va vérifier si le bateau est ni à l'horizontale ni a la verticale
} else if (cord1[0].getY() != cord1[1].getY() && cord1[0].getX() != cord1[1].getX()) {
//On met taille à -1 pour pouvoir renvoyer une valeure null plus tard
taille = -1;
}
//On va créer un bateaux différents en fonction de la taille
switch (taille) {
case 1:
//On vérifie si il nous reste ce type de bateaux en disponibilité
if (pays[0]!=0) {
try {
//On test la création d'un sous marins avec les coordonées données.
Submarine s = new Submarine("s", co[0]);
return s;
} catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();}
} else {
//Si il n'y a plus de disponibilitées pour ce type de bateaux alors on affiche un message à l'utilisateur
JOptionPane.showMessageDialog(null, "Vous n'avez plus de Sous-marins disponibles");
return null;
}
case 2:
//On vérifie si il nous reste ce type de bateaux en disponibilité
if (pays[1]!=0) {
try {
//On test la création d'un Destroyer avec les coordonées données.
Destroyer d = new Destroyer("d", co[0], co[1]);
return d;
} catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();}
} else {
//Si il n'y a plus de disponibilitées pour ce type de bateaux alors on affiche un message à l'utilisateur
JOptionPane.showMessageDialog(null, "Vous n'avez plus de Torpilleurs disponibles");
return null;
}
case 3:
//On vérifie si il nous reste ce type de bateaux en disponibilité
if (pays[2]!=0) {
try {
//On test la création d'un Cruiser avec les coordonées données.
Cruiser c = new Cruiser("c", co[0], co[1]);
return c;
} catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();}
} else {
//Si il n'y a plus de disponibilitées pour ce type de bateaux alors on affiche un message à l'utilisateur
JOptionPane.showMessageDialog(null, "Vous n'avez plus de Croiseurs disponibles");
return null;
}
case 4:
//On vérifie si il nous reste ce type de bateaux en disponibilité
if (pays[3]!=0) {
try {
//On test la création d'un Battleship avec les coordonées données.
Battleship b = new Battleship("b", co[0], co[1]);
return b;
} catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();}
} else {
//Si il n'y a plus de disponibilitées pour ce type de bateaux alors on affiche un message à l'utilisateur
JOptionPane.showMessageDialog(null, "Vous n'avez plus de Cuirassés disponibles");
return null;
}
case 5:
//On vérifie si il nous reste ce type de bateaux en disponibilité
if (pays[4]!=0) {
try {
//On test la création d'un Porte-Avion avec les coordonées données.
AircraftCarrier a = new AircraftCarrier("a", co[0], co[1]);
return a;
} catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();}
} else {
//Si il n'y a plus de disponibilitées pour ce type de bateaux alors on affiche un message à l'utilisateur
JOptionPane.showMessageDialog(null, "Vous n'avez plus de Porte-Avions disponibles");
return null;
}
case -1:
// en cas de -1 cela veut dire que le bateau est positioné en diagonale
JOptionPane.showMessageDialog(null, "Merci de choisir une bonne taille de bateau, pas de diagonale, la taille doit être comprise entre 1 et 5");
return null;
default:
// Ici cela voudra dire que la taille récupérée est plus grande que le max autorisé
JOptionPane.showMessageDialog(null, "la taille doit être comprise entre 1 et 5");
return null;
}
......
......@@ -13,9 +13,12 @@ import java.util.Objects;
public abstract class Ship implements IShip { //Class shipe implémentant l'interface IShip
private String name; //Argument : nom
Coord cord1; //Argument : Coordonnée de l'avant
Coord cord2; //Argument : Coordonnée de l'arriere
private String name;
//Argument : nom
Coord cord1;
//Argument : Coordonnée de l'avant
Coord cord2;
//Argument : Coordonnée de l'arriere
/**
......@@ -29,96 +32,134 @@ public abstract class Ship implements IShip { //Class shipe implé
* @throws CoordsBadShipException si les coordonnées données ne permettent pas de définir un bateau correct :
* une ligne, une colonne, de la bonne taille, etc.
*/
public Ship(String name, String ayFront, String ayBack) //Constructeur avec les argument
throws BadCoordException, CoordsBadShipException { //qui peut renvoyer les exceptions
this.name=name; //attribue les argument à leur variables d'instances réspectives
this.cord1=new Coord(ayFront); //convertie les coordonnée de String en Coord
this.cord2=new Coord(ayBack); //idem
if(getCategory().getSize()!=getSize()){ //verifie si la taille du bateau correspond bien a son type
throw new CoordsBadShipException(); //renvoie une erreur si ce n'est pas le cas
public Ship(String name, String ayFront, String ayBack)
//Constructeur avec les argument
throws BadCoordException, CoordsBadShipException {
//qui peut renvoyer les exceptions
this.name=name;
//attribue les argument à leur variables d'instances réspectives
this.cord1=new Coord(ayFront);
//convertie les coordonnée de String en Coord
this.cord2=new Coord(ayBack);
//idem
if(getCategory().getSize()!=getSize()){
//verifie si la taille du bateau correspond bien a son type
throw new CoordsBadShipException();
//renvoie une erreur si ce n'est pas le cas
}
}
@Override
public List<ICoord> getCoords() { //methode renvoyant la liste des coordonnée sur lesquelle sont le bateau
ArrayList<ICoord> list = new ArrayList<>(); //création d'une arrayList qui contiendra ces coordonnées
Coord icord1 = cord1; //création de variable contenant ce qu'il y a dans les variable d'instance
Coord icord2 = cord2; //idem
public List<ICoord> getCoords() {
//methode renvoyant la liste des coordonnée sur lesquelle sont le bateau
ArrayList<ICoord> list = new ArrayList<>();
//création d'une arrayList qui contiendra ces coordonnées
Coord icord1 = cord1;
//création de variable contenant ce qu'il y a dans les variable d'instance
Coord icord2 = cord2;
//idem
int j = 0;
if(cord1.toString().equals(cord2.toString())){
//on vérifie si la taille du bateau est égale à 1.
list.add(cord1);
} else {
if(cord1.getY()==cord2.getY()){
// boucle avec un nombre d'occurence égale à la taille du bateau que l'on veut créer
for(int i =0;i<getSize();i++){
char c;
if(cord1.alphax>cord2.alphax){
//Si la coordonée 1 est plus grande que la deux alors on va reduire de 1 par 1 le X
c = (char) (icord1.alphax - i);
} else {
//Si la coordonée 1 est plus petite que la deux alors on vas incrémenter de 1 en 1 le X
c = (char) (icord1.alphax + i);
}
//On ajoute la coordonée modifiée à notre liste de retour
try { list.add(new Coord(c+icord1.y)); } catch (BadCoordException e) { e.printStackTrace();}
}
}
if(cord1.getX()==cord2.getX()){
for(int i =0;i<getSize();i++){
if(cord1.getY()>cord2.getY()){
//Si la coordonée 1 est plus grande que la deux alors on va reduire de 1 par 1 le Y
String c = String.valueOf(icord1.getY()-i);
try { list.add(new Coord(icord1.alphax+c)); } catch (BadCoordException e) {e.printStackTrace();}
} else {
//Si la coordonée 1 est plus petite que la deux alors on vas incrémenter de 1 en 1 le Y
String c = String.valueOf(icord1.getY()+i);
try { list.add(new Coord(icord1.alphax+c)); } catch (BadCoordException e) {e.printStackTrace();}
}
}
}
}
return list; //return l'arrayList pleine
return list;
//return l'arrayList pleine
}
@Override
public ICoord getFront() {
return cord1;
} //getter de la coordonnée avant
}
//getter de la coordonnée avant
@Override
public ICoord getBack() {
return cord2;
} //getter de la coordonnée arrière
}
//getter de la coordonnée arrière
@Override
public String getName() {
return this.name;
} //getter du nom du bateau
}
//getter du nom du bateau
@Override
public int getSize() { //Methode pour avoir la taille du bateau
if(cord1.getY()==cord2.getY()){ //test si le bateau est dans le sens horizontale
if(cord1.getX()>cord2.getX()) //test si le bateau est de droite a gauche
return cord1.getX()-cord2.getX()+1; //retourne sa taille
return cord2.getX()-cord1.getX()+1; //retourne sa taille s'il est de gauche a droite
public int getSize() {
//Methode pour avoir la taille du bateau
if(cord1.getY()==cord2.getY()){
//test si le bateau est dans le sens horizontal
if(cord1.getX()>cord2.getX())
//test si le bateau est de droite a gauche
return cord1.getX()-cord2.getX()+1;
//retourne sa taille
return cord2.getX()-cord1.getX()+1;
//retourne sa taille s'il est de gauche a droite
}
if(cord1.getX()==cord2.getX()){ //test si le bateau est dans le sens verticale
if(cord1.getY()>cord2.getY()) //test si le bateau est de bas en haut
return cord1.getY()-cord2.getY()+1; //retourne sa taille
return cord2.getY()-cord1.getY()+1; //retourne sa taille s'il est de haut en bas
if(cord1.getX()==cord2.getX()){
//test si le bateau est dans le sens verticale
if(cord1.getY()>cord2.getY())
//test si le bateau est de bas en haut
return cord1.getY()-cord2.getY()+1;
//retourne sa taille
return cord2.getY()-cord1.getY()+1;
//retourne sa taille s'il est de haut en bas
}
return -1; //retourne -1 si la methode si aucun des test n'est concluant (bug)
return -1;
//retourne -1 si la methode si aucun des test n'est concluant (bug)
}
public ShipCategory gettheCategory(){
return getCategory();
} //retourne la catégorie du bateau
}
//retourne la catégorie du bateau
@Override
public boolean equals(Object o) { //methode redéfinissant le equals
if (this == o) return true; //retourne true s'ils sont égaux
if (o == null || getClass() != o.getClass()) return false; // retourne false si equals n'a pas d'argument ou si les bateaux ne sont pas de la même classe
public boolean equals(Object o) {
//methode redéfinissant le equals
if (this == o) return true;
//retourne true s'ils sont égaux
if (o == null || getClass() != o.getClass()) return false;
// retourne false si equals n'a pas d'argument ou si les bateaux ne sont pas de la même classe
Ship ship = (Ship) o;
return Objects.equals(name, ship.name) && Objects.equals(cord1, ship.cord1) && Objects.equals(cord2, ship.cord2); //retourne
return Objects.equals(name, ship.name) && Objects.equals(cord1, ship.cord1) && Objects.equals(cord2, ship.cord2);
}
@Override
public String toString() { //methode toString
public String toString() {
//methode toString
return "Ship{" +
"name='" + name + '\'' +
", cord1=" + cord1 +
......@@ -129,5 +170,6 @@ public abstract class Ship implements IShip { //Class shipe implé
@Override
public int hashCode() {
return Objects.hash(name, cord1, cord2);
} //retourne le hashcode
}
//retourne le hashcode
}
......@@ -50,26 +50,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);
}
......@@ -79,36 +90,55 @@ 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.
//Boucle for avec 110 occurences pour remplir le reste du tableaux
for (int i = 0; i < (11 * 10); i++) {
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
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.
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] à 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.
final CreationB c = new CreationB(co[0],co[1],pays);
try {if(c.TestCreation()!=null){
//Si le résultat du return de test création n'est pas null
int ret = flotte.add(c.TestCreation());
......@@ -116,8 +146,10 @@ public class FenetreConnexion extends JFrame {
if(flotte.isBelgianConfiguration() || flotte.isFrenchConfiguration()){
System.out.println("FLotte pleine");
}
if(ret==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(ret==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(s==ShipCategory.SUBMARINE){
pays[0]--;
} if (s==ShipCategory.DESTROYER) {
......@@ -129,42 +161,61 @@ public class FenetreConnexion extends JFrame {
} 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
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.
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.
}
}
} else if(ret==-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(ret==-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<