DOC

GitHub Repo

깃허브저장소링크

MP4

https://drive.google.com/file/d/1b9vKhuzZ4pjE4UMbTWPidGl43IPbh7zM/view?usp=sharing

🕹️ Mafia Game with I2C LCD (Thread & Mutex 기반 프로젝트)

— lcd에 남은 시간 출력에 그림 첨부

📌 개요 (Overview)

본 프로젝트는 TCP 네트워크 기반 마피아 게임을 구현한 것으로, 멀티 클라이언트 지원, 게임 페이즈 제어, I2C LCD 디바이스 드라이버 연동, 그리고 멀티스레드 동기화(Thread & Mutex) 기법을 사용함

⚙️ 시스템 구조 (System Architecture)

Client 1        Client 2       ...     Client N
   │               │                     │
   ▼               ▼                     ▼
 ┌──────────────────────────────────────────┐
 │           🧠 Game Server (C)             │
 │   - TCP 접속 관리 (socket)                │
 │   - Thread별 클라이언트 처리               │
 │   - Mutex로 게임 상태 보호                 │
 │   - LCD 드라이버를 통한 상태 출력          │
 └──────────────────────────────────────────┘
                            │
                            ▼
               /dev/lcd_i2c (I2C LCD 디바이스)

🔧 구성 개요

구성 요소 설명
client.c 사용자가 접속하여 게임을 플레이할 수 있는 클라이언트 프로그램
server.c 서버에서 플레이어 연결, 게임 로직 관리, LCD 출력 포함
game.c 마피아 게임의 역할 분배, 투표 처리, 승리 조건 등 핵심 게임 로직
network.c TCP 소켓 기반 서버/클라이언트 소켓 생성 유틸리티
utils.c 문자열 처리 도우미 함수 (예: 개행 문자 제거 등)

🧵 Thread & Mutex 사용 목적


🎮 게임 진행 흐름

게임은 다음과 같은 페이즈(phase) 기반으로 동작

image.png

  1. PHASE_WAIT

    image.png