Implémentation du jeu d'Awalé avec architecture client-serveur.
TP-Awale/
├── client/ # Code du client
│ ├── client.c # Programme client principal
├── ...
│ └── bin/ # Exécutables compilés du client
├── server/ # Code du serveur
│ ├── server.c # Programme serveur principal
│ ├── ...
│ └── bin/ # Exécutables compilés du serveur
├── shared/ # Code partagé entre client et serveur
│ ├── ...
├── Makefile # Système de compilation
├── client.sh # Script de lancement du client
├── server.sh # Script de lancement du serveur
└── README.md # Ce fichier
Le projet utilise un Makefile intelligent qui compile automatiquement selon le target choisi :
# Compiler le client
make TARGET_NAME=client
# Compiler le serveur
make TARGET_NAME=server
# Compilation optimisée (release)
make TARGET_NAME=server BUILD_MODE=release
# Nettoyer les fichiers compilés
make clean TARGET_NAME=client
make clean-all # Nettoie client ET serveur
# Voir les options disponibles
make help- TARGET_NAME :
clientouserver(obligatoire) - BUILD_MODE :
debug(défaut) ourelease - CC : Compilateur à utiliser (défaut:
gcc) - CFLAGS : Flags de compilation personnalisés
Premièrement, comme nous développons sur Windows et Mac, nous avons parfois rencontré des problèmes d'encodage de fichier. En lançant les scripts décrits dans la suite de cette documentation, vous pourriez rencontrer l'erreur suivante:

Cela signifie que le script server.sh ou client.sh est encodé en CRLF au lieu de LF. Tentez de changer l'encodage avant de le relancer.
# Rendre le script exécutable (première fois)
chmod +x server.sh
# Lancer le serveur sur le port 8080
./server.sh 8080Le script server.sh :
- Nettoie automatiquement les fichiers compilés précédents
- Compile le serveur et ses dépendances
- Lance le serveur sur le port spécifié
# Rendre le script exécutable (première fois)
chmod +x client.sh
# Se connecter au serveur local
./client.sh localhost 8080
# Se connecter à un serveur distant
./client.sh 192.168.1.100 8080Le script client.sh :
- Nettoie automatiquement les fichiers compilés précédents
- Compile le client et ses dépendances
- Se connecte au serveur spécifié
# Terminal 1 - Serveur
./server.sh 8080
# Terminal 2 - Client 1
./client.sh 127.0.0.1 8080
# Terminal 3 - Client 2
./client.sh 127.0.0.1 8080- Compilation conditionnelle : Compile uniquement le target demandé
- Détection automatique des fichiers : Trouve tous les
.cet.hautomatiquement. Il est actuellement impossible d'ajouter des sous-dossiers dans server, client et shared. - Cross-platform : Gère automatiquement les librairies système (sockets Windows/Linux)
- Validation des paramètres : Vérifie que TARGET_NAME est valide
- Stockage des fichiers compilés :
client/bin/etserver/bin/contiennent le code compilé.
Il est possible d'en apprendre plus sur les fonctionnalités disponibles sur l'application dans le fichier manuel.md
Des diagrammes de séquence qui expliquent les fonctionnalités sont disponibles dans explications/diagramme_de_sequence. Le nom du fichier svg correspond au titre de la fonctionnalité.