Skip to content

khg9859/Mafia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

26 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๋งˆํ”ผ์•„ ๊ฒŒ์ž„ (Mafia Game)

์ž๋ฐ” ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฐ˜์˜ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ๋งˆํ”ผ์•„ ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.

โœจ ๋ชฉ์ฐจ

  1. ๋น ๋ฅธ ์‹œ์ž‘
  2. ๊ฒŒ์ž„ ๋ฐฉ๋ฒ•
  3. ์—ญํ•  ์„ค๋ช…
  4. ์ฃผ์š” ๊ธฐ๋Šฅ
  5. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ
  6. ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
  7. ๊ธฐ์ˆ  ์Šคํƒ

โœจ ๋น ๋ฅธ ์‹œ์ž‘

ํ•„์š” ์กฐ๊ฑด

  • Java 17 ์ด์ƒ
  • Maven 3.6 ์ด์ƒ

์„ค์น˜ ๋ฐฉ๋ฒ•

# ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/khg9859/Mafia.git
cd Mafia

# Maven ๋นŒ๋“œ
mvn clean package

์‹คํ–‰ ๋ฐฉ๋ฒ•

1. ์„œ๋ฒ„ ์‹คํ–‰

java -jar target/mafia-game-1.0.0-server-executable.jar
  1. ์„œ๋ฒ„ GUI๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค
  2. Port Number ํ™•์ธ (๊ธฐ๋ณธ๊ฐ’: 30000)
  3. "Start Server" ๋ฒ„ํŠผ ํด๋ฆญ
  4. ํ”Œ๋ ˆ์ด์–ด ์ ‘์† ๋Œ€๊ธฐ

2. ํด๋ผ์ด์–ธํŠธ ์‹คํ–‰ (์—ฌ๋Ÿฌ ๊ฐœ ๊ฐ€๋Šฅ)

java -jar target/mafia-game-1.0.0-client-executable.jar
  1. User Name ์ž…๋ ฅ
  2. IP Address ์ž…๋ ฅ (๋กœ์ปฌ: 127.0.0.1)
  3. Port Number ์ž…๋ ฅ (์„œ๋ฒ„์™€ ๋™์ผ)
  4. "Connect to Game" ๋ฒ„ํŠผ ํด๋ฆญ

3. ๊ฒŒ์ž„ ์‹œ์ž‘

  • ์ตœ์†Œ 4๋ช… ์ด์ƒ ์ ‘์† ํ•„์š”
  • ์„œ๋ฒ„์—์„œ "Start Game" ๋ฒ„ํŠผ ํด๋ฆญ

ํ…Œ์ŠคํŠธ ๋ชจ๋“œ

๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ž๋™ํ™” ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค.

ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ•:

MafiaGameServer.java 74๋ฒˆ ์ค„:

private static final boolean TEST_MODE = true;

MafiaGameClientMain.java 52๋ฒˆ ์ค„:

private static final boolean TEST_MODE = true;

ํ…Œ์ŠคํŠธ ๋ชจ๋“œ ๊ธฐ๋Šฅ:

  • ํด๋ผ์ด์–ธํŠธ: ์ž๋™ ๋กœ๊ทธ์ธ (๋žœ๋ค ์ด๋ฆ„ ์ƒ์„ฑ)
  • ์„œ๋ฒ„: 8๋ช… ์ ‘์† ์‹œ ์ž๋™ ๊ฒŒ์ž„ ์‹œ์ž‘

๋น ๋ฅธ ํ…Œ์ŠคํŠธ:

# ์ปดํŒŒ์ผ
mvn clean compile

# ์„œ๋ฒ„ ์‹คํ–‰
java -cp target/classes mafia.game.MafiaGameServer &

# ํด๋ผ์ด์–ธํŠธ 8๊ฐœ ์‹คํ–‰
for i in {1..8}; do
  java -cp target/classes mafia.game.MafiaGameClientMain &
  sleep 0.5
done

โœจ ๊ฒŒ์ž„ ๋ฐฉ๋ฒ•

๊ฒŒ์ž„ ์ง„ํ–‰ ์ˆœ์„œ

1๋‹จ๊ณ„: ๋Œ€๊ธฐ (WAITING)

  • ์ตœ์†Œ 4๋ช… ์ด์ƒ ์ ‘์†
  • ์„œ๋ฒ„ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฒŒ์ž„ ์‹œ์ž‘

2๋‹จ๊ณ„: ๋ฐค (NIGHT) - 30์ดˆ

  • ๋งˆํ”ผ์•„: ์ œ๊ฑฐํ•  ๋Œ€์ƒ ์„ ํƒ
  • ์˜์‚ฌ: ๋ณดํ˜ธํ•  ๋Œ€์ƒ ์„ ํƒ
  • ๊ฒฝ์ฐฐ: ์กฐ์‚ฌํ•  ๋Œ€์ƒ ์„ ํƒ
  • ๊ธฐํƒ€ ํŠน์ˆ˜ ์ง์—…: ๋Šฅ๋ ฅ ์‚ฌ์šฉ
  • ์‹œ๋ฏผ: ๋Œ€๊ธฐ

3๋‹จ๊ณ„: ๋ฐค ๊ฒฐ๊ณผ ๋ฐœํ‘œ

  • ๋งˆํ”ผ์•„์—๊ฒŒ ์ œ๊ฑฐ๋œ ์‚ฌ๋žŒ ๊ณต๊ฐœ
  • ์˜์‚ฌ ๋ณดํ˜ธ ์„ฑ๊ณต ์‹œ ์ƒ์กด
  • ๊ตฐ์ธ ๋ฐฉ์–ด๋ง‰์œผ๋กœ ์ƒ์กด ๊ฐ€๋Šฅ

4๋‹จ๊ณ„: ๋‚ฎ (DAY) - 30์ดˆ

  • ์ž์œ  ํ† ๋ก 
  • ์˜์‹ฌ๋˜๋Š” ์‚ฌ๋žŒ ์ฐพ๊ธฐ
  • ๊ธฐ์ž ํŠน์ข… ๋ฐœํ‘œ (ํ•ด๋‹น ์‹œ)
  • ์„ฑ์ง์ž ๋ถ€ํ™œ (ํ•ด๋‹น ์‹œ)

5๋‹จ๊ณ„: ํˆฌํ‘œ (VOTE) - 20์ดˆ

  • ์˜์‹ฌ๋˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ํˆฌํ‘œ
  • ์ตœ๋‹ค ๋“ํ‘œ์ž ์ œ๊ฑฐ
  • ๋™์  ์‹œ ์•„๋ฌด๋„ ์ œ๊ฑฐ ์•ˆ ๋จ

6๋‹จ๊ณ„: ์ตœํ›„์˜ ๋ฐ˜๋ก  - 15์ดˆ

  • ์ œ๊ฑฐ ๋Œ€์ƒ์ž์˜ ๋ณ€๋ก 
  • ์ฐฌ๋ฐ˜ ํˆฌํ‘œ๋กœ ์ตœ์ข… ๊ฒฐ์ •

7๋‹จ๊ณ„: ์Šน๋ฆฌ ์กฐ๊ฑด ํ™•์ธ

  • ์‹œ๋ฏผ ํŒ€ ์Šน๋ฆฌ: ๋ชจ๋“  ๋งˆํ”ผ์•„ ์ œ๊ฑฐ
  • ๋งˆํ”ผ์•„ ํŒ€ ์Šน๋ฆฌ: ๋งˆํ”ผ์•„ ์ˆ˜ โ‰ฅ ์‹œ๋ฏผ ์ˆ˜

์กฐ๊ฑด ๋ฏธ์ถฉ์กฑ ์‹œ 2๋‹จ๊ณ„๋กœ ๋ฐ˜๋ณต

ํ”Œ๋ ˆ์ด ํŒ

์‹œ๋ฏผ ํŒ€ ์ „๋žต:

  • ๊ฒฝ์ฐฐ ์ •๋ณด ์‹ ์ค‘ํžˆ ํŒ๋‹จ
  • ํˆฌํ‘œ ํŒจํ„ด ๋ถ„์„
  • ํ–‰๋™ ํŒจํ„ด ๊ด€์ฐฐ
  • ์ •๋ณด ๊ณต์œ 

๋งˆํ”ผ์•„ ํŒ€ ์ „๋žต:

  • ์‹œ๋ฏผ์ฒ˜๋Ÿผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ–‰๋™
  • ๋Šฅ๋ ฅ์ž(์˜์‚ฌ/๊ฒฝ์ฐฐ) ์šฐ์„  ์ œ๊ฑฐ
  • ๋‹ค๋ฅธ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ์˜์‹ฌ ์œ ๋„
  • ๋™๋ฃŒ์™€ ํˆฌํ‘œ ๋ถ„์‚ฐ

โœจ ์—ญํ•  ์„ค๋ช…

๋งˆํ”ผ์•„ ํŒ€

๋งˆํ”ผ์•„ (MAFIA)

  • ๋ฐค์— ์‹œ๋ฏผ ํ•œ ๋ช… ์ œ๊ฑฐ
  • ๋งˆํ”ผ์•„ ์ˆ˜ โ‰ฅ ์‹œ๋ฏผ ์ˆ˜ ์‹œ ์Šน๋ฆฌ
  • 4๋ช…: 1๋ช… / 5๋ช… ์ด์ƒ: 2๋ช…

์ŠคํŒŒ์ด (SPY)

  • ๋ฐค์— ํ•œ ๋ช…์˜ ์ง์—… ์กฐ์‚ฌ
  • ๋งˆํ”ผ์•„ ์กฐ์‚ฌ ์‹œ ์ ‘์„ ํ•˜์—ฌ ๋งˆํ”ผ์•„ ํŒ€ ํ•ฉ๋ฅ˜
  • ๊ตฐ์ธ์—๊ฒŒ ์ •์ฒด ๋…ธ์ถœ

๋งˆ๋‹ด (MADAME)

  • ๋‚ฎ ํˆฌํ‘œ๋กœ ํ”Œ๋ ˆ์ด์–ด ์œ ํ˜น
  • ์œ ํ˜น๋‹นํ•œ ํ”Œ๋ ˆ์ด์–ด๋Š” ๋ฐค ๋Šฅ๋ ฅ ์‚ฌ์šฉ ๋ถˆ๊ฐ€
  • ๋งˆํ”ผ์•„ ์œ ํ˜น ์‹œ ์ ‘์„ ํ•˜์—ฌ ๋งˆํ”ผ์•„ ํŒ€ ํ•ฉ๋ฅ˜

์‹œ๋ฏผ ํŒ€

์˜์‚ฌ (DOCTOR)

  • ๋ฐค์— ํ•œ ๋ช… ๋ณดํ˜ธ
  • ๋งˆํ”ผ์•„ ๊ณต๊ฒฉ ๋ฐฉ์–ด

๊ฒฝ์ฐฐ (POLICE)

  • ๋ฐค์— ํ•œ ๋ช… ์กฐ์‚ฌ
  • ๋งˆํ”ผ์•„ ์—ฌ๋ถ€ ํ™•์ธ

์ •์น˜์ธ (POLITICIAN)

  • ํˆฌํ‘œ๋กœ ์ฃฝ์ง€ ์•Š์Œ
  • 2ํ‘œ ํ–‰์‚ฌ

๊ตฐ์ธ (SOLDIER)

  • ๋งˆํ”ผ์•„ ๊ณต๊ฒฉ 1ํšŒ ๋ฐฉ์–ด
  • ์ŠคํŒŒ์ด ์กฐ์‚ฌ ์‹œ ์ŠคํŒŒ์ด ์ •์ฒด ํŒŒ์•…

์˜๋งค (SHAMAN)

  • ์ฃฝ์€ ์ž ๋Œ€ํ™” ํ™•์ธ
  • ํ•œ ๋ช… ์„ฑ๋ถˆ์‹œ์ผœ ์ง์—… ํ™•์ธ

๊ธฐ์ž (REPORTER)

  • 2~8์ผ์ฐจ ๋ฐค์— ํ•œ ๋ช… ์ทจ์žฌ
  • ๋‹ค์Œ ๋‚  ์ง์—… ๊ณต๊ฐœ

๋„๊ตด๊พผ (GHOUL)

  • ์ฒซ๋‚  ๋ฐค ๋งˆํ”ผ์•„ ํฌ์ƒ์ž์˜ ์ง์—… ํš๋“

๊ฑด๋‹ฌ (GANGSTER)

  • ๋ฐค๋งˆ๋‹ค ํ•œ ๋ช… ์„ ํƒ
  • ๋‹ค์Œ ๋‚  ํˆฌํ‘œ ๊ธˆ์ง€

์„ฑ์ง์ž (PRIEST)

  • ๊ฒŒ์ž„ ์ค‘ 1ํšŒ ๋ถ€ํ™œ ๋Šฅ๋ ฅ
  • ์„ฑ๋ถˆ๋œ ํ”Œ๋ ˆ์ด์–ด๋Š” ๋ถ€ํ™œ ๋ถˆ๊ฐ€

์‹œ๋ฏผ (CITIZEN)

  • ํŠน๋ณ„ ๋Šฅ๋ ฅ ์—†์Œ
  • ํˆฌํ‘œ๋กœ ๋งˆํ”ผ์•„ ์ฐพ๊ธฐ

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

1. ์ชฝ์ง€ ์‹œ์Šคํ…œ

๋‚ฎ ์‹œ๊ฐ„์— ์ต๋ช… ์ชฝ์ง€ ์ „์†ก ๊ฐ€๋Šฅ

์‚ฌ์šฉ๋ฒ•:

/whisper [๋Œ€์ƒ] [๋‚ด์šฉ]

ํŠน์ง•:

  • ์ต๋ช… ์ „์†ก
  • ์‹œ๊ฐ„๋‹น ์ตœ๋Œ€ 10๊ฐœ ์ œํ•œ
  • 200์ž ์ œํ•œ

2. ๋กœ๋น„ ์‹œ์Šคํ…œ

๊ฒŒ์ž„ ์‹œ์ž‘ ์ „ 30์ดˆ ๋Œ€๊ธฐ์‹ค

๊ธฐ๋Šฅ:

  • ์ค€๋น„ ์ƒํƒœ ํ™•์ธ
  • ์—ญํ•  ์„ ํ˜ธ๋„ ์„ค์ • (์ตœ๋Œ€ 3๊ฐœ)
  • ์ž์œ  ์ฑ„ํŒ…
  • ๋ชจ๋‘ ์ค€๋น„ ์‹œ ์ž๋™ ์‹œ์ž‘

3. ํ†ต๊ณ„ ์‹œ์Šคํ…œ

ํ”Œ๋ ˆ์ด์–ด ๊ธฐ๋ก ์ถ”์  ๋ฐ ์—…์ 

๋ช…๋ น์–ด:

/stats              - ๋‚ด ํ†ต๊ณ„
/leaderboard        - ๋ฆฌ๋”๋ณด๋“œ
/achievements       - ์—…์  ํ™•์ธ

์—…์  ๋ชฉ๋ก:

  • ์ฒซ ์Šน๋ฆฌ
  • ์™„๋ฒฝํ•œ ๋งˆํ”ผ์•„
  • ์ƒ์กด์™• (10๊ฒŒ์ž„ ์—ฐ์†)
  • ๋ช…ํƒ์ • (๋งˆํ”ผ์•„ 3๋ช… ์ด์ƒ ์ฐพ๊ธฐ)
  • ๋ถˆ์‚ฌ์กฐ (2๋ฒˆ ๋ถ€ํ™œ)
  • ๋ฒ ํ…Œ๋ž‘ (100๊ฒŒ์ž„)
  • ์ฑ”ํ”ผ์–ธ (์Šน๋ฅ  70% ์ด์ƒ)

4. ์‹ค์‹œ๊ฐ„ ํˆฌํ‘œ ์ง‘๊ณ„

ํˆฌํ‘œ ์ง„ํ–‰ ์ƒํ™ฉ ์‹ค์‹œ๊ฐ„ ํ‘œ์‹œ

๊ธฐ๋Šฅ:

  • ๋“ํ‘œ์ˆ˜ ๋ฐ” ์ฐจํŠธ
  • ํˆฌํ‘œ์œจ ๊ณ„์‚ฐ
  • ๊ณต๊ฐœ/์ต๋ช… ๋ชจ๋“œ

์˜ˆ์‹œ:

ํ”Œ๋ ˆ์ด์–ด1: โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘ 8ํ‘œ
ํ”Œ๋ ˆ์ด์–ด2: โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘ 7ํ‘œ
ํ”Œ๋ ˆ์ด์–ด3: โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ 4ํ‘œ

5. ์—ญํ•  ๊ฐ€์ด๋“œ

๋ชจ๋“  ์—ญํ• ์˜ ์ƒ์„ธ ์„ค๋ช…

๋ช…๋ น์–ด:

/guide              - ๋‚ด ์—ญํ•  ๊ฐ€์ด๋“œ
/guide MAFIA        - ๋งˆํ”ผ์•„ ๊ฐ€์ด๋“œ
/tutorial           - ๊ธฐ๋ณธ ํŠœํ† ๋ฆฌ์–ผ
/help               - ๋„์›€๋ง

6. ๊ฐ์ • ํ‘œํ˜„

์ด๋ชจ์ง€๋กœ ๊ฐ์ • ํ‘œํ˜„

๋ช…๋ น์–ด:

/emotion THUMBS_UP          - ๐Ÿ‘
/emotion SHOCKED Player1    - Player1์—๊ฒŒ ๐Ÿ˜ฑ
/emotions                   - ์ด๋ชจ์ง€ ๋ชฉ๋ก

์ด๋ชจ์ง€ ์ข…๋ฅ˜:

  • ๊ธ์ •: ๐Ÿ‘ ๐Ÿ‘ โค๏ธ ๐Ÿ˜„ ๐ŸŽ‰
  • ๋ถ€์ •: ๐Ÿ‘Ž ๐Ÿ˜ก ๐Ÿ˜ข ๐Ÿ’”
  • ์ค‘๋ฆฝ: ๐Ÿค” ๐Ÿ˜ ๐Ÿคท
  • ๊ฒŒ์ž„: ๐Ÿ˜ฑ ๐ŸŽฏ ๐Ÿ” โš ๏ธ ๐Ÿค ๐ŸŽญ ๐Ÿ’€

7. ์žฌ์ ‘์† ๊ธฐ๋Šฅ

์—ฐ๊ฒฐ ๋Š๊น€ ์‹œ 30์ดˆ ๋‚ด ์žฌ์ ‘์† ๊ฐ€๋Šฅ

๊ธฐ๋Šฅ:

  • ๊ฒŒ์ž„ ์ƒํƒœ ์ž๋™ ์ €์žฅ
  • ์—ญํ• , ์ •๋ณด ๋ณต์›
  • ์ฑ„ํŒ… ํžˆ์Šคํ† ๋ฆฌ ์ œ๊ณต
  • ํƒ€์ž„์•„์›ƒ ์‹œ ์ž๋™ ์ฒ˜๋ฆฌ

8. ์ด๋ฒคํŠธ ๋ชจ๋“œ

์‹œ์ฆŒ๋ณ„ ํŠน๋ณ„ ์ด๋ฒคํŠธ

ํฌ๋ฆฌ์Šค๋งˆ์Šค ์ด๋ฒคํŠธ (12์›”):

  • ์‚ฐํƒ€๊ฐ€ ๋žœ๋ค ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ 2ํ‘œ ์Šคํ‚ฌ ์„ ๋ฌผ
  • ํฌ๋ฆฌ์Šค๋งˆ์Šค ํ…Œ๋งˆ ๋ฉ”์‹œ์ง€

ํ–ฅํ›„ ์ถ”๊ฐ€ ์˜ˆ์ •:

  • ํ• ๋กœ์œˆ (10์›”): ๋ฑ€ํŒŒ์ด์–ด, ๋Š‘๋Œ€์ธ๊ฐ„
  • ์„ค๋‚  (1-2์›”): ์ ์Ÿ์ด, ์กฐ์ƒ๋‹˜
  • ์—ฌ๋ฆ„ (7-8์›”): ๋ผ์ดํ”„๊ฐ€๋“œ, ์ƒ์–ด

โœจ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๋งˆํ”ผ์•„2/
โ”œโ”€โ”€ src/main/java/mafia/game/
โ”‚   โ”œโ”€โ”€ MafiaGameServer.java          # ์„œ๋ฒ„ ๋ฉ”์ธ
โ”‚   โ”œโ”€โ”€ MafiaGameClientMain.java      # ํด๋ผ์ด์–ธํŠธ ๋กœ๊ทธ์ธ
โ”‚   โ”œโ”€โ”€ MafiaGameClientView.java      # ํด๋ผ์ด์–ธํŠธ ๊ฒŒ์ž„ ํ™”๋ฉด
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ models/                        # ๋ฐ์ดํ„ฐ ๋ชจ๋ธ
โ”‚   โ”‚   โ”œโ”€โ”€ PlayerStatistics.java
โ”‚   โ”‚   โ””โ”€โ”€ Message.java
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ features/                      # ๊ธฐ๋Šฅ ๋ชจ๋“ˆ
โ”‚   โ”‚   โ”œโ”€โ”€ WhisperManager.java        # ์ชฝ์ง€ ์‹œ์Šคํ…œ
โ”‚   โ”‚   โ”œโ”€โ”€ LobbyManager.java          # ๋กœ๋น„ ์‹œ์Šคํ…œ
โ”‚   โ”‚   โ”œโ”€โ”€ StatisticsManager.java     # ํ†ต๊ณ„ ์‹œ์Šคํ…œ
โ”‚   โ”‚   โ”œโ”€โ”€ VoteTracker.java           # ํˆฌํ‘œ ์ง‘๊ณ„
โ”‚   โ”‚   โ”œโ”€โ”€ RoleGuideManager.java      # ์—ญํ•  ๊ฐ€์ด๋“œ
โ”‚   โ”‚   โ”œโ”€โ”€ EmotionManager.java        # ๊ฐ์ • ํ‘œํ˜„
โ”‚   โ”‚   โ””โ”€โ”€ ReconnectionManager.java   # ์žฌ์ ‘์† ๊ด€๋ฆฌ
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ events/                        # ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ
โ”‚       โ””โ”€โ”€ EventModeManager.java
โ”‚
โ”œโ”€โ”€ src/main/resources/
โ”‚   โ”œโ”€โ”€ GameSound/                     # ๊ฒŒ์ž„ ์‚ฌ์šด๋“œ
โ”‚   โ””โ”€โ”€ info/                          # ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค
โ”‚
โ”œโ”€โ”€ game_data/statistics/              # ํ”Œ๋ ˆ์ด์–ด ํ†ต๊ณ„ ์ €์žฅ
โ”œโ”€โ”€ pom.xml                            # Maven ์„ค์ •
โ””โ”€โ”€ README.md                          # ์ด ํŒŒ์ผ

โœจ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ

๋นŒ๋“œ ๋ช…๋ น์–ด

# ์ปดํŒŒ์ผ๋งŒ
mvn compile

# ํ…Œ์ŠคํŠธ ๋ฐ ํŒจํ‚ค์ง•
mvn clean package

# ํ…Œ์ŠคํŠธ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋นŒ๋“œ
mvn clean package -DskipTests

๋””์ž์ธ ํŒจํ„ด

Singleton Pattern

  • ๋ชจ๋“  ๋งค๋‹ˆ์ € ํด๋ž˜์Šค

Observer Pattern

  • ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ์‹œ์Šคํ…œ

Strategy Pattern

  • ์—ญํ• ๋ณ„ ์ „๋žต

Builder Pattern

  • ๋ณต์žกํ•œ ๊ฐ์ฒด ์ƒ์„ฑ

Memento Pattern

  • ์žฌ์ ‘์† ์ƒํƒœ ์ €์žฅ

์ƒˆ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐฉ๋ฒ•

1. ์ƒˆ ๋งค๋‹ˆ์ € ์ƒ์„ฑ

public class CustomManager {
    private static CustomManager instance;
    
    public static synchronized CustomManager getInstance() {
        if (instance == null) {
            instance = new CustomManager();
        }
        return instance;
    }
    
    private CustomManager() {
        // ์ดˆ๊ธฐํ™”
    }
}

2. ์„œ๋ฒ„์— ํ†ตํ•ฉ

public class MafiaGameServer {
    private CustomManager customManager;
    
    private void initializeManagers() {
        customManager = CustomManager.getInstance();
    }
}

์ƒˆ ์ด๋ฒคํŠธ ์ถ”๊ฐ€

EventMode newEvent = new EventMode.Builder("NEW_EVENT", "์ƒˆ ์ด๋ฒคํŠธ")
    .description("์„ค๋ช…")
    .activePeriod(Month.APRIL, 1, Month.APRIL, 30)
    .addSpecialRole("NEW_ROLE", "์ƒˆ ์—ญํ• ", "๋Šฅ๋ ฅ")
    .build();

EventModeManager.getInstance().registerEvent(newEvent);

CI/CD

GitHub Actions ์ž๋™ ๋นŒ๋“œ ๋ฐ ๋ฆด๋ฆฌ์Šค

๋ฆด๋ฆฌ์Šค ๋ฐฉ๋ฒ•:

git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0

โœจ ๊ธฐ์ˆ  ์Šคํƒ

  • ์–ธ์–ด: Java 17
  • ๋นŒ๋“œ: Maven 3.x
  • GUI: Java Swing
  • ๋„คํŠธ์›Œํฌ: Java Socket
  • ์‚ฌ์šด๋“œ: Java Sound API
  • CI/CD: GitHub Actions

ํ”„๋กœํ† ์ฝœ

์„œ๋ฒ„ โ†’ ํด๋ผ์ด์–ธํŠธ:

ROLE:์—ญํ• ๋ช…                    - ์—ญํ•  ๋ฐฐ์ •
PHASE:๋‹จ๊ณ„๋ช…                   - ๊ฒŒ์ž„ ๋‹จ๊ณ„ ๋ณ€๊ฒฝ
PLAYERS:์ด๋ฆ„1,์ด๋ฆ„2,...        - ํ”Œ๋ ˆ์ด์–ด ๋ชฉ๋ก
DEAD:true/false                - ์‚ฌ๋ง/๋ถ€ํ™œ
SYSTEM: ๋ฉ”์‹œ์ง€                 - ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€

ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„:

/login ์ด๋ฆ„                    - ๋กœ๊ทธ์ธ
NIGHT_ACTION:์—ญํ• :๋Œ€์ƒ         - ๋ฐค ํ–‰๋™
VOTE:๋Œ€์ƒ                      - ํˆฌํ‘œ
[์ด๋ฆ„] ๋ฉ”์‹œ์ง€                  - ์ฑ„ํŒ…
/exit                          - ์ข…๋ฃŒ

โœจ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ต์œก ๋ชฉ์ ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โœจ ๊ธฐ์—ฌ

์ด์Šˆ์™€ PR์€ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

โœจ ๋ฌธ์˜

GitHub Issues: https://github.com/khg9859/Mafia/issues


๋ฒ„์ „: 2.0
์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2025-12-04

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages