/* test Position*/ int main() { Position pos1 = creerPosition(2,1); Position pos2 = creerPosition(2,4); int res1 = surGrille(2,4); int res2 = positions_relie(pos1,pos2); printf("%d",res2); return 0; }
void placerBateaux(JOU joueur){ int tailles_bateaux[5]={1,2,3,3,4}; int i=0; for(i=0;i<5;i++){ BAT bateau=creerBateau(tailles_bateaux[i]); int n_position=0; for(n_position=0;n_position<tailles_bateaux[i];n_position++){ int abscisse=0; int ordonnee=0; printf("Entrez l'abscisse de la position %d du bateau %d:\n",i+1,n_position+1); scanf("%d",&abscisse); printf("Entrez l'abscisse de la position %d du bateau %d:\n",i+1,n_position+1); scanf("%d",&abscisse); POS position=creerPosition(abscisse, ordonnee); while(!coordonneeValide(position)){ printf("Coordonnees invalide..."); printf("Entrez l'abscisse de la position %d du bateau %d:\n",i+1,n_position+1); scanf("%d",&abscisse); printf("Entrez l'ordonnee de la position %d du bateau %d:\n",i+1,n_position+1); scanf("%d",&ordonnee); set_x(position,abscisse); set_y(position,ordonnee); }/*end while*/ ajouterPosition(bateau,position); }/*end for*/ ajouterBateau(joueur,bateau); }/*end for*/ }
SPosition* transformerPosition(char* saisie) { SPosition* res = NULL; int x,y; int taille_chaine = strlen(saisie); if (taille_chaine == 2) { x = (int)(saisie[0] - 'A'); y = (int)(saisie[1] - '0' - 1); res = creerPosition(x,y); } else if(taille_chaine == 3) { x = (int)(saisie[0] - 'A'); y = (int)(saisie[1] - '0')*10; y += (int)(saisie[2] - '0' - 1); res = creerPosition(x,y); } return res; }
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; }
SPosition* positionHaut(SPosition* position) { return creerPosition(abscissePosition(position), ordonneePosition(position)+1); }
SPosition* positionBas(SPosition* position) { return creerPosition(abscissePosition(position), ordonneePosition(position)-1); }
SPosition* positionDroite(SPosition* position) { return creerPosition(abscissePosition(position)+1, ordonneePosition(position)); }
SPosition* positionGauche(SPosition* position) { return creerPosition(abscissePosition(position)-1, ordonneePosition(position)); }