Aide pour la programmation Soit :
d : la distance (int) qui sépare le tir du navire.
x : la position horizontale du navire.
y : la position verticale du navire.
posx_bat : la position horizontale du tir.
posy_bat : la position verticale du tir.
La distance qui sépare le navire du tir est calculé par la formule suivante :
d =(int) (sqrt ((x- posx_bat)*(x- posx_bat)+(y- posy_bat)*(y- posy_bat)))
N’oubliez pas d’inclure la bibliothèque ‹math.h›
Complément d’informations pour la programmation
En mode texte on dessinera un tableau avec des numéros de 0 à 9 en hauteur et longueur. Les cases en elles-mêmes seront symbolisées par des points.
Dans un premier temps, on indiquera la solution afin de pouvoir contrôler le bon fonctionnement de notre programme.
Dans un second temps, la solution ne sera pas plus donnée et les coups précédemment tirés seront signifiés par des * au lieu du . .
La fonction atoi permet de transformer une chaîne de caractère en nombre. Pour connaître sa syntaxe consulter l’aide.
Exemple de solution
#include <conio.h> #include <math.h> #include <stdlib.h> /* Dessine le plateau de jeu */ void plateau () { int i=0,j=0; clrscr (); gotoxy (3,1); for (i=0; i<10; i++) printf ("%d ",i); for (i=0; i<10; i++) { gotoxy (1,2+i); printf ("%d ",i); for (j=0; j<10; j++) printf (". "); } gotoxy (1,12); printf ("Ligne : "); gotoxy (11,12); printf ("Colonne : "); gotoxy (1,13); printf ("Distance : "); } /* Saisie un chiffre en position x y */ int saisie_chiffre (int x, int y) { char car; char chaine [2]; int sortie = 1; /* Ok on peut sortir */ do { /* On efface la précédente case */ gotoxy (x,y); printf (" "); /* On se repositionne pour la saisie */ gotoxy (x,y); car = getch (); if ((car<'0') || (car>'9')) { /* Saisie incorrect : beep */ sound (1000); delay (10); nosound (); /* On doit recommencer */ sortie = 0; } else sortie = 1; }
Initiation au langage C (59 KO) (Cours PDF)