Skip to content

hoverwars/TP-Awale

Repository files navigation

TP-Awale

Implémentation du jeu d'Awalé avec architecture client-serveur.

Structure du projet

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

Lancer le projet

Compilation avec Makefile

Le projet utilise un Makefile intelligent qui compile automatiquement selon le target choisi :

Compilation manuelle

# 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

Options du Makefile

  • TARGET_NAME : client ou server (obligatoire)
  • BUILD_MODE : debug (défaut) ou release
  • CC : Compilateur à utiliser (défaut: gcc)
  • CFLAGS : Flags de compilation personnalisés

Lancement avec les scripts (recommandé)

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: encodage

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.

Démarrer le serveur

# Rendre le script exécutable (première fois)
chmod +x server.sh

# Lancer le serveur sur le port 8080
./server.sh 8080

Le script server.sh :

  1. Nettoie automatiquement les fichiers compilés précédents
  2. Compile le serveur et ses dépendances
  3. Lance le serveur sur le port spécifié

Connecter un client

# 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 8080

Le script client.sh :

  1. Nettoie automatiquement les fichiers compilés précédents
  2. Compile le client et ses dépendances
  3. Se connecte au serveur spécifié

Exemple de session complète

# 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

Fonctionnalités du système de build

  • Compilation conditionnelle : Compile uniquement le target demandé
  • Détection automatique des fichiers : Trouve tous les .c et .h automatiquement. 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/ et server/bin/ contiennent le code compilé.

Manuel d'utilisation

Il est possible d'en apprendre plus sur les fonctionnalités disponibles sur l'application dans le fichier manuel.md

Diagrammes de séquence

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é.

About

TP Awale 4IFA en C

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •