Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
8ed7716
docs(README): 1.1๋‹จ๊ณ„ ๋ฆฌ๋“œ๋ฏธ ์ž‘์„ฑ
miniminjae92 Mar 25, 2026
d1fa894
test(PositionTest): ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
miniminjae92 Mar 25, 2026
a956456
feat(Position): ์œ„์น˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
miniminjae92 Mar 25, 2026
c6fffa2
test(SideTest): ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
miniminjae92 Mar 25, 2026
2306d36
feat(Side): ์ง„์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
miniminjae92 Mar 25, 2026
98b7af5
test(PieceTest): ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
miniminjae92 Mar 25, 2026
8c0e6b9
feat(Piece): ๊ธฐ๋ฌผ ๊ธฐ๋Šฅ ๊ตฌํ˜„
miniminjae92 Mar 25, 2026
5830535
feat(Pieces): ๊ธฐ๋ฌผ ๊ตฌํ˜„ ํด๋ž˜์Šค๋“ค ์ถ”๊ฐ€
miniminjae92 Mar 25, 2026
07a7c91
feat(Board): ์žฅ๊ธฐํŒ ์ƒ์„ฑ ๋ถ€๋ถ„ ๊ตฌํ˜„
miniminjae92 Mar 25, 2026
151c12a
feat(Game): ๊ฒŒ์ž„ ์ดˆ๊ธฐํ™” ๊ธฐ๋Šฅ ๋ถ€๋ถ„ ๊ตฌํ˜„
miniminjae92 Mar 25, 2026
663a123
feat(InitialBoardFactory): ๊ฒŒ์ž„ ์ดˆ๊ธฐํ™” ๊ธฐ๋Šฅ ๊ตฌํ˜„
miniminjae92 Mar 26, 2026
b4c9502
feat(Position): ์œ„์น˜ ์ด๋™ ๊ธฐ๋Šฅ ๊ตฌํ˜„
miniminjae92 Mar 27, 2026
559f0f2
docs(README): 1.2๋‹จ๊ณ„ ๊ธฐ๋Šฅ ๋ชฉ๋ก ์ž‘์„ฑ
miniminjae92 Mar 27, 2026
8dfc831
docs(README): 1.2๋‹จ๊ณ„ ๊ธฐ๋Šฅ ๋ชฉ๋ก ์ž‘์„ฑ
miniminjae92 Mar 27, 2026
4b70abd
refactor: ํŒจํ‚ค์ง€ ์ƒ์„ฑ ๋ฐ ์ด๋™
miniminjae92 Mar 28, 2026
80c4f31
feat(Piece): ๊ธฐ๋ฌผ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„
miniminjae92 Mar 28, 2026
7b112e0
feat(General): ๊ธฐ๋ฌผ ์ด๋™ ๊ทœ์น™ ๊ตฌํ˜„
miniminjae92 Mar 28, 2026
6937ac2
feat(Guard): ๊ธฐ๋ฌผ ์ด๋™ ๊ทœ์น™ ๊ตฌํ˜„
miniminjae92 Mar 28, 2026
303e556
feat(Soldier): ๊ธฐ๋ฌผ ์ด๋™ ๊ทœ์น™ ๊ตฌํ˜„
miniminjae92 Mar 28, 2026
dd4f2ac
feat(Horse): ๊ธฐ๋ฌผ ์ด๋™ ๊ทœ์น™ ๊ตฌํ˜„
miniminjae92 Mar 28, 2026
50f2eb9
feat(Elephant): ๊ธฐ๋ฌผ ์ด๋™ ๊ทœ์น™ ๊ตฌํ˜„
miniminjae92 Mar 28, 2026
21aa29e
feat(Chariot): ๊ธฐ๋ฌผ ์ด๋™ ๊ทœ์น™ ๊ตฌํ˜„
miniminjae92 Mar 28, 2026
da517e6
feat(Cannon): ๊ธฐ๋ฌผ ์ด๋™ ๊ทœ์น™ ๊ตฌํ˜„
miniminjae92 Mar 28, 2026
5cd420c
feat(Side): ์ง„์˜ ํ™•์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„
miniminjae92 Mar 28, 2026
1ed9111
refactor(Selection): ๋„๋ฉ”์ธ ํŒจํ‚ค์ง€ ์ด๋™
miniminjae92 Mar 28, 2026
72210f2
feat(Board): ์žฅ๊ธฐํŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„
miniminjae92 Mar 28, 2026
7b99b94
Merge branch 'step1' of github.com:miniminjae92/java-janggi into step1
miniminjae92 Mar 28, 2026
3e6002d
docs: ๋ฆฌ๋“œ๋ฏธ ์ˆ˜์ •
miniminjae92 Mar 30, 2026
d5f2ee7
refactor: ํ…Œ์ŠคํŠธ ํŒŒ์ผ ๊ฒฝ๋กœ ๋ณ€๊ฒฝ
miniminjae92 Mar 30, 2026
5371e48
test(Selection): ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ ๋ฐ ์ฝ”๋“œ ์ˆ˜์ •
miniminjae92 Mar 30, 2026
2cbe86c
feat(Name): ํด๋ž˜์Šค ๋ฐ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
miniminjae92 Mar 30, 2026
ac6a56b
test(Formation): ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ ๋ฐ ๋ฉ”์„œ๋“œ ์ด๋ฆ„ ๋ณ€๊ฒฝ
miniminjae92 Mar 30, 2026
178cd12
feat(Player): ํด๋ž˜์Šค ๋ฐ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
miniminjae92 Mar 30, 2026
2767292
feat(TurnState): ํ„ด ๊ธฐ๋Šฅ ์ƒํƒœํŒจํ„ด ๋„์ž…
miniminjae92 Mar 30, 2026
92d1e8a
test(Board): ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ ๋ฐ ์ฝ”๋“œ ์ˆ˜์ •
miniminjae92 Mar 30, 2026
78870f0
feat(view): ์ž…์ถœ๋ ฅ ๋ถ€๋ถ„ ์ˆ˜์ •
miniminjae92 Mar 30, 2026
193056f
feat(InputParser): ์ž…๋ ฅ ํŒŒ์„œ ํด๋ž˜์Šค ๋ฐ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
miniminjae92 Mar 30, 2026
c95e533
test(GameTest): ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ ๋ฐ ํด๋ž˜์Šค ์ถ”๊ฐ€, ์ฝ”๋“œ ์ˆ˜์ •
miniminjae92 Mar 30, 2026
6567b11
refactor(Players): TurnState ๊ตฌํ˜„์ฒด ์ด๋ฆ„ ๋ณ€๊ฒฝ ๋ฐ Players ์ƒ์„ฑ ๋ณ€๊ฒฝ
miniminjae92 Mar 30, 2026
e4c4558
feat(domain): ์ดˆ๊ธฐํ™” ๋ถ€๋ถ„ ์ˆ˜์ • ๋ฐ ์˜ฌ๋ฐ”๋ฅธ ํ„ด์— ๋งž๋Š” ์ง„ํ–‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„
miniminjae92 Mar 30, 2026
a6a6570
test(Piece): ๊ฐ ๊ธฐ๋ฌผ๋“ค ์ด๋™ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
miniminjae92 Mar 30, 2026
3e24b68
style: ์ถ•์•ฝํ•œ ๋ณ€์ˆ˜๋ช… ์ˆ˜์ •
miniminjae92 Mar 30, 2026
37da877
docs: ๋ฆฌ๋“œ๋ฏธ ์ˆ˜์ •
miniminjae92 Mar 30, 2026
50546c5
refactor: ํ…Œ์ŠคํŠธ ๋ฐ ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ
miniminjae92 Mar 30, 2026
b4df2ef
feat: ๊ธฐ๋ฌผ, ์žฅ๊ธฐํŒ ์ƒ์„ฑ ํด๋ž˜์Šค ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •, ์ด๋™ ์ „๋žต ํด๋ž˜์Šค ์ถ”๊ฐ€
miniminjae92 Mar 30, 2026
96a44ff
feat: ๋ฐฉํ–ฅ ํด๋ž˜์Šค ์ถ”๊ฐ€ ๋ฐ ์œ„์น˜, ๊ฒŒ์ž„, ๊ฒŒ์ž„๋งค๋‹ˆ์ € ์ˆ˜์ •
miniminjae92 Mar 30, 2026
fd6dfac
refactor: ๊ธฐ๋ฌผ ์ด๋™ ์ „๋žต ๋ฆฌํŒฉํ„ฐ๋ง ๋ฐ ํ…Œ์ŠคํŠธ ์ˆ˜์ •
miniminjae92 Mar 30, 2026
e2e879a
refactor: ๋„๋ฉ”์ธ ์„ธ๋ถ€ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ํด๋ž˜์Šค๋“ค ์ด๋™
miniminjae92 Mar 31, 2026
23862a7
refactor: ํด๋ž˜์Šค ๋ฐ ์ถ•์•ฝ๋œ ๋ณ€์ˆ˜ ๋ช…๋ช… ๋ณ€๊ฒฝ
miniminjae92 Mar 31, 2026
f660c3f
refactor(OutputView): ์ถœ๋ ฅ ํฌ๋งท์„ ์ „๊ฐ ์œ ๋‹ˆ์ฝ”๋“œ ์‚ฌ์šฉ
miniminjae92 Mar 31, 2026
c90daf6
refactor(Side): ์‚ฌ์šฉ ์•ˆํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ
miniminjae92 Mar 31, 2026
2059839
refactor: ํด๋ž˜์Šค ๋ฐ ์ถ•์•ฝ ๋ณ€์ˆ˜ ๋ช…๋ช… ๋ณ€๊ฒฝ
miniminjae92 Mar 31, 2026
d4dfde2
refactor: Depth ์ˆ˜์ •
miniminjae92 Mar 31, 2026
08c2567
refactor: import ์ˆœ์„œ ๋ณ€๊ฒฝ
miniminjae92 Mar 31, 2026
47bb454
refactor(OutputView): ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ
miniminjae92 Mar 31, 2026
3b8a8f9
refactor(Soldier): depth ์ˆ˜์ •
miniminjae92 Mar 31, 2026
6d7b921
refactor: ๋ฉ”์„œ๋“œ ๋ช…๋ช… ๋ณ€๊ฒฝ
miniminjae92 Mar 31, 2026
5f3e627
refactor: depth ์ˆ˜์ •
miniminjae92 Mar 31, 2026
70eadf0
docs: ๋ฆฌ๋“œ๋ฏธ ์ˆ˜์ •
miniminjae92 Mar 31, 2026
4c65a21
docs(README): ๋ฆฌ๋“œ๋ฏธ ์ˆ˜์ •
khcho96 Mar 31, 2026
f8f2ed3
refactor(Soldier): ์ „๋žตํŒจํ„ด ์ฃผ์ž…์œผ๋กœ ์ˆ˜์ •
khcho96 Apr 2, 2026
4b5706d
refactor(Side): ์ „๋žตํŒจํ„ด ์ฃผ์ž…์œผ๋กœ ์ˆ˜์ •
khcho96 Apr 2, 2026
33a6593
refactor(PieceFactory): ์ „๋žตํŒจํ„ด ์ฃผ์ž…์œผ๋กœ ์ˆ˜์ •
khcho96 Apr 2, 2026
4ca23b6
refactor(Direction): ์ „๋žตํŒจํ„ด ์ฃผ์ž…์œผ๋กœ ์ˆ˜์ •
khcho96 Apr 2, 2026
b447a32
refactor(Formation): ๋ณ€์ˆ˜๋ช… ์ˆ˜์ •
khcho96 Apr 2, 2026
38345fa
refactor(InputParser): ๋ฉ”์„œ๋“œ ์ถ”์ถœ
khcho96 Apr 2, 2026
a77b6f7
refactor(Player): equals ์‚ฌ์šฉ์œผ๋กœ ์ˆ˜์ •
khcho96 Apr 2, 2026
a818c76
refactor(InputParser): ํŒจํ‚ค์ง€ ๋ณ€๊ฒฝ
khcho96 Apr 2, 2026
c0f941b
test(InputParser): ํŒจํ‚ค์ง€ ๋ณ€๊ฒฝ
khcho96 Apr 2, 2026
eeba6f6
refactor(GameManager): ํŒจํ‚ค์ง€ ๋ณ€๊ฒฝ
khcho96 Apr 2, 2026
0a52da4
refactor(InputParser): ์ ‘๊ทผ์ œ์–ด์ž ๋ณ€๊ฒฝ
khcho96 Apr 2, 2026
d4717d7
refactor(Game): ์šฐ์Šน์ž ๋ฐ˜ํ™˜ ๋กœ์ง ์ˆ˜์ •
khcho96 Apr 2, 2026
821b8c9
refactor(Players): ์šฐ์Šน์ž ๋ฐ˜ํ™˜ ๋กœ์ง ์ˆ˜์ •
khcho96 Apr 2, 2026
131e31b
refactor(Players): ํ•„๋“œ ์ ‘๊ทผ ์ œ์–ด์ž ๋ณ€๊ฒฝ
khcho96 Apr 2, 2026
f980be3
refactor(Destinations): ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€ ์ˆ˜์ • ๋ฐ ๋ถˆํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ ์‚ญ์ œ
khcho96 Apr 2, 2026
c68872d
refactor(InputParser): ์ž…๋ ฅ ํ˜•์‹ ๋ฐ ์ƒ์ˆ˜๋ช… ๋ณ€๊ฒฝ
khcho96 Apr 2, 2026
5f0bcc4
refactor(InputView): ์œ„์น˜ ์ž…๋ ฅ์‹œ ์ž…๋ ฅ ์˜ˆ์‹œ ์ถœ๋ ฅ
khcho96 Apr 2, 2026
d02195e
refactor(Command): ํŒจํ‚ค์ง€ ๋ฐ ํด๋ž˜์Šค ์ด๋ฆ„ ๋ณ€๊ฒฝ
khcho96 Apr 2, 2026
2c63615
feat(FormationPiece): ์ƒ๋งˆ ํŒ๋‹จ ๋กœ์ง์„ ์œ„ํ•œ ํด๋ž˜์Šค ๊ตฌํ˜„
khcho96 Apr 2, 2026
5435840
refactor(Formation): ์ƒ๋งˆ ๊ธฐ๋ฌผ ๋ฐฐ์น˜ ๋กœ์ง BoardFactory๋กœ ์ด๋™
khcho96 Apr 2, 2026
a8fd9c4
refactor(BoardFactory): ์ƒ๋งˆ ๊ธฐ๋ฌผ ๋ฐฐ์น˜ ๋กœ์ง BoardFactory๋กœ ์ด๋™
khcho96 Apr 2, 2026
2a6d884
test(FormationTest): ๋ถˆํ•„์š”ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์‚ญ์ œ
khcho96 Apr 2, 2026
25b8dff
test(InputParserTest): ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ˆ˜์ •
khcho96 Apr 2, 2026
388ceee
feat(PieceType): ๋ชจ๋“  ๊ธฐ๋ฌผ ํƒ€์ž… ๊ตฌํ˜„
khcho96 Apr 2, 2026
7ef523b
feat(Piece): ๊ฐ ๊ธฐ๋ฌผ์ด PieceType์„ ๊ฐ€์ง€๋„๋ก ๊ตฌํ˜„
khcho96 Apr 2, 2026
37b4bff
refactor(Path): ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๋Š” Path๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š๋„๋ก ์ˆ˜์ •
khcho96 Apr 2, 2026
78d07b7
refactor(ContinuousStrategy):๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ์ด๋ฉด Optional.empty ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •
khcho96 Apr 2, 2026
4cbce1a
refactor(SequenceStrategy):๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ์ด๋ฉด Optional.empty ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •
khcho96 Apr 2, 2026
dbcdd0a
test(CommandTest): ๊ณต๋ฐฑ์ด ํฌํ•จ๋œ ์ž…๋ ฅ ์ผ€์ด์Šค ๋”ฐ๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
khcho96 Apr 2, 2026
827f2a6
refactor(Piece): valid ๋ฆฌ์ŠคํŠธ mutable accumulator ์ „๋‹ฌ ํŒจํ„ด์ด ๋˜์ง€ ์•Š๋„๋ก ์ˆ˜์ •
khcho96 Apr 2, 2026
37c2f77
refactor(Chariot): valid ๋ฆฌ์ŠคํŠธ mutable accumulator ์ „๋‹ฌ ํŒจํ„ด์ด ๋˜์ง€ ์•Š๋„๋ก ์ˆ˜์ •
khcho96 Apr 2, 2026
9491325
refactor(Cannon): valid ๋ฆฌ์ŠคํŠธ mutable accumulator ์ „๋‹ฌ ํŒจํ„ด์ด ๋˜์ง€ ์•Š๋„๋ก ์ˆ˜์ •
khcho96 Apr 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
299 changes: 297 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,298 @@
# java-janggi
# [์žฅ๊ธฐ] ์‚ฌ์ดํด1 - ๋ฏธ์…˜ (๋ณด๋“œ ์ดˆ๊ธฐํ™” + ๊ธฐ๋ฌผ ์ด๋™)

์žฅ๊ธฐ ๋ฏธ์…˜ ์ €์žฅ์†Œ
## ๋ชฉํ‘œ

๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, **๋ฌด์—‡์„ ๊ฐœ๋ฐœํ•ด์•ผ ํ•˜๋Š”์ง€ ๋จผ์ € ์ •๋ฆฌํ•˜๊ณ ** ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค.

- [x] 1.1๋‹จ๊ณ„๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— **์–ด๋–ค ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ •๋ฆฌ**ํ•œ๋‹ค.
- [x] 1.1๋‹จ๊ณ„์—์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ README.md์— ๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.
- [x] 1.2๋‹จ๊ณ„๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— **์–ด๋–ค ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ •๋ฆฌ**ํ•œ๋‹ค.
- [x] 1.2๋‹จ๊ณ„์—์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ README.md์— ๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.
- [x] ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ **"๋‚˜๋Š” ์™œ ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ• ๊นŒ?"** ๋ผ๋Š” ๊ณ ๋ฏผ์„ ๊ธฐ๋กํ•œ๋‹ค.

---

## ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ

### 1.1๋‹จ๊ณ„ - ๋ณด๋“œ ์ดˆ๊ธฐํ™”

- ๊ฒŒ์ž„ ์‹œ์ž‘ ์‹œ ์žฅ๊ธฐํŒ๊ณผ ์ „์ฒด ๊ธฐ๋ฌผ์„ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
- 1.1๋‹จ๊ณ„์—์„œ๋Š” ๊ธฐ๋ฌผ์˜ ์ด๋™์€ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

### 1.2๋‹จ๊ณ„ - ๊ธฐ๋ฌผ ์ด๋™

- ๊ฐ ๊ธฐ๋ฌผ์˜ ์ด๋™ ๊ทœ์น™์„ ๊ตฌํ˜„ํ•œ๋‹ค.
- ๊ธฐ๋ฌผ์˜ ์ด๋™ ๊ทœ์น™์€ ์ง์ ‘ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ถ„์„ํ•˜์—ฌ ์ •์˜ํ•œ๋‹ค.
- **๊ถ์„ฑ(ๅฎฎๅŸŽ) ์˜์—ญ์€ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š”๋‹ค.** (์‚ฌ์ดํด2์—์„œ ๋‹ค๋ฃฌ๋‹ค)

---

## ๊ธฐ๋Šฅ ๋ชฉ๋ก (ํ…Œ์ŠคํŠธ ๋ช…์„ธ)

### 1.1๋‹จ๊ณ„: ๋ณด๋“œ ๋ฐ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ ์ดˆ๊ธฐํ™”

#### ์œ„์น˜ (Position)
- [x] x ์ขŒํ‘œ๊ฐ€ 0 ๋ฏธ๋งŒ์ด๊ฑฐ๋‚˜ 8 ์ดˆ๊ณผ์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
- [x] y ์ขŒํ‘œ๊ฐ€ 0 ๋ฏธ๋งŒ์ด๊ฑฐ๋‚˜ 9 ์ดˆ๊ณผ์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
- [x] ์˜ฌ๋ฐ”๋ฅธ x, y ์ขŒํ‘œ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๊ฐ์ฒด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค

#### ์ง„์˜ (Side)
- [x] ์ง„์˜์€ ์ดˆ์™€ ํ•œ๋งŒ ๊ฐ€์ง„๋‹ค

#### ํ”Œ๋ ˆ์ด์–ด (Player)
- [x] ํ„ด ์ƒํƒœ๋ฅผ ํ† ๊ธ€ํ•˜๋ฉด ํ˜„์žฌ ํ„ด ์—ฌ๋ถ€๊ฐ€ ๋ฐ˜์ „๋œ๋‹ค
- [x] ํ”Œ๋ ˆ์ด์–ด๋Š” ์ƒ๋Œ€๋ฐฉ์˜ ๊ธฐ๋ฌผ์„ ์„ ํƒํ•˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

#### ํ”Œ๋ ˆ์ด์–ด๋“ค (Players)
- [x] ์ดˆ๊ธฐ ํ”Œ๋ ˆ์ด์–ด ์ƒ์„ฑ ์‹œ ๋‘ ํ”Œ๋ ˆ์ด์–ด์˜ ์ด๋ฆ„์ด ๊ฐ™์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

#### ๊ธฐ๋ฌผ ๊ณตํ†ต (Piece)
- [x] ์ฃผ์–ด์ง„ ์ง„์˜๊ณผ ์ž์‹ ์˜ ์ง„์˜์ด ๊ฐ™์€์ง€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํŒ๋ณ„ํ•œ๋‹ค

#### ์žฅ๊ธฐํŒ ์ดˆ๊ธฐํ™” (BoardFactory / Board)
- [x] ์„ ํƒํ•œ ํฌ๋ฉ”์ด์…˜์— ๋งž๊ฒŒ 32๊ฐœ์˜ ๊ธฐ๋ฌผ์ด ์ดˆ๊ธฐ ์œ„์น˜์— ์ •ํ™•ํžˆ ๋ฐฐ์น˜๋œ๋‹ค
- [x] ์–‘ ์ง„์˜์˜ ๊ถ์ด ์ง€์ •๋œ ๊ถ์„ฑ ์œ„์น˜์— ์ •์ƒ์ ์œผ๋กœ ๋ฐฐ์น˜๋œ๋‹ค

### 1.2๋‹จ๊ณ„: ๊ธฐ๋ฌผ ์ด๋™ ๋ฐ ๊ฒŒ์ž„ ์ƒํƒœ

#### ๊ถ (General)
- [x] ๊ถ์€ ์ƒ ํ•˜ ์ขŒ ์šฐ 1์นธ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค (OneStepStrategy)

#### ์‚ฌ (Guard)
- [x] ์‚ฌ๋Š” ์ƒ ํ•˜ ์ขŒ ์šฐ 1์นธ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค (OneStepStrategy)

#### ์กธ (Soldier)
- [x] ์ดˆ๋‚˜๋ผ ์กธ์€ ์ƒ ์ขŒ ์šฐ 1์นธ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค (OneStepStrategy)
- [x] ํ•œ๋‚˜๋ผ ์กธ์€ ํ•˜ ์ขŒ ์šฐ 1์นธ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค (OneStepStrategy)

#### ๋งˆ (Horse)
- [x] ๋งˆ๋Š” ์ง์„  1์นธ ์ด๋™ ํ›„ ๋Œ€๊ฐ์„  1์นธ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค (SequenceStrategy)
- [x] ๋งˆ๋Š” ์ง์„  1์นธ ๊ฒฝ๋กœ์— ์žฅ์• ๋ฌผ ๊ธฐ๋ฌผ์ด ์กด์žฌํ•˜๋ฉด ํ•ด๋‹น ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค

#### ์ƒ (Elephant)
- [x] ์ƒ์€ ์ง์„  1์นธ ์ด๋™ ํ›„ ๋Œ€๊ฐ์„  2์นธ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค (SequenceStrategy)
- [x] ์ƒ์€ ์ง์„  1์นธ ๋˜๋Š” ๋Œ€๊ฐ์„  1์นธ ๊ฒฝ๋กœ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์žฅ์• ๋ฌผ ๊ธฐ๋ฌผ์ด ์กด์žฌํ•˜๋ฉด ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค

#### ์ฐจ (Chariot)
- [x] ์ฐจ๋Š” ์ƒ ํ•˜ ์ขŒ ์šฐ ๋ฐฉํ–ฅ์œผ๋กœ ์žฅ์• ๋ฌผ์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์—ฐ์†ํ•ด์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค (ContinuousStrategy)
- [x] ์ฐจ๋Š” ์ด๋™ ๊ฒฝ๋กœ ์ค‘ ์•„๊ตฐ ๊ธฐ๋ฌผ์„ ๋งŒ๋‚˜๋ฉด ๊ทธ ์ง์ „ ์œ„์น˜๊นŒ์ง€๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค
- [x] ์ฐจ๋Š” ์ด๋™ ๊ฒฝ๋กœ ์ค‘ ์ ๊ตฐ ๊ธฐ๋ฌผ์„ ๋งŒ๋‚˜๋ฉด ํ•ด๋‹น ์œ„์น˜๊นŒ์ง€ ์ด๋™ํ•˜์—ฌ ์žก์„ ์ˆ˜ ์žˆ๋‹ค

#### ํฌ (Cannon)
- [x] ํฌ๋Š” ์ƒ ํ•˜ ์ขŒ ์šฐ ๋ฐฉํ–ฅ์œผ๋กœ ๊ธฐ๋ฌผ ํ•˜๋‚˜๋ฅผ ๋›ฐ์–ด๋„˜์–ด ๋นˆ์นธ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค
- [x] ํฌ๋Š” ์ด๋™ ๊ฒฝ๋กœ์—์„œ ํฌ ๊ธฐ๋ฌผ์„ ๋›ฐ์–ด๋„˜์„ ์ˆ˜ ์—†๋‹ค
- [x] ํฌ๋Š” ๊ธฐ๋ฌผ์„ ๋›ฐ์–ด๋„˜์€ ํ›„ ์ ๊ตฐ ๊ธฐ๋ฌผ์„ ๋งŒ๋‚˜๋ฉด ํ•ด๋‹น ์œ„์น˜๊นŒ์ง€ ์ด๋™ํ•˜์—ฌ ์žก์„ ์ˆ˜ ์žˆ๋‹ค (ContinuousStrategy)
- [x] ํฌ๋Š” ๋›ฐ์–ด๋„˜์€ ํ›„ ๋งŒ๋‚œ ์ ๊ตฐ ๊ธฐ๋ฌผ์ด ํฌ์ผ ๊ฒฝ์šฐ ์žก์„ ์ˆ˜ ์—†๋‹ค

#### ์žฅ๊ธฐํŒ ์ด๋™ (Board)
- [x] ๋ชฉ์ ์ง€์— ์ ๊ตฐ ๊ธฐ๋ฌผ์ด ์žˆ์œผ๋ฉด ๋ณด๋“œ์—์„œ ํ•ด๋‹น ๊ธฐ๋ฌผ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ด๋™ํ•œ๋‹ค
- [x] ๋ชฉ์ ์ง€์— ์•„๊ตฐ ๊ธฐ๋ฌผ์ด ์žˆ์œผ๋ฉด ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค
- [x] ๊ธฐ๋ฌผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋นˆ ์ขŒํ‘œ๋ฅผ ์ถœ๋ฐœ์ง€๋กœ ์ž…๋ ฅํ•˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

#### ๊ฒŒ์ž„ ์ƒํƒœ ๋ฐ ํ๋ฆ„ (Game)
- [x] ๊ธฐ๋ฌผ ์ด๋™์ด ์™„๋ฃŒ๋˜๋ฉด ํ„ด์ด ์ƒ๋Œ€๋ฐฉ ์ง„์˜์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค
- [x] ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชฉ์ ์ง€๊ฐ€ ์ „ํ˜€ ์—†๋Š” ๊ธฐ๋ฌผ์„ ์„ ํƒํ•˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
- [x] ์„ ํƒํ•œ ๊ธฐ๋ฌผ์ด ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ์œ„์น˜๋ฅผ ๋ชฉ์ ์ง€๋กœ ์ž…๋ ฅํ•˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
- [x] ๋ณด๋“œ์— ๊ถ์ด ํ•˜๋‚˜๋งŒ ๋‚จ๊ฒŒ ๋˜๋ฉด ๊ฒŒ์ž„์€ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค

### 1.3๋‹จ๊ณ„: ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ ํŒŒ์„œ ๊ฒ€์ฆ

#### ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„ ์ž…๋ ฅ
- [x] ์ด๋ฆ„์ด 2๊ธ€์ž ๋ฏธ๋งŒ์ด๊ฑฐ๋‚˜ 5๊ธ€์ž๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
- [x] ์ด๋ฆ„์— ๋นˆ ๊ฐ’์ด๋‚˜ ๊ณต๋ฐฑ๋งŒ ์ž…๋ ฅ๋˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

#### ํฌ๋ฉ”์ด์…˜(๋งˆ, ์ƒ) ์˜ต์…˜ ์ž…๋ ฅ
- [x] ํฌ๋ฉ”์ด์…˜ ์ž…๋ ฅ์ด 1, 2, 3, 4 ์ผ ๋•Œ ์ •์ƒ ๋™์ž‘ํ•œ๋‹ค
- [x] ํฌ๋ฉ”์ด์…˜ ์ž…๋ ฅ์ด 1, 2, 3, 4 ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

#### ์œ„์น˜ ์ž…๋ ฅ
- [x] ์˜ฌ๋ฐ”๋ฅธ ์ขŒํ‘œ ํ˜•์‹์ด ์ž…๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ ์ •์ƒ ๋™์ž‘ํ•œ๋‹ค
- [x] ์œ„์น˜ ์ž…๋ ฅ ํฌ๋งท์ด `(x, y)` ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
- [x] ์œ„์น˜ ์ž…๋ ฅ ํฌ๋งท ๋‚ด์˜ ์ขŒํ‘œ์— ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์ด ํฌํ•จ๋˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

## ๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„

- [x] ์ด๋™ ๋ฐฉํ–ฅ(Direction) ๋ถ„๋ฆฌ: ์ƒ, ํ•˜, ์ขŒ, ์šฐ ๋“ฑ x/y ์ฆ๊ฐ๊ฐ’์„ ๊ฐ–๋Š” Enum ๊ตฌํ˜„
- [x] ์ด๋™ ์ „๋žต(Strategy) ๋ถ„๋ฆฌ: `OneStepStrategy`, `ContinuousStrategy`, `SequenceStrategy` ๊ตฌํ˜„ ๋ฐ ๊ฐ ๊ธฐ๋ฌผ์— ์ฃผ์ž…
- [x] ํ”Œ๋ผ์ด์›จ์ดํŠธ ํŒฉํ† ๋ฆฌ(PieceFactory): ์œ„์น˜ ์ƒํƒœ๊ฐ€ ์—†๋Š” ๋ถˆ๋ณ€ ๊ธฐ๋ฌผ ๊ฐ์ฒด๋ฅผ ์‹ฑ๊ธ€ํ†ค/์บ์‹ฑํ•˜์—ฌ ๋ฐ˜ํ™˜
- [x] ๋ณด๋“œ ์บก์Аํ™”(BoardReader): ๊ธฐ๋ฌผ์ด ๋ณด๋“œ์˜ ๋งต ์ž๋ฃŒ๊ตฌ์กฐ์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ฝ๊ธฐ ์ „์šฉ ์ธํ„ฐํŽ˜์ด์Šค ๋„์ž…
- [x] ๋ถˆ๋ณ€ ๋งต ๋ณต์‚ฌ: ๋ณด๋“œ ์ด๋™ ์‹œ `Map.copyOf()`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆ๋ณ€ ๋งต ๋ฐ˜ํ™˜

---

## ์ž…์ถœ๋ ฅ์˜ˆ์‹œ
1. ์ดˆ๋‚˜๋ผ ํ”Œ๋ ˆ์ด์–ด์˜ ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
2. ํ•œ๋‚˜๋ผ ํ”Œ๋ ˆ์ด์–ด ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
3. ์ดˆ๋‚˜๋ผ ํ”Œ๋ ˆ์ด์–ด์˜ ๊ธฐ๋ฌผ ๋ฐฐ์น˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

```
๊ธฐ๋ฌผ ๋ฐฐ์น˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
1. ์ƒ๋งˆ์ƒ๋งˆ
2. ๋งˆ์ƒ๋งˆ์ƒ
3. ์ƒ๋งˆ๋งˆ์ƒ
4. ๋งˆ์ƒ์ƒ๋งˆ
```

4. ํ•œ๋‚˜๋ผ ํ”Œ๋ ˆ์ด์–ด์˜ ๊ธฐ๋ฌผ ๋ฐฐ์น˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

```
๊ธฐ๋ฌผ ๋ฐฐ์น˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
1. ์ƒ๋งˆ์ƒ๋งˆ
2. ๋งˆ์ƒ๋งˆ์ƒ
3. ์ƒ๋งˆ๋งˆ์ƒ
4. ๋งˆ์ƒ์ƒ๋งˆ
```

5. ์ดˆ๋‚˜๋ผ ํ”Œ๋ ˆ์ด์–ด๋ถ€ํ„ฐ ํ•œ ํ„ด์”ฉ ์ง„ํ–‰

1. ๋ณด๋“œํŒ ์ถœ๋ ฅ

2. ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฌผ์˜ ์œ„์น˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

```
(๋ณด๋“œํŒ ์ถœ๋ ฅ)
์ด๋™ ์‹œํ‚ฌ ๊ธฐ๋ฌผ์˜ ์œ„์น˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”. ex) (0, 3)
```

3. ์„ ํƒํ•œ ๊ธฐ๋ฌผ์˜ ๋ชฉ์ ์ง€๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

```
์„ ํƒํ•œ ๊ธฐ๋ฌผ์ด ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค. ์ด๋™ํ•  ์œ„์น˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”. ex) (0, 3)
(x, y), (x, y), ...
```

4. ์™•์ด ์žกํžˆ๋ฉด ๊ฒŒ์ž„ ์ข…๋ฃŒ
```
์ œ์ด์ฝฅ(์ด/๊ฐ€) ์Šน๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
```

---

## ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ

- [x] ์ž๋ฐ” ์ฝ”๋“œ ์ปจ๋ฒค์…˜์„ ์ง€ํ‚ค๋ฉด์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•œ๋‹ค.
- [x] ๊ธฐ๋ณธ์ ์œผ๋กœ[Java Style Guide](https://github.com/woowacourse/woowacourse-docs/tree/master/styleguide/java)์„ ์›์น™์œผ๋กœ ํ•œ๋‹ค.
- [x] indent(์ธ๋ดํŠธ, ๋“ค์—ฌ์“ฐ๊ธฐ) depth๋ฅผ 2๋ฅผ ๋„˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค. 1๊นŒ์ง€๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.
- [x] ์˜ˆ๋ฅผ ๋“ค์–ด while๋ฌธ ์•ˆ์— if๋ฌธ์ด ์žˆ์œผ๋ฉด ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” 2์ด๋‹ค.
- [x] ํžŒํŠธ: indent(์ธ๋ดํŠธ, ๋“ค์—ฌ์“ฐ๊ธฐ) depth๋ฅผ ์ค„์ด๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์€ ํ•จ์ˆ˜(๋˜๋Š” ๋ฉ”์„œ๋“œ)๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.
- [x] 3ํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
- [x] else ์˜ˆ์•ฝ์–ด๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
- [x] else ์˜ˆ์•ฝ์–ด๋ฅผ ์“ฐ์ง€ ๋ง๋ผ๊ณ  ํ•˜๋‹ˆ switch/case๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ switch/case๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
- [x] ํžŒํŠธ: if๋ฌธ์—์„œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด else ์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
- [ ] ๋ชจ๋“  ๊ธฐ๋Šฅ์„ TDD๋กœ ๊ตฌํ˜„ํ•ด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค. ๋‹จ, UI(System.out, System.in) ๋กœ์ง์€ ์ œ์™ธ
- [ ] ํ•ต์‹ฌ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ์™€ UI๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋กœ์ง์„ ๊ตฌ๋ถ„ํ•œ๋‹ค.
- [x] UI ๋กœ์ง์„ view.InputView, ResultView์™€ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ถ„๋ฆฌํ•œ๋‹ค.
- [x] ํ•จ์ˆ˜(๋˜๋Š” ๋ฉ”์„œ๋“œ)์˜ ๊ธธ์ด๊ฐ€ 10๋ผ์ธ์„ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค.
- [x] ํ•จ์ˆ˜(๋˜๋Š” ๋ฉ”์†Œ๋“œ)๊ฐ€ ํ•œ ๊ฐ€์ง€ ์ผ๋งŒ ํ•˜๋„๋ก ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ.
- [x] ๋ฐฐ์—ด ๋Œ€์‹  ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.
- [ ] ๋ชจ๋“  ์›์‹œ ๊ฐ’๊ณผ ๋ฌธ์ž์—ด์„ ํฌ์žฅํ•œ๋‹ค.
- [x] ์ค„์—ฌ ์“ฐ์ง€ ์•Š๋Š”๋‹ค(์ถ•์•ฝ ๊ธˆ์ง€).
- [x] ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์“ด๋‹ค.
- [x] ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•œ๋‹ค.
- [x] 3๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

### ์ถ”๊ฐ€๋œ ์š”๊ตฌ ์‚ฌํ•ญ

- [x] ๋„๋ฉ”์ธ์˜ ์˜์กด์„ฑ์„ ์ตœ์†Œํ•œ์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.
- [ ] ํ•œ ์ค„์— ์ ์„ ํ•˜๋‚˜๋งŒ ์ฐ๋Š”๋‹ค.
- [ ] ๊ฒŒํ„ฐ/์„ธํ„ฐ/ํ”„๋กœํผํ‹ฐ๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
- [ ] ๋ชจ๋“  ๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ ์ฒด์กฐ ์›์น™์„ ์ž˜ ์ง€ํ‚ค๋ฉฐ ๊ตฌํ˜„ํ•œ๋‹ค.
- [ ] [ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ](https://github.com/woowacourse/woowacourse-docs/blob/master/cleancode/pr_checklist.md)์˜ ์›์น™์„ ์ง€ํ‚ค๋ฉด์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•œ๋‹ค.

---

## ํŒ€ ๊ทœ์น™

> [!abstract] ### **1. ์ƒํƒœ ์œ„์น˜ ๊ทœ์น™**
>
> (If-Then) ๋งŒ์•ฝ ๊ธฐ๋ฌผ์˜ ์œ„์น˜๊ฐ€ ์ด๋™, ์žกํž˜, ๋ฐฐ์น˜ ๋ณ€๊ฒฝ์ฒ˜๋Ÿผ ๊ฒŒ์ž„ํŒ ์ „์ฒด ์ƒํƒœ ๋ณ€ํ™”์™€ ํ•จ๊ป˜ ๋ฐ”๋€๋‹ค๋ฉด
>
> โ†’ ์œ„์น˜ ์ •๋ณด๋Š” ๋ณด๋“œ๊ฐ€ ๊ด€๋ฆฌํ•˜๊ณ , ๊ธฐ๋ฌผ์€ ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ง์ ‘ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค
>
> (๊ธฐ์ค€) ์ƒํƒœ ์†Œ์œ  ๊ธฐ์ค€: ๋ณ€๊ฒฝ์˜ ์ฑ…์ž„์ด ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๊ทธ ์ƒํƒœ๋ฅผ ์†Œ์œ ํ•œ๋‹ค
>
> (๊ธˆ์ง€) ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ๋ณด๋“œ์™€ ๊ธฐ๋ฌผ์ด ๋™์‹œ์— ์œ„์น˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค
>
> ---
>
> ### **2. ๋ถˆ๋ณ€ ๊ฐ์ฒด ๊ธฐ์ค€**
>
> (If-Then) ๋งŒ์•ฝ ๊ธฐ๋ฌผ์ด ๊ฐ€์ง€๋Š” ์ •๋ณด๊ฐ€ ์ข…๋ฅ˜, ์†Œ์† ํŒ€, ์ด๋™ ๊ทœ์น™์ฒ˜๋Ÿผ ๊ฒŒ์ž„ ๋„์ค‘ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ฐ’์ด๋ผ๋ฉด
>
> โ†’ ๊ธฐ๋ฌผ ๊ฐ์ฒด๋Š” ๋ถˆ๋ณ€์œผ๋กœ ๋งŒ๋“ ๋‹ค
>
> (๊ธฐ์ค€) ๋ถˆ๋ณ€์„ฑ ํŒ๋‹จ ๊ธฐ์ค€: ๊ฒŒ์ž„ ๋„์ค‘ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ •๋ณด๋Š” ๊ฐ์ฒด ๋‚ด๋ถ€์—์„œ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค
>
> (๊ธˆ์ง€) ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ๊ธฐ๋ฌผ์˜ ์ข…๋ฅ˜, ํŒ€, ์ด๋™ ๊ทœ์น™์„ ์ƒ์„ฑ ํ›„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค
>
> ---
>
> ### **3. ์บก์Аํ™” ๊ธฐ์ค€**
>
> (If-Then) ๋งŒ์•ฝ ์–ด๋–ค ์ƒํƒœ๋ฅผ ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ˆ˜์ • ์‹œ ๊ทœ์น™ ์œ„๋ฐ˜์ด๋‚˜ ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด
>
> โ†’ ๊ทธ ์ƒํƒœ๋Š” ๋‚ด๋ถ€์— ์บก์Аํ™”ํ•˜๊ณ , ์ฑ…์ž„ ์žˆ๋Š” ๊ฐ์ฒด๋งŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค
>
> (If-Then) ๋งŒ์•ฝ ๋ณด๋“œ์˜ ๋‚ด๋ถ€ ์ƒํƒœ๊ฐ€ ์™ธ๋ถ€ ๋กœ์ง์— ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋˜๋ฉด
>
> โ†’ ๋ณด๋“œ์˜ ์ƒํƒœ๋Š” ์ง์ ‘ ์ˆ˜์ • ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ๊ณต๊ฐœํ•˜์ง€ ์•Š๊ณ , ํ•„์š”ํ•œ ๋™์ž‘๋งŒ ๋ฉ”์„œ๋“œ๋กœ ์ œ๊ณตํ•œ๋‹ค
>
> (๊ธฐ์ค€) ์บก์Аํ™” ๊ธฐ์ค€: ์ •ํ•ฉ์„ฑ์„ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋‚ด๋ถ€ ํ‘œํ˜„๊ณผ ์ˆ˜์ • ๊ถŒํ•œ์€ ์ˆจ๊ธด๋‹ค
>
> (๊ธˆ์ง€) ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ๋ณด๋“œ์˜ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค
>
> ---
>
> ### **4. null ์‚ฌ์šฉ ๊ธฐ์ค€**
>
> (If-Then) ๋งŒ์•ฝ ๋นˆ ์นธ๋„ ๋ณด๋“œ ์œ„์˜ ์˜๋ฏธ ์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด
>
> โ†’ ๋นˆ ์นธ์€ null ๋Œ€์‹  ๊ฐ์ฒด ๋˜๋Š” ์กด์žฌ ์—ฌ๋ถ€๊ฐ€ ๋“œ๋Ÿฌ๋‚˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค
>
> (If-Then) ๋งŒ์•ฝ ๋นˆ ์นธ ์—ฌ๋ถ€๋ฅผ ์ž์ฃผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด
>
> โ†’ null ๊ฒ€์‚ฌ์— ์˜์กดํ•˜๊ธฐ๋ณด๋‹ค, ๋นˆ ์ƒํƒœ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์šฐ์„ ํ•œ๋‹ค
>
> (๊ธฐ์ค€) null ์‚ฌ์šฉ ๊ธฐ์ค€: ์—†์Œ๋„ ์˜๋ฏธ ์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค
>
> (๊ธˆ์ง€) ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ๋นˆ ์นธ์„ ๋‹จ์ˆœ null ๊ฒ€์‚ฌ์—๋งŒ ์˜์กดํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค
>
> ---
>
> ### **5. ์กฐ๊ฑด๋ฌธ ๋Œ€์ฒด ๊ธฐ์ค€**
>
> (If-Then) ๋งŒ์•ฝ ์กฐ๊ฑด๋ฌธ์ด ๊ฐ์ฒด์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋™์ž‘์„ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค๋ฉด
>
> โ†’ ์กฐ๊ฑด๋ฌธ ๋Œ€์‹  ๋‹คํ˜•์„ฑ์„ ์šฐ์„  ๊ณ ๋ คํ•˜๊ณ , ๊ฐ ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์˜ ๊ทœ์น™์„ ์ง์ ‘ ๊ตฌํ˜„ํ•œ๋‹ค
>
> (If-Then) ๋งŒ์•ฝ ์กฐ๊ฑด๋ฌธ์ด ๋ณด๋“œ ๋ฒ”์œ„ ํ™•์ธ, ์žฅ์• ๋ฌผ ํ™•์ธ, ๊ฐ™์€ ํŒ€ ์—ฌ๋ถ€ ํ™•์ธ์ฒ˜๋Ÿผ ๊ฐ์ฒด ์ข…๋ฅ˜์™€ ๋ฌด๊ด€ํ•œ ๊ณตํ†ต ๊ฒ€์ฆ์ด๋ผ๋ฉด
>
> โ†’ ์ด๋Ÿฐ ์กฐ๊ฑด๋ฌธ์€ ๊ณตํ†ต ๋กœ์ง์œผ๋กœ ์œ ์ง€ํ•œ๋‹ค
>
> (๊ธฐ์ค€) ๋‹คํ˜•์„ฑ ์ ์šฉ ๊ธฐ์ค€: ๊ฐ™์€ ์งˆ๋ฌธ์— ๊ฐ์ฒด๋งˆ๋‹ค ๋‹ค๋ฅธ ๋‹ต์„ ํ•ด์•ผ ํ•˜๋ฉด ๋‹คํ˜•์„ฑ ํ›„๋ณด๋กœ ๋ณธ๋‹ค
>
> (๊ธˆ์ง€) ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ๊ธฐ๋ฌผ ํƒ€์ž…์„ ๋ฌธ์ž์—ด, enum, switch/if๋กœ ๋ฐ˜๋ณต ๋ถ„๊ธฐํ•˜์—ฌ ์ด๋™ ๊ทœ์น™์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค
>
> ---
>
> ### **6. ์—ญํ• /์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„ ๊ธฐ์ค€**
>
> (If-Then) ๋งŒ์•ฝ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ํ–‰์œ„๋ฅผ ํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ตฌํ˜„ ๋ฐฉ์‹์€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค๋ฉด
>
> โ†’ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ํ†ต์ผํ•œ๋‹ค.
>
> (๊ธฐ์ค€) ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„ ๊ธฐ์ค€: ํ˜ธ์ถœ ๋ฐฉ์‹์€ ํ†ต์ผํ•˜๊ณ , ๊ตฌํ˜„ ๋ฐฉ์‹์€ ๊ฐ ๊ฐ์ฒด์— ์œ„์ž„ํ•œ๋‹ค.
>
> (๊ธˆ์ง€) ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ํ˜ธ์ถœํ•˜๋Š” ์ชฝ์ด ๊ธฐ๋ฌผ ์ข…๋ฅ˜๋ฅผ ๋จผ์ € ํŒ๋ณ„ํ•œ ๋’ค ๊ฐ ๊ทœ์น™์„ ์ง์ ‘ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.
>
> ---
>
> ### **7. ์ƒˆ ํƒ€์ž… ์ถ”๊ฐ€ ์‹œ ๋ณ€๊ฒฝ ๋ฒ”์œ„ ์ œํ•œ ๊ทœ์น™**
>
> (If-Then) ๋งŒ์•ฝ ์ƒˆ ๊ธฐ๋ฌผ์ด ์ถ”๊ฐ€๋  ๋•Œ ๊ธฐ์กด ์ด๋™ ๋กœ์ง์„ ์—ฌ๋Ÿฌ ๊ณณ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค๋ฉด
>
> โ†’ ๊ธฐ๋ฌผ๋ณ„ ์ฑ…์ž„ ๋ถ„๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ์œผ๋กœ ๋ณด๊ณ  ๊ตฌ์กฐ๋ฅผ ๊ผญ ํ•„ํžˆ ๋‹ค์‹œ ์ ๊ฒ€ํ•œ๋‹ค.
>
> (๊ธฐ์ค€) ํ™•์žฅ์„ฑ ํŒ๋‹จ ๊ธฐ์ค€: ์ƒˆ๋กœ์šด ๊ธฐ๋ฌผ ์ถ”๊ฐ€๋‚˜ ๊ทœ์น™ ๋ณ€๊ฒฝ ์‹œ ๊ธฐ์กด ์ฝ”๋“œ ์ˆ˜์ • ๋ฒ”์œ„๊ฐ€ ์ž‘์•„์•ผ ํ•œ๋‹ค.
>
> (๊ธˆ์ง€) ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ์ƒˆ ๊ธฐ๋ฌผ ์ถ”๊ฐ€๋ฅผ ์œ„ํ•ด ๊ธฐ์กด ๋ถ„๊ธฐ๋ฌธ์„ ๊ณ„์† ๋Š˜๋ฆฌ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค
Empty file removed src/main/java/.gitkeep
Empty file.
14 changes: 14 additions & 0 deletions src/main/java/Application.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import application.GameManager;
import java.util.Scanner;
import view.InputView;
import view.OutputView;

public class Application {
public static void main(String[] args) {
GameManager gameManager = new GameManager(
new InputView(new Scanner(System.in)),
new OutputView()
);
gameManager.play();
}
}
Loading