Liste des commandes : bombe <nom> <texte> grille <nom> INCONNU = 0 BATEAU = 6 TOUCHE = 7 COULE = 8 EAU = 9 PORTE_AVION = 5 SOUS_MARIN = 4 CUIRASSE = 3 PNEUMATIQUE = 2 chat <nom> <texte> nom <nouveau nom> nouveau isPret (pour Maître de jeu) debut (pour Maître de jeu) fin (pour Maître de jeu) dir moi fenetre aide
Le 1er joueur qui se connecte au serveur est "Maître de jeu". C'est lui qui décide de démarrer la partie. C'est le seul aussi à pouvoir connaître le nombre de joueurs prêts (avec "isPret").
nom paul
.fenetre
puis en donnant les tty des fenêtres de destination.nouveau
. Exemple de saisie d'un bâteau: B5 v
pour un bâteau vertical en B5.isPret
.debut
.bombe paul B5
Côté serveur et côté client, on utilise un select
pour pouvoir écouter plusieurs ports à la fois.
Par exemple, le serveur écoute autant de ports que de clients, plus un port public, et l'entrée standard (console).
Le client écoute à la fois une boîte privée du serveur et l'entrée standard (console).
Lorsqu'un client fait une demande de connection au serveur (sur le port public), le serveur crée un boîte privée spécifiquement pour lui.
Les dialogues entre ce client et le serveur se feront par l'intermédiaire de cette boîte privée.
Nous avons mis en place un protocole en mode texte.
Chaque message est précédé d'un mot clef permettant de savoir ce qu'il contient.
Tous les messages passent par le serveur, il n'y a pas de liaison directe entre deux clients.
Notre programme respecte le cahier des charges. Tous les points ont été traités.
L'accent a été mis sur la clarté du code, dans une optique d'évolutivité.
En effet, le projet a été fait en C++, avec des classes et des méthodes bien distinctes.
La modularité permet de rajouter des fonctions aisément, sans avoir à analyser profondement l'ensemble duprogramme.