-
Notifications
You must be signed in to change notification settings - Fork 0
/
bateau.c
69 lines (66 loc) · 2.05 KB
/
bateau.c
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
#include "bateau.h"
Bateau creerBateau(Position p, char sens, int l)
{
/*Creer un bateau de position de tete p, avec les nouvelles position qui suivent le sens de s.*/
Bateau *Bat=malloc(sizeof(int)+ sizeof(Position)+2*sizeof(*TListe)); //Car la liste contiendra des positions et elle est constituée de 2 pointeurs suivant et précédent du type liste doublement chainée
Bat->longueur=l;
Position *p1=creerPosition(getXPos(p),getYPos(p));
AjoutDebut(Bat->positions, p1);
int i;
for (i=1;i<l;i++){
if (sens=='v'){
setYPos(p1,getYPos(p1)+1);
}
else if (sens=='h'){
setXPos(p1,getXPos(p1)+1);
}
AjoutDebut (Bat->positions, p1);
}
return Bat;
}
Bateau supprPosition(Bateau b, Position p)
{
/*bool flag = False;
/* Supprime la position p du bateau quand on sait qu'elle est la et diminue ainsi la longueur du bateau*/
k = b->positions;
while (k != p && k->suivant != NULL)
{
k=k->suivant;
}//On se trouve sur la liste à supprimer
if (comparerPosition(k,p))//On supprime les positions
{
k->suivant->precedent = k->precedent;
k->precedent->suivant = k->suivant;
k->suivant = NULL;
k->precedent = NULL;
b->longueur = b->longueur-1;
}
return b;
}
bool positionPresente(Bateau b, Position p)
{
/* Retourne True si cette position appartient au bateau. */
bool present = False;
while (b->positions != p && b->positions != NULL){
b->positions->suivant;
}
return comparerPosition(b->positions, p);
}
bool bateauEnVue(Bateau b, Position p)
{
/* retourne True si le bateau est en vue de la position p.*/
return b->positions->x == p->x || b->positions->y != p->y;
}
bool EstCoule(Bateau b)
{
/* Retourne True si le bateau n'a plus de position 'en vie'.*/
/* On enleve les positions et on décremente la longueur => Si longueur
nulle => bateau coule
*/
return b->longueur == 0;
}
int getTaille(Bateau b)
{
/*On récupère la taille du bateau*/
return b->longueur;
}