Skip to content

xeavveed/Baseball-Simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Baseball Simulator (์•ผ๊ตฌ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ)

1. ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๋‘ ํŒ€์˜ ๋ผ์ธ์—…๊ณผ ์„ ์ˆ˜ ๊ฐœ๋ณ„ ์Šคํƒฏ์„ ๊ธฐ๋ฐ˜์œผ๋กœ 9์ด๋‹ ์•ผ๊ตฌ ๊ฒฝ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ์˜ˆ์ธกํ•˜๊ณ  ์ง„ํ–‰ํ•˜๋Š” ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.

ํƒ€์ž์™€ ํˆฌ์ˆ˜์˜ ์‹ค์ œ ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ™•๋ฅ ์  ๋ชจ๋ธ์„ ์„ค๊ณ„ํ•˜์—ฌ, ๊ฒฝ๊ธฐ ํ๋ฆ„์„ ํ˜„์‹ค๊ฐ ์žˆ๊ฒŒ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. JavaFX๋ฅผ ํ™œ์šฉํ•œ GUI ์‹œ๊ฐํ™” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒฝ๊ธฐ ์ƒํ™ฉ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์ฃผ์š” ๊ธฐ๋Šฅ

  • ํŒ€ ๋ผ์ธ์—… ๊ตฌ์„ฑ:
    • CSV ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์–‘ ํŒ€์˜ ํŒ€๋ช…, ํƒ€์ž ๋ผ์ธ์—…(9๋ช…), ํˆฌ์ˆ˜ ์Šค์ผ€์ค„(4๋ช…)์„ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ์Šคํƒฏ ๊ธฐ๋ฐ˜ ํ™•๋ฅ  ๋ชจ๋ธ:
    • ํƒ€์ž ์Šคํƒฏ: ํƒ€์œจ, ์ถœ๋ฃจ์œจ, ์žฅํƒ€์œจ, ์‚ผ์ง„์œจ, ๋ณผ๋„ท๋ฅ , ๋„๋ฃจ์„ฑ๊ณต๋ฅ 
    • ํˆฌ์ˆ˜ ์Šคํƒฏ: ํ”ผ์•ˆํƒ€์œจ, WHIP, ํ”ผ์žฅํƒ€์œจ, ์‚ผ์ง„์œจ, ๋ณผ๋„ท๋ฅ 
    • ๊ฐ ํƒ€์„์˜ ๊ฒฐ๊ณผ๋Š” ํƒ€์ž์™€ ํˆฌ์ˆ˜์˜ ์Šคํƒฏ์„ ์กฐํ•ฉํ•œ ํ™•๋ฅ (์˜ˆ: ์•ˆํƒ€ ํ™•๋ฅ  = (ํƒ€์œจ + ํ”ผ์•ˆํƒ€์œจ) / 2)์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒฝ๊ธฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์—”์ง„:
    • 9์ด๋‹ ์ž๋™ ์ง„ํ–‰, ๊ณต/์ˆ˜ ์ „ํ™˜, ํšŒ์ฐจ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ์•ˆํƒ€, ํ™ˆ๋Ÿฐ, ๋ณผ๋„ท, ์•„์›ƒ ๋“ฑ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ์ฃผ์ž ์ด๋™ ๋กœ์ง ๋ฐ ์ ์ˆ˜ ๊ณ„์‚ฐ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • 3์•„์›ƒ ๊ณต์ˆ˜ ๊ต๋Œ€, 9ํšŒ๋ง ๋๋‚ด๊ธฐ ๋“ฑ ์‹ค์ œ ๊ฒฝ๊ธฐ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • GUI ์‹œ๊ฐํ™” ๋ฐ ๋กœ๊ทธ:
    • ์‹œ๊ฐํ™”: JavaFX๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ ์ˆ˜ํŒ, ์ฃผ์ž ์ƒํƒœ(๋ฒ ์ด์Šค ๋‹ค์ด์•„๋ชฌ๋“œ), ์•„์›ƒ ์นด์šดํŠธ(๋นจ๊ฐ„์ƒ‰ ์›)๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ๋กœ๊ทธ ์ถœ๋ ฅ: ์ด๋‹๋ณ„ ๊ฒฐ๊ณผ, ํƒ€์„๋ณ„ ์ƒ์„ธ ๋กœ๊ทธ, ํ™ˆ๋Ÿฐ/๋“์  ๋“ฑ ์ฃผ์š” ์ด๋ฒคํŠธ๋ฅผ ํ…์ŠคํŠธ๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ์ง„ํ–‰ ๋ชจ๋“œ: '์ผ๋ฐ˜ ์ง„ํ–‰'(ํƒ€์„๋‹น 1์ดˆ ์ง€์—ฐ)๊ณผ '๋น ๋ฅธ ์ง„ํ–‰'(์ฆ‰์‹œ ์ข…๋ฃŒ) ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

3. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • ๊ฐœ๋ฐœ ์–ธ์–ด: Java 17
  • GUI: JavaFX (์‹คํ–‰ ์‹œ JavaFX SDK ํ•„์š”)
  • ๋นŒ๋“œ ๋„๊ตฌ: ์—†์Œ

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

  1. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ (JavaFX ์ง€์› ํ™˜๊ฒฝ ํ•„์š”)
  2. ์›์ •ํŒ€์˜ ํŒ€ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. ์›์ •ํŒ€ ํƒ€์ž 9๋ช…์˜ ์ด๋ฆ„์„ ํƒ€์ˆœ๋Œ€๋กœ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  4. ์›์ •ํŒ€ ํˆฌ์ˆ˜ 4๋ช…์˜ ์ด๋ฆ„์„ ์ˆœ์„œ๋Œ€๋กœ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  5. ํ™ˆํŒ€์— ๋Œ€ํ•ด์„œ๋„ 2~4๋ฒˆ ๊ณผ์ •์„ ๋™์ผํ•˜๊ฒŒ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  6. ์ง„ํ–‰ ๋ฐฉ์‹ ๋ฒ„ํŠผ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค:
    • ๋น ๋ฅธ ์ง„ํ–‰: ํด๋ฆญ ์ฆ‰์‹œ 9์ด๋‹ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์™„๋ฃŒ๋˜๋ฉฐ, ์ตœ์ข… ๊ฒฐ๊ณผ์™€ ์ „์ฒด ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
    • ์ผ๋ฐ˜ ์ง„ํ–‰: ํด๋ฆญ ์‹œ ๊ฐ ํƒ€์„๋‹น 1์ดˆ์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋‘๊ณ  ๊ฒฝ๊ธฐ๊ฐ€ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. GUI๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๊ฒฝ๊ธฐ ์ƒํ™ฉ(์•„์›ƒ ์นด์šดํŠธ, ์ฃผ์ž ์ƒํƒœ)์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ (UML)

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ญํ• ๋ณ„ ๋ชจ๋“ˆ์„ ๋ถ„๋ฆฌํ•˜๊ณ  ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ๋”ฐ๋ฅด๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํด๋ž˜์Šค ์„ค๋ช…

  • ๋„๋ฉ”์ธ ๋ชจ๋ธ (Data)
    • Player: Batter์™€ Pitcher์˜ ๊ณตํ†ต ๋ถ€๋ชจ ์ถ”์ƒ ํด๋ž˜์Šค.
    • Batter: ํƒ€์ž ์ •๋ณด(ํƒ€์œจ, ์ถœ๋ฃจ์œจ, ์žฅํƒ€์œจ ๋“ฑ)๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • Pitcher: ํˆฌ์ˆ˜ ์ •๋ณด(ํ”ผ์•ˆํƒ€์œจ, WHIP, ํ”ผ์žฅํƒ€์œจ ๋“ฑ)๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • Team: ํƒ€์ž ๋ผ์ธ์—…(List<Batter>)๊ณผ ํˆฌ์ˆ˜ ์Šค์ผ€์ค„(List<Pitcher>)์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฝ๊ธฐ ์ƒํƒœ ๋ฐ ๋กœ์ง (Engine)
    • Game: ์ด๋‹, ์•„์›ƒ ์นด์šดํŠธ, ์ ์ˆ˜, ํ˜„์žฌ ์ฃผ์ž ์ƒํƒœ(BaseState) ๋“ฑ ์ „์ฒด ๊ฒฝ๊ธฐ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • BaseState: 1๋ฃจ~3๋ฃจ ์ฃผ์ž ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ํƒ€์„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ์ฃผ์ž ์ง„๋ฃจ ๋ฐ ๋“์  ๊ณ„์‚ฐ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
    • OutcomeType (enum): ํƒ€์„ ๊ฒฐ๊ณผ(๋‹จํƒ€, ํ™ˆ๋Ÿฐ, ์‚ผ์ง„ ๋“ฑ)๋ฅผ ์—ด๊ฑฐํ˜•์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
    • AtBatOutcome: OutcomeType์„ ํฌํ•จํ•˜์—ฌ ํ•œ ํƒ€์„์˜ ์ƒ์„ธ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • GUI (View)
    • SimulatorGUI: ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์˜ ์ „์ฒด GUI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ง„์ž…์ ์ž…๋‹ˆ๋‹ค.
    • SimulatorEngineGUI: Game ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„ ์‹ค์ œ ๊ฒฝ๊ธฐ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์‹œ๊ฐํ™”ํ•˜๋ฉฐ, LoggerGUI์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์ œ์–ด์ž ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
    • LoggerGUI: ํƒ€์„ ๊ฒฐ๊ณผ ๋ฐ ์ฃผ์š” ์ด๋ฒคํŠธ๋ฅผ GUI์— ํ…์ŠคํŠธ๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

6. ๊ฐœ๋ฐœ ์ค‘ ์ด์Šˆ ๋ฐ ํ•ด๊ฒฐ

  • ์ด์Šˆ 1: 9ํšŒ๋ง ๋๋‚ด๊ธฐ ์ƒํ™ฉ์—์„œ ํ™ˆํŒ€์ด ์ด๊ฒผ์Œ์—๋„ 3์•„์›ƒ๊นŒ์ง€ ๊ฒฝ๊ธฐ๊ฐ€ ๊ณ„์† ์ง„ํ–‰๋˜๋Š” ๋ฌธ์ œ.
    • ํ•ด๊ฒฐ: simulateHalfInning() ๋˜๋Š” simulateGame() ํ•จ์ˆ˜ ๋‚ด์—, 9ํšŒ๋ง์ด๋ฉด์„œ ํ™ˆํŒ€์ด ์•ž์„œ๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ธฐ๋ฅผ ์ฆ‰์‹œ ์ข…๋ฃŒํ•˜๋Š” ๋ถ„๊ธฐ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์Šˆ 2: ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ํ•œ ๋ฒˆ์— ์ „๋ถ€ ์‹คํ–‰๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฝ๊ณผ๋ฅผ ๋”ฐ๋ผ๊ฐ€๊ธฐ ์–ด๋ ต๊ณ  ์žฌ๋ฏธ๊ฐ€ ๋ฐ˜๊ฐ๋˜๋Š” ๋ฌธ์ œ.
    • ํ•ด๊ฒฐ: '์ผ๋ฐ˜ ์ง„ํ–‰' ๋ชจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, simulateAtBat() ํ•จ์ˆ˜ ์‹คํ–‰ ์‚ฌ์ด์— 1์ดˆ์˜ ์ง€์—ฐ ์‹œ๊ฐ„(Thread.sleep)์„ ๋ถ€์—ฌํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ ํƒ€์„์˜ ๊ฒฐ๊ณผ๋ฅผ ์ถฉ๋ถ„ํžˆ ํ™•์ธํ•˜๊ณ  ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์Šˆ 3: SimulatorEngineGUI๊ฐ€ Game, BaseState, LoggerGUI ๋“ฑ ๋‹ค์ˆ˜ ๊ฐ์ฒด๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ์ฐธ์กฐํ•˜์—ฌ ์˜์กด์„ฑ์ด ๋†’์•„์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์šด ๋ฌธ์ œ.
    • ํ•ด๊ฒฐ: MVC ํŒจํ„ด์„ ์ผ๋ถ€ ๋„์ž…ํ•˜์—ฌ, SimulatorEngineGUI๋ฅผ ์ค‘๊ฐ„ ์ œ์–ด์ž(Controller) ์—ญํ• ๋กœ ๋‘๊ณ , ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉํ•˜๋„๋ก ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages