Commit 562d581f authored by Tristan MAISONNEUVE's avatar Tristan MAISONNEUVE
Browse files

Ajout bcp de comentaires

parent d6f9e4cb
...@@ -3,14 +3,17 @@ package modele.info1.ships; ...@@ -3,14 +3,17 @@ package modele.info1.ships;
import javax.swing.*; import javax.swing.*;
public class Bouttons { public class Bouttons {
//Initialisation d'une variable Jboutton et String
JButton bouton; JButton bouton;
String co; String co;
//Constructeur de notre objet
public Bouttons(JButton bouton,String co){ public Bouttons(JButton bouton,String co){
this.bouton = bouton; this.bouton = bouton;
this.co = co; this.co = co;
} }
//Getters
public JButton getButton(){ public JButton getButton(){
return bouton; return bouton;
} }
......
...@@ -24,35 +24,47 @@ public class Coord implements ICoord { ...@@ -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 * @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 { public Coord(String xy) throws BadCoordException {
//Si la longueur de String est égale à trois
if(xy.length()==3){ 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))){ 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) if (Integer.parseInt(xy.substring(1,3))>10)
throw new BadCoordException(); throw new BadCoordException();
//on vérifie si ce n'est pas une lettre dérière J.
if (xy.charAt(0)>=75) if (xy.charAt(0)>=75)
throw new BadCoordException(); throw new BadCoordException();
//Construction des variables.
this.x=xy.substring(0,0); this.x=xy.substring(0,0);
this.y=xy.substring(1,3); this.y=xy.substring(1,3);
this.alphax=xy.charAt(0); this.alphax=xy.charAt(0);
this.Coord=xy; this.Coord=xy;
} }
//Si le premier if ne passe pas alors on renvoie une exception.
else { else {
throw new BadCoordException(); 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){ 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))){ 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) if (xy.charAt(0)>=75)
throw new BadCoordException(); throw new BadCoordException();
//On vérifie si notre chiffre n'est pas 0
if (xy.charAt(1)==48) if (xy.charAt(1)==48)
throw new BadCoordException(); throw new BadCoordException();
//Construction des variables.
this.x=xy.substring(0,0); this.x=xy.substring(0,0);
this.y=xy.substring(1,2); this.y=xy.substring(1,2);
this.alphax=xy.charAt(0); this.alphax=xy.charAt(0);
this.Coord=xy; this.Coord=xy;
} }
//Si le premier if ne passe pas alors on renvoie une exception.
else { else {
throw new BadCoordException(); throw new BadCoordException();
} }
...@@ -67,19 +79,20 @@ public class Coord implements ICoord { ...@@ -67,19 +79,20 @@ public class Coord implements ICoord {
@Override @Override
public int getX() { public int getX() {
int i; 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; i = alphax-64;
//On retourne notre coordonée X sous forme d'int
return i; return i;
} }
@Override @Override
public int getY() { public int getY() {
//On retourne un Integer a partir de la string de Y
return Integer.parseInt(y); return Integer.parseInt(y);
} }
@Override @Override
public String toString() { public String toString() { return this.Coord; }
return this.Coord;
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
......
...@@ -8,17 +8,21 @@ import java.awt.event.ActionEvent; ...@@ -8,17 +8,21 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
public class CreationB { public class CreationB {
//Initialisation des variables
String[] co = new String[2]; String[] co = new String[2];
Coord[] cord1 = new Coord[2]; Coord[] cord1 = new Coord[2];
int[] pays = new int[5]; int[] pays = new int[5];
//Constructeur
public CreationB(String str, String str2,int[] pays) { public CreationB(String str, String str2,int[] pays) {
this.co[0] = str; this.co[0] = str;
this.co[1] = str2; 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]; 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 { public Ship TestCreation() throws CoordsBadShipException, BadCoordException {
//On va créer les Coordonées voulu par rapport a la string donée
try { try {
cord1[0] = new Coord(co[0]); cord1[0] = new Coord(co[0]);
} catch (BadCoordException badCoordException) { } catch (BadCoordException badCoordException) {
...@@ -30,7 +34,9 @@ public class CreationB { ...@@ -30,7 +34,9 @@ public class CreationB {
badCoordException.printStackTrace(); badCoordException.printStackTrace();
} }
//on vérifie la taille du bateau en fonction de ses coordonées
int taille = 0; int taille = 0;
//On vérifie si le bateau est à l'horizontale
if (cord1[0].getY() == cord1[1].getY()) { if (cord1[0].getY() == cord1[1].getY()) {
if (cord1[0].getX() > cord1[1].getX()){ if (cord1[0].getX() > cord1[1].getX()){
taille = cord1[0].getX() - cord1[1].getX() + 1; taille = cord1[0].getX() - cord1[1].getX() + 1;
...@@ -38,70 +44,91 @@ public class CreationB { ...@@ -38,70 +44,91 @@ public class CreationB {
taille = cord1[1].getX() - cord1[0].getX() + 1; 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].getX() == cord1[1].getX()) {
if (cord1[0].getY() > cord1[1].getY()) { if (cord1[0].getY() > cord1[1].getY()) {
taille = cord1[0].getY() - cord1[1].getY() + 1; taille = cord1[0].getY() - cord1[1].getY() + 1;
} else { } else {
taille = cord1[1].getY() - cord1[0].getY() + 1; 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()) { } 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; taille = -1;
} }
//On va créer un bateaux différents en fonction de la taille
switch (taille) { switch (taille) {
case 1: case 1:
//On vérifie si il nous reste ce type de bateaux en disponibilité
if (pays[0]!=0) { if (pays[0]!=0) {
try { try {
//On test la création d'un sous marins avec les coordonées données.
Submarine s = new Submarine("s", co[0]); Submarine s = new Submarine("s", co[0]);
return s; return s;
} catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();} } catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();}
} else { } 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"); JOptionPane.showMessageDialog(null, "Vous n'avez plus de Sous-marins disponibles");
return null; return null;
} }
case 2: case 2:
//On vérifie si il nous reste ce type de bateaux en disponibilité
if (pays[1]!=0) { if (pays[1]!=0) {
try { try {
//On test la création d'un Destroyer avec les coordonées données.
Destroyer d = new Destroyer("d", co[0], co[1]); Destroyer d = new Destroyer("d", co[0], co[1]);
return d; return d;
} catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();} } catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();}
} else { } 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"); JOptionPane.showMessageDialog(null, "Vous n'avez plus de Torpilleurs disponibles");
return null; return null;
} }
case 3: case 3:
//On vérifie si il nous reste ce type de bateaux en disponibilité
if (pays[2]!=0) { if (pays[2]!=0) {
try { try {
//On test la création d'un Cruiser avec les coordonées données.
Cruiser c = new Cruiser("c", co[0], co[1]); Cruiser c = new Cruiser("c", co[0], co[1]);
return c; return c;
} catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();} } catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();}
} else { } 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"); JOptionPane.showMessageDialog(null, "Vous n'avez plus de Croiseurs disponibles");
return null; return null;
} }
case 4: case 4:
//On vérifie si il nous reste ce type de bateaux en disponibilité
if (pays[3]!=0) { if (pays[3]!=0) {
try { try {
//On test la création d'un Battleship avec les coordonées données.
Battleship b = new Battleship("b", co[0], co[1]); Battleship b = new Battleship("b", co[0], co[1]);
return b; return b;
} catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();} } catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();}
} else { } 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"); JOptionPane.showMessageDialog(null, "Vous n'avez plus de Cuirassés disponibles");
return null; return null;
} }
case 5: case 5:
//On vérifie si il nous reste ce type de bateaux en disponibilité
if (pays[4]!=0) { if (pays[4]!=0) {
try { 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]); AircraftCarrier a = new AircraftCarrier("a", co[0], co[1]);
return a; return a;
} catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();} } catch (BadCoordException | CoordsBadShipException badCoordException) {badCoordException.printStackTrace();}
} else { } 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"); JOptionPane.showMessageDialog(null, "Vous n'avez plus de Porte-Avions disponibles");
return null; return null;
} }
case -1: 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"); 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; return null;
default: 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"); JOptionPane.showMessageDialog(null, "la taille doit être comprise entre 1 et 5");
return null; return null;
} }
......
...@@ -13,9 +13,12 @@ import java.util.Objects; ...@@ -13,9 +13,12 @@ import java.util.Objects;
public abstract class Ship implements IShip { //Class shipe implémentant l'interface IShip public abstract class Ship implements IShip { //Class shipe implémentant l'interface IShip
private String name; //Argument : nom private String name;
Coord cord1; //Argument : Coordonnée de l'avant //Argument : nom
Coord cord2; //Argument : Coordonnée de l'arriere 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é ...@@ -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 : * @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. * une ligne, une colonne, de la bonne taille, etc.
*/ */
public Ship(String name, String ayFront, String ayBack) //Constructeur avec les argument public Ship(String name, String ayFront, String ayBack)
throws BadCoordException, CoordsBadShipException { //qui peut renvoyer les exceptions //Constructeur avec les argument
this.name=name; //attribue les argument à leur variables d'instances réspectives throws BadCoordException, CoordsBadShipException {
this.cord1=new Coord(ayFront); //convertie les coordonnée de String en Coord //qui peut renvoyer les exceptions
this.cord2=new Coord(ayBack); //idem this.name=name;
if(getCategory().getSize()!=getSize()){ //verifie si la taille du bateau correspond bien a son type //attribue les argument à leur variables d'instances réspectives
throw new CoordsBadShipException(); //renvoie une erreur si ce n'est pas le cas 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 @Override
public List<ICoord> getCoords() { //methode renvoyant la liste des coordonnée sur lesquelle sont le bateau public List<ICoord> getCoords() {
ArrayList<ICoord> list = new ArrayList<>(); //création d'une arrayList qui contiendra ces coordonnées //methode renvoyant la liste des coordonnée sur lesquelle sont le bateau
Coord icord1 = cord1; //création de variable contenant ce qu'il y a dans les variable d'instance ArrayList<ICoord> list = new ArrayList<>();
Coord icord2 = cord2; //idem //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; int j = 0;
if(cord1.toString().equals(cord2.toString())){ if(cord1.toString().equals(cord2.toString())){
//on vérifie si la taille du bateau est égale à 1.
list.add(cord1); list.add(cord1);
} else { } else {
if(cord1.getY()==cord2.getY()){ 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++){ for(int i =0;i<getSize();i++){
char c; char c;
if(cord1.alphax>cord2.alphax){ 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); c = (char) (icord1.alphax - i);
} else { } 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); 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();} try { list.add(new Coord(c+icord1.y)); } catch (BadCoordException e) { e.printStackTrace();}
} }
} }
if(cord1.getX()==cord2.getX()){ if(cord1.getX()==cord2.getX()){
for(int i =0;i<getSize();i++){ for(int i =0;i<getSize();i++){
if(cord1.getY()>cord2.getY()){ 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); String c = String.valueOf(icord1.getY()-i);
try { list.add(new Coord(icord1.alphax+c)); } catch (BadCoordException e) {e.printStackTrace();} try { list.add(new Coord(icord1.alphax+c)); } catch (BadCoordException e) {e.printStackTrace();}
} else { } 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); String c = String.valueOf(icord1.getY()+i);
try { list.add(new Coord(icord1.alphax+c)); } catch (BadCoordException e) {e.printStackTrace();} 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 @Override
public ICoord getFront() { public ICoord getFront() {
return cord1; return cord1;
} //getter de la coordonnée avant }
//getter de la coordonnée avant
@Override @Override
public ICoord getBack() { public ICoord getBack() {
return cord2; return cord2;
} //getter de la coordonnée arrière }
//getter de la coordonnée arrière
@Override @Override
public String getName() { public String getName() {
return this.name; return this.name;
} //getter du nom du bateau }
//getter du nom du bateau
@Override @Override
public int getSize() { //Methode pour avoir la taille du bateau public int getSize() {
if(cord1.getY()==cord2.getY()){ //test si le bateau est dans le sens horizontale //Methode pour avoir la taille du bateau
if(cord1.getX()>cord2.getX()) //test si le bateau est de droite a gauche if(cord1.getY()==cord2.getY()){
return cord1.getX()-cord2.getX()+1; //retourne sa taille //test si le bateau est dans le sens horizontal
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 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.getX()==cord2.getX()){
if(cord1.getY()>cord2.getY()) //test si le bateau est de bas en haut //test si le bateau est dans le sens verticale
return cord1.getY()-cord2.getY()+1; //retourne sa taille if(cord1.getY()>cord2.getY())
return cord2.getY()-cord1.getY()+1; //retourne sa taille s'il est de haut en bas //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(){ public ShipCategory gettheCategory(){
return getCategory(); return getCategory();
} //retourne la catégorie du bateau }
//retourne la catégorie du bateau
@Override @Override
public boolean equals(Object o) { //methode redéfinissant le equals public boolean equals(Object o) {
if (this == o) return true; //retourne true s'ils sont égaux //methode redéfinissant le equals
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 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; 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 @Override
public String toString() { //methode toString public String toString() {
//methode toString
return "Ship{" + return "Ship{" +
"name='" + name + '\'' + "name='" + name + '\'' +
", cord1=" + cord1 + ", cord1=" + cord1 +
...@@ -129,5 +170,6 @@ public abstract class Ship implements IShip { //Class shipe implé ...@@ -129,5 +170,6 @@ public abstract class Ship implements IShip { //Class shipe implé
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(name, cord1, cord2); return Objects.hash(name, cord1, cord2);
} //retourne le hashcode }
//retourne le hashcode
} }
This diff is collapsed.
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