Bonjour à tous,
Je fais actuellement un bataille navale en Java et j'ai un problème concernant une de mes classes.
J'aimerais faire une méthode qui retourne un tableau de tous ses compartiments (voir classe compartiment ci-dessous) . --> Création mer() : vérifie si aucun bateau n'a de compartiment qui concerne (x;y).
Si c'est le cas, nouvel objet compartiment de type mer (à mettre dans la liste mer)
Je pensais à utiliser des booléens et des conditions.
P.-S : Est-ce que le @Override est obligatoire ? (voir ci-dessous)
Voici ma classe Bateau
Voici ma classe FLOTTE -c'est ici (à la fin) que je pensais intégrer les conditions etc. mais que je n'arrive pas à faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 public class Bateau { public enum orientation{ NORD, EST } private int nbCases; private Compartiment bateau[]; private String nom; public Bateau(int nBCases, String nom) { this.nbCases = nbCases; this.nom = nom; this.bateau = new Compartiment[nBCases]; } public void setNom(String nom) { this.nom = nom; } public String getNom(){ return this.nom; } public int getNbCases(){ return nbCases; } public boolean getEtat(int numCompartiment) { return this.bateau[numCompartiment].getEtat; } public void hit(int numCompartiment){ this.bateau[numCompartiment].setEtat(false); } public void placeMonBateau(int x, int y, orientation or) { if(or == or.NORD){ for(int i=0; i<this.getNbCases;i++){ this.bateau[i] = new Compartiment(true, x, y, false); y--; } } else { for(int i=0; i<this.getNbCases;i++){ this.bateau[i] = new Compartiment(true, x, y, false); x++; } } } @Override public String toString() { String b=""; for(int i = 0; i<this.bateau.length;i++){ if(this.getEtat(i)==true) { b=b+"[O]"; } else { b=b+"[X]"; } } return b; } }
Je vous met aussi la dernière classe pour que vous ayez le code complet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 import java.util.ArrayList; public class Flotte { private ArrayList<Bateau> mesBateaux; private ArrayList<Compartiment> mer; public Flotte() { mesBateaux = new ArrayList<Bateau>(); prepareFlotte(); } public void prepareFlotte(){ mesBateaux.add(new Bateau(5, "Porte-avions")); mesBateaux.add(new Bateau(4, "Croiseur")); mesBateaux.add(new Bateau(3, "Contre-torpilleurs")); mesBateaux.add(new Bateau(3, "Sous-marin")); mesBateaux.add(new Bateau(2, "Torpilleur")); } public void placement1(){ mesBateaux.get(0).placeMonBateau(0,0, Bateau.orientation.EST); mesBateaux.get(1).placeMonBateau(0,9, Bateau.orientation.NORD); mesBateaux.get(2).placeMonBateau(1,9, Bateau.orientation.EST); mesBateaux.get(3).placeMonBateau(9,9, Bateau.orientation.NORD); mesBateaux.get(4).placeMonBateau(4,4, Bateau.orientation.EST); } public void creationMer(){ for(int i=0; i<=9;i++){ for (int j=0; j<=9; j++){ for(int k=0; k<mesBateaux.size();k++){ // verification : boucle ??? } } } } }
Pourriez-vous aussi me faire part de toutes vos critiques sur le code ? Car après j'aimerais travailler avec les interfaces graphiques et puis pourquoi pas une app Android. Le but est de faire le "coeur" du programme en console. Je tiens à préciser que je suis débutant (je programme depuis 8 mois environs).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class Compartiment { private boolean etat; private int x; private int y; private boolean mer; public Compartiment(boolean etat, int x, int y, boolean mer) { this.etat = etat; this.x = x; this.y = y; this.mer = mer; } public boolean getEtat(){ return this.etat; } public int getX(){ return this.x; } public int getY(){ return this.y; } public boolean getMer(){ return this.mer; } public void setEtat(boolean etat){ this.etat = etat; } }
Merci d'avance pour votre aide
Partager