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;
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
}
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