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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
| package BatNav;
//Classe réalisée par Laure
/*Méthode de la classe :
* - constructeur
* - getters and setters
* - méthode qui test si la liste est vide : vide()
* - méthode qui ajoute un objet à la fin de la liste : AjoutNavFin(NodeNav N)
* - méthode qui supprime un noeud de la liste : SuprNav(Navires N)
* - méthode qui donne le nombre d'éléments de la liste : NbElement()
* - méthode qui renvoi la valeur du ième élément de la liste : DonneElement()
* - main de test de méthode
*/
//Creation de la classe liste chainée qui recevra les différents types de Navires de chaque joueur
public class ListeNav {
private NodeNav premier;
//constructeur
public ListeNav(){
this.premier=null;
}
//getters and setters
public NodeNav getPremier() {
return premier;
}
public void setPremier(NodeNav premier) {
this.premier = premier;
}
//méthode qui test si la liste est vide (on l'utilisera lorsqu'on testera si le joueur à gagner ou non)
//J'ai repris la métode du TD
public boolean vide(){
return premier == null;
}
//Méthode qui ajoute un objet navire à la fin de la liste
//J'ai repris la méthode du TD
public void ajoutNavFin(Navires n) {
NodeNav nn= new NodeNav(n);
// cas particulier List vide
if (premier == null){
premier = nn;
}
else {
//On créé Ncourant : noeud courant (noeud sur lequel nous menons l'étude à un moemnt donné)
NodeNav ncourant = premier;
// avancer tant que suivant non null
while (ncourant.getSuivant() != null) {
ncourant = ncourant.getSuivant();
}
// ici suivant est null
// on peut donc inserer le noeud N
ncourant.setSuivant(nn);
}
}
//Méthode qui supprime un noeud de la liste
//Dans cette méthode, on cherche le noeud qui précède le noeud à supprimer
public void suprNav(Navires n){
//cas de la liste vide
if(vide()){
return;
}
else {
//le premier élément n'a pas d'élément qui le précède
//Son deuxième élèment est null donc on met le premier égal au deuxième
//note : on pourrait mettre directement null, mais je garde ici la méthode utilisée dans le cas ou le premier élément est différent de la valeur voulue
if (premier.getNavire()==n){
premier=premier.getSuivant();
}
else {
NodeNav ncourant = premier; //On créé un noeud de "parcours" fictif, qu'on place sur le premier noeud (comme à la méthode précédente)
NodeNav suivNcourant = premier.getSuivant(); //On référence également le noeud suivant le noeud de parcours
//On cherche à positionner SuivNcourant sur le noeud à supprimer
while (suivNcourant != null && suivNcourant.getNavire() != n){
//note : attention à l'ordre !
ncourant = suivNcourant;
suivNcourant = suivNcourant.getSuivant();
}
/* à la sortie de la boucle
* soit il n'y avait pas de navire N et le "noeud suivant le noeud courant" est null
* soit on est sur le noeud suivant le noeud courant contient la même chose que le noeud N
*/
if(suivNcourant != null){
ncourant.setSuivant(suivNcourant.getSuivant());
}
}
}
}
//Méthode qui donne le nombre d'élément de la liste
public int nbElement(){
//On traite le cas ou la liste est vide
if(vide()){
return 0;
}
int i=1; //Variable nous servant à l'incrémentation
NodeNav ncourant = premier;
while (ncourant != null){
ncourant = ncourant.getSuivant();
i++;
}
return i;
}
//Méthode qui me donne l'élément "i" de la liste
public Navires donneElement(int i){
//On traite le cas ou la liste est vide
if(vide()){
System.out.println("La liste est vide");
}
NodeNav ncourant = premier;
System.out.println(ncourant.getNavire().getNomNavire());
int j = 0;
while (j!=i){
if (ncourant == null){
System.out.println("aie aie aie");
}
ncourant=ncourant.getSuivant();
j++;
}
return ncourant.getNavire();
}
//Main de test de méthode
public static void main (String args[]){
ListeNav testListe = new ListeNav();
testListe.vide();
ListeCoord testListeCo = new ListeCoord();
Joueur j = new Joueur ("JTest",1,false,testListeCo);
int tabTest[][] = new int[2][2];
int tabTest1[][] = new int[2][2];
int tabTest2[][] = new int[2][2];
int tabTest3[][] = new int[2][2];
//on test l'ajout de Navires et la suppression du premier élément
Navires testNav = new Navires("B1",2,tabTest,false,j);
testListe.ajoutNavFin(testNav);
testListe.suprNav(testNav);
//on test les méthodes dans le cas d'un noeud quelconque de la liste
Navires testNav1 = new Navires("B2",2,tabTest1,false,j);
Navires testNav2 = new Navires("B3",2,tabTest2,false,j);
Navires testNav3 = new Navires("B4",2,tabTest3,false,j);
testListe.ajoutNavFin(testNav);
testListe.ajoutNavFin(testNav1);
testListe.ajoutNavFin(testNav2);
testListe.ajoutNavFin(testNav3);
testListe.nbElement();
testListe.donneElement(3);
testListe.suprNav(testNav2);
}
} |
Partager