navy

Présentation par Loïc BRANSTETT et Felix Dehlinger

Le 27/03/2019

Sommaire

  1. Présentation du projet
  2. Organisation
  3. Architecture
  4. Tests automatisé
  5. Bonus
  6. Questions ?

Présentation du projet

navy est un Sea Battle Program.

my_pid: 2426
waiting for enemy connection...

enemy connected

my positions:
 |A B C D E F G H
-+---------------
1|2 3 4 5 . . . .
2|2 3 4 5 . . . .
3|. 3 4 5 . . . .
4|. . 4 5 . . . .
5|. . . 5 . . . .
6|. . . . . . . .
7|. . . . . . . .
8|. . . . . . . .
enemy's positions:
 |A B C D E F G H
-+---------------
1|. . . . . . . .
2|. . . . . . . .
3|. . . . . . . .
4|. . . . . . . .
5|. . . . . . . .
6|. . . . . . . .
7|. . . . . . . .
8|. . . . . . . .

Organisation

Architecture

Affichage de la map utilisateur et adversaire

Envoie d'une coordonné a frappé

Récupération et traitement du message de retour

Tour de l'adversaire et donc traitement de sa demande

Vérification de la fin du jeu

Récupération des arguments et gestion d'erreurs

Passage de la map

Initialisation de la connexion par signaux et affichage du pid

Architecture

navy.h:
#ifndef NAVY_H_
#define NAVY_H_

#define MSG_LENGHT 19
#define TYPE_LENGHT 3

#define TYPE_PID   "001"
#define TYPE_HIT   "011"
#define TYPE_TOUCH "100"
#define TYPE_MISS  "110"

/* MSG SEND */
int navy_msg_send(navy_t *navy, char msg[MSG_LENGHT]);
int navy_msg_send_pid(navy_t *navy);
int navy_msg_send_pos(navy_t *navy, char type[3], pos_t pos);

/* MSG HANDLE */
int navy_msg_handle(navy_t *navy);
int navy_msg_handle_pid(navy_t *navy, char data[DATA_LENGHT + 1]);
int navy_msg_handle_hit(navy_t *navy, char data[DATA_LENGHT + 1]);
int navy_msg_handle_touch(navy_t *navy, char data[DATA_LENGHT + 1]);
int navy_msg_handle_miss(navy_t *navy, char data[DATA_LENGHT + 1]);

#endif

Architecture

0 1 1 0 0 0 1 0 0 1
1 0 0 0 1 0 1 1 0

Buffer de 19 bits

3 bits de type et 16 bits de donnée

navy.h:

#define TYPE_PID   "001"
#define TYPE_HIT   "011"
#define TYPE_TOUCH "100"
#define TYPE_MISS  "110"

Tests automatisé

$ make tests_run
cat maps/map2false | ./navy maps/map
cat maps/maptest | ./navy <PID> maps/map2

$ ls maps/
map
mapfalse
maptest
map2 
map2false
map2test
$ cat maps/map2false | ./navy maps/map
my_pid: 3062
waiting for enemy connection...

enemy connected

my positions:
[...]
$ cat maps/maptest | ./navy 3062 maps/map2
my_pid: 3062
successfully connected

my positions:
[...]

Terminal 1:

Terminal 2:

Bonus

Ajout de couleurs sur les maps (ennemie, comme la notre)

Questions ?

FIN

Made with Slides.com