navy
Présentation par Loïc BRANSTETT et Felix Dehlinger
Le 27/03/2019
Sommaire
- Présentation du projet
- Organisation
- Architecture
- Tests automatisé
- Bonus
- 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
navy
By urgau-1
navy
- 100