Skip to content

m-juin/LemIPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

106 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lem-IPC

Inter-Process Communication Battle Game (42 Project)

Made with C98 Graphics: SDL3 Platform


Introduction

Lem-IPC est un projet de programmation système du cursus de 42 traitant de la communication entre processus (IPC). L'objectif est de faire s'affronter des joueurs (divisés en équipes) sur un plateau 2D.

Chaque joueur est un processus indépendant communiquant via les outils System V. Le projet met l'accent sur la synchronisation des ressources partagées et la stratégie de groupe par échange de messages, sans aucun lien de parenté (fork) entre les processus.


Règles du Jeu

L'objectif est de mener son équipe à la victoire en éliminant les adversaires.

  • Combat : Un joueur est éliminé s'il est entouré par au moins 2 joueurs d'une même équipe adverse sur des cases adjacentes (diagonales incluses).
  • Mort : Lorsqu'un processus détecte son encerclement, il doit quitter le plateau et libérer sa place proprement.
  • Placement : Une case ne peut contenir qu'un seul joueur à la fois.
  • Vision : Les joueurs voient le numéro d'équipe sur les cases occupées, mais ne peuvent pas distinguer l'identité des joueurs.

Architecture IPC (System V)

Le projet repose sur l'utilisation rigoureuse de trois types de ressources :

  • Shared Memory (SHM) : Stockage du plateau de jeu accessible par tous.
  • Semaphores : Gestion des accès concurrents pour éviter les "race conditions" lors des déplacements.
  • Message Queues (MSGQ) : Canal de communication exclusif pour la stratégie interne des équipes.

Caractéristiques & Contraintes

Fonctionnalité Description Statut
Langage Code écrit entièrement en C98 (Norme ANSI).
Zéro Fork Chaque processus joueur est lancé indépendamment.
Initialisation Le premier joueur crée les segments SHM, MSGQ et les sémaphores.
Cleanup Le dernier joueur présent nettoie toutes les ressources IPC du système.
Visualiseur Exécutable dédié séparé utilisant la SDL.

Screenshots

Capture d'écran 2026-05-12 144157 Capture d'écran 2026-05-12 144127

Usage

Compilation

make                 # Compile l'exécutable lemipc.
make clean           # Supprime les fichiers objets.
make fclean          # Supprime les objets et les exécutables.
make Visualizer      # Compile le visualizer.
make run             # Lance $(PTR) fois l'executable répartis entre $(TEAMCOUNT) équipes.
make run_visualizer  # Lance le visualizer.

Lancement

  1. Lancer le visualiseur :
./Visualizer
  1. Lancer plusieurs joueurs :
make run
  1. Lancer d'un joueur unique:
./lemipc [TEAM ID]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages