Skip to content

[๐Ÿš€ ์‚ฌ์ดํด1 - ๋ฏธ์…˜ (๋ณด๋“œ ์ดˆ๊ธฐํ™” + ๊ธฐ๋ฌผ ์ด๋™)] ๋ฌด๋น™ ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#200

Open
mvg01 wants to merge 118 commits intowoowacourse:mvg01from
mvg01:step1

Conversation

@mvg01
Copy link
Copy Markdown

@mvg01 mvg01 commented Mar 27, 2026

๊ฐœ์š”

์•ˆ๋…•ํ•˜์„ธ์š” ์ฐฐ๋ฆฌ, ๋ฌด๋น™์ž…๋‹ˆ๋‹ค.
์ด๋ฒˆ ์‚ฌ์ดํด 1์€ ์ €์—๊ฒŒ ๊ฝค ์–ด๋ ต๊ฒŒ ๋‹ค๊ฐ€์˜จ ๋ฏธ์…˜์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„์„ ์ง„ํ–‰ํ•˜๋Š” ๋‚ด๋‚ด ์„ค๊ณ„์— ๋Œ€ํ•ด ์˜ค๋ž˜ ๊ณ ๋ฏผํ–ˆ๊ณ , ํŽ˜์–ด์™€ ๋งŽ์€ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ„๋ฉฐ ์ตœ๋Œ€ํ•œ ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ๋ฐฉํ–ฅ์„ ์ง€ํ‚ค๊ณ ์ž ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค๋งŒ ์•„์ง ์ž๋ฐ”์™€ ๊ฐ์ฒด์ง€ํ–ฅ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค ๋ณด๋‹ˆ, ๊ธฐ๋ฌผ ์ด๋™ ๊ด€๋ จ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ์—๋Š” ์ค‘๋ณต์ด ๋‚จ์•„ ์žˆ๊ณ , ๊ฐ ๊ธฐ๋ฌผ์˜ ์›€์ง์ž„ ์ „๋žต์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ถ€๋ถ„๋„ ๋‹ค์†Œ ๊ธธ๊ณ  ๋ณต์žกํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋‹จ๊ณ„์—์„œ๋Š” ์šฐ์„  ์™„์ „ํžˆ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ๋‘๊ณ , ์ตœ์†Œํ•œ์˜ ๋ฆฌํŒฉํ† ๋ง๋งŒ ์ง„ํ–‰ํ•œ ์ƒํƒœ๋กœ PR์„ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์€ ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ์ฐจ๊ทผ์ฐจ๊ทผ ๊ฐœ์„ ํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ๋Š” ๊ฒŒ์ž„์˜ ํ„ด ์ง„ํ–‰, ๊ถ์„ฑ, ์ŠนํŒจ ๋กœ์ง๊นŒ์ง€๋Š” ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฐจ๋ฆผ๋ฒ•์„ ์ž…๋ ฅ๋ฐ›์•„ ์–‘ ํŒ€์˜ ๊ธฐ๋ฌผ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ๋ณด๋“œ๋ฅผ ๊ตฌ์„ฑํ•ด ์ถœ๋ ฅํ•˜๋Š” ํ๋ฆ„๊นŒ์ง€ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ œ๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…๊ณผ ์ž๋ฐ”์Šคํ‚ฌ์ด ๋งŽ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ ์ด๋ฒˆ ๋ฆฌ๋ทฐ์—์„œ ๋งŽ์ด ๋ฐฐ์šฐ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํŽธํ•˜๊ฒŒ ์—ฌ๋Ÿฌ ๊ด€์ ์—์„œ ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ™˜์ ˆ๊ธฐ ๊ฑด๊ฐ• ์œ ์˜ํ•˜์„ธ์š”!

์ฒดํฌ ๋ฆฌ์ŠคํŠธ

  • ๋ฏธ์…˜์˜ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ๋‚˜์š”?
  • Gradle test๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ†ต๊ณผํ–ˆ๋‚˜์š”?
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋‚˜์š”?

์–ด๋–ค ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฆฌ๋ทฐํ•ด์•ผ ํ• ๊นŒ์š”?

1. ๋ณด๋“œ ์ƒํƒœ๋ฅผ ์–ด๋””์—์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๊ณ„

๊ฐ€์žฅ ํฌ๊ฒŒ ๊ณ ๋ฏผํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์‚ฌ์ „ํ•™์Šต๊ณผ ํ† ๋ก  ๊ณผ์ •์—์„œ๋„ ๊ธฐ๋ฌผ์ด ๋ณด๋“œ์˜ ์ƒํƒœ๋ฅผ ์ง์ ‘ ์•Œ ์ฑ…์ž„์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ณ , ๊ธฐ๋ฌผ์€ ์ž์‹ ์˜ ์ด๋™ ๊ทœ์น™๋งŒ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์ด๋™ ๊ฐ€๋Šฅํ•œ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์—์„œ๋Š” ๋ณด๋“œ ์ƒํƒœ๊ฐ€ ๊ณ„์† ํ•„์š”ํ–ˆ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฌผ์— ์ง์ ‘ ์ „๋‹ฌํ•˜๋‹ค ๋ณด๋ฉด ๊ธฐ๋ฌผ์ด ๋ณด๋“œ๋ฅผ ์•Œ๊ฒŒ ๋˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋˜์–ด ๋ถˆํŽธํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋ณด๋“œ์™€ ๊ธฐ๋ฌผ ์‚ฌ์ด์— BoardMediator๋ฅผ ๋‘๊ณ , ๊ธฐ๋ฌผ์€ ๋ณด๋“œ์˜ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„์„ ๋ชจ๋ฅด๋”๋ผ๋„ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์ด ์บก์Аํ™”๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉํ–ฅ์ธ์ง€, ํ˜น์€ ์˜คํžˆ๋ ค ์ค‘์žฌ์ž์ธ BoardMediator์—๊ฒŒ ์ฑ…์ž„์ด ๊ณผํ•˜๊ฒŒ ๋ชฐ๋ฆฌ๋Š” ๊ตฌ์กฐ์ธ์ง€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ฐฐ๋ฆฌ๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ๊ธฐ๋ฌผ๊ณผ ๋ณด๋“œ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ–ˆ์„์ง€๋„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

2. movement๋ฅผ 1์นธ ๋‹จ์œ„๋กœ ๋‹ค๋ฃจ๋Š” ํ˜„์žฌ ๋ฐฉ์‹์ด ์ ์ ˆํ•œ์ง€

์ฒ˜์Œ์—๋Š” movement๊ฐ€ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ์นธ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก maxDistance ๊ฐœ๋…์„ ๋‘๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒ์˜ ๊ฒฝ์šฐ๋„ โ€œ๋Œ€๊ฐ์„  1์นธ์„ ๋‘ ๋ฒˆโ€์ด ์•„๋‹ˆ๋ผ โ€œ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์œผ๋กœ ์ตœ๋Œ€ 2์นธโ€์ฒ˜๋Ÿผ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ตฌํ˜„ ๊ณผ์ •์—์„œ ๋ณต์žก๋„๊ฐ€ ๋งŽ์ด ์˜ฌ๋ผ๊ฐ€์„œ, ํ˜„์žฌ๋Š” ๋ชจ๋“  movement๋ฅผ ์‚ฌ์‹ค์ƒ 1์นธ ๋‹จ์œ„๋กœ๋งŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์œ„ ๋ถ€๋ถ„์€ ์ฝ”๋“œ๋กœ ์ฝ”๋ฉ˜ํŠธ ๋‚จ๊ธฐ๊ฒ ์Šต๋‹ˆ๋‹ค.)

์ด ๋ฐฉ์‹์ด ์˜คํžˆ๋ ค ๋” ๋‹จ์ˆœํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜์— ์œ ๋ฆฌํ•œ์ง€, ์•„๋‹ˆ๋ฉด ์ฒ˜์Œ ์˜๋„ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ movement ์ž์ฒด๊ฐ€ ๊ฑฐ๋ฆฌ ๊ฐœ๋…์„ ๊ฐ–๋Š” ํŽธ์ด ๋” ๋‚˜์€์ง€ ์กฐ์–ธ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

3. ๊ธฐ๋ฌผ ์ดˆ๊ธฐํ™”์™€ ์ „๋žต ์ดˆ๊ธฐํ™”์—์„œ new๊ฐ€ ๋งŽ์ด ๋“ฑ์žฅํ•˜๋Š” ๊ตฌ์กฐ

๊ฐ ๊ธฐ๋ฌผ์˜ pieceAction ์ดˆ๊ธฐํ™”, ๊ทธ๋ฆฌ๊ณ  ๋ณด๋“œ์˜ ์ดˆ๊ธฐ ๋ฐฐ์น˜ ๊ณผ์ •์—์„œ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ๋“ค์–ด๊ฐ”์Šต๋‹ˆ๋‹ค.
์ง€๊ธˆ์€ ๋™์ž‘์„ ์šฐ์„ ์‹œํ•ด์„œ ์ž‘์„ฑํ–ˆ์ง€๋งŒ, ์ž‘์„ฑํ•˜๋ฉด์„œ๋„ ๋‹ค์†Œ ํ•˜๋“œ์ฝ”๋”ฉ์ฒ˜๋Ÿผ ๋А๊ปด์กŒ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์„ค๊ณ„ ์•ˆ์—์„œ ์ด ๋ถ€๋ถ„์„ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„์ง€, ํ˜น์€ ํŒฉํ† ๋ฆฌ๋‚˜ ๋‹ค๋ฅธ ๊ตฌ์กฐ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฌ์šด์ง€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

4. ํ…Œ์ŠคํŠธ ๋ฒ”์œ„์™€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์–ด๋””๊นŒ์ง€ ๊ฐ€์ ธ๊ฐ€์•ผ ํ•˜๋Š”์ง€

์ด๋ฒˆ ๊ตฌํ˜„์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ๋„ ๋งŽ์€ ์‹œ๊ฐ„์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ด๋™ ๊ทœ์น™์€ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„, ์–ด๋””๊นŒ์ง€ ํ…Œ์ŠคํŠธํ•ด์•ผ ์ถฉ๋ถ„ํ•œ์ง€ ๊ณ„์† ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๋๊นŒ์ง€ ์ง‘์š”ํ•˜๊ฒŒ ์ถ”์ ํ•ด ์™„์ „๋ฌด๊ฒฐํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ๋งž๋Š”์ง€, ์•„๋‹ˆ๋ฉด ํ•ต์‹ฌ ๊ทœ์น™๊ณผ ๋Œ€ํ‘œ ์ผ€์ด์Šค ์ค‘์‹ฌ์œผ๋กœ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์ด ๋” ํ˜„์‹ค์ ์ธ์ง€ ๊ธฐ์ค€์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋‹ˆ fixture ์ค‘๋ณต์ด๋‚˜ ์ผ€์ด์Šค ์„ค๊ณ„์—๋„ ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ค์—ˆ๋Š”๋ฐ, ์ด๋Ÿฐ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ํŒ๋„ ํ•จ๊ป˜ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํŒ€์—์„œ๋„ ํ…Œ์ŠคํŠธ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์žˆ๋Š” public ๋ฉ”์„œ๋“œ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ , fixture ๋กœ์ง์ด ๋ฐ˜๋ณต๋˜๋ฉด ๋ณ„๋„ ์œ ํ‹ธ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ธฐ์ค€์„ ์ •๋ฆฌํ•ด๋‘์—ˆ๋Š”๋ฐ, ์ œ๊ฐ€ ์‹ค์ œ ์ฝ”๋“œ์— ๊ทธ ๊ธฐ์ค€์„ ์ž˜ ๋ฐ˜์˜ํ•˜๊ณ  ์žˆ๋Š”์ง€๋„ ๋ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

mvg01 and others added 30 commits March 24, 2026 16:19
mvg01 added 28 commits April 2, 2026 17:32
- ํ˜„์žฌ movement์˜ ์›€์ง์ž„์—์„œ maxDistance๋Š” 1๋กœ ๊ณ ์ •ํ•ด์•ผํ•ด์„œ ์ˆ˜์ •
- ํ˜„์žฌ movement์˜ ์›€์ง์ž„์—์„œ maxDistance๋Š” 1๋กœ ๊ณ ์ •ํ•ด์•ผํ•ด์„œ ์ˆ˜์ •
Copy link
Copy Markdown

@Gomding Gomding left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•ˆ๋…•ํ•˜์„ธ์š” ๋ฌด๋น™!
ํ”ผ๋“œ๋ฐฑ ์ž˜ ๋ฐ˜์˜ํ•ด์ฃผ์…จ๋„ค์š” ๐Ÿ‘
๋ช‡๊ฐ€์ง€ ์ฝ”๋ฉ˜ํŠธ ๋‚จ๊ฒผ์œผ๋‹ˆ ํ™•์ธ๋ถ€ํƒ๋“œ๋ ค์š”~
๊ถ๊ธˆํ•œ ์  ์žˆ์œผ๋ฉด ์–ธ์ œ๋“  DM ์ด๋‚˜ ์ฝ”๋ฉ˜ํŠธ ๋‚จ๊ฒจ์ฃผ์„ธ์š” :)

Comment on lines +24 to +40
public void run() {
Team redTeam = setupRedTeam();
Team blueTeam = setupBlueTeam();
Board board = BoardGenerator.generate(redTeam, blueTeam);
TurnManager turnManager = new TurnManager();
while (board.hasTwoGeneral()) {
OutputView.printBoard(BoardDto.from(board), turnManager.currentTeamType());
Position from = findFromPosition(board, turnManager);
Piece piece = board.getPieceInPosition(from);
List<Position> movable = piece.calculateMovablePositions(from, board);
OutputView.printBoardWithMovable(BoardDto.from(board, movable));
Position to = RetryExecutor.retry(() -> inputToPosition(movable));
board.changeBoard(from, to);
turnManager.changeTurn();
}
OutputView.printGameOverMessage(turnManager.currentTeamType());
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ต‰์žฅํžˆ ๊น”๋”ํ•˜๋„ค์š”!

Comment on lines +72 to +73
Piece piece = board.getPieceInPosition(from);
List<Position> movable = piece.calculateMovablePositions(from, board);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์š”๋Ÿฐ ๋ถ€๋ถ„์€ Controller ์— ์žˆ์„ ํ๋ฆ„์ด ์•„๋‹Œ๊ฒƒ ๊ฐ™๋„ค์š” ๐Ÿค”
๋„๋ฉ”์ธ ์ชฝ์— ํ๋ฆ„์„ ๋งŒ๋“ค์–ด๋ณด๋Š”๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?

Comment on lines +101 to +103
// ์ด๋™ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ์˜ ์ž์ทจ ์œ„์น˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ๊ฒฝ๋กœ์— ์žฅ์• ๋ฌผ์„ ๋งŒ๋‚˜๋ฉด ๊ทธ๋•Œ๊นŒ์ง€์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ ์„ ๋งŒ๋‚œ๋‹ค๋ฉด ์ ์˜ ์ขŒํ‘œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
public List<Position> calculateTracesForCannon(final Position from, final TeamType teamType,
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ•ด๋‹น ์ฑ…์ž„์ด Movement ์— ์žˆ์–ด๋„ ๊ดœ์ฐฎ์„์ง€ ์กฐ๊ธˆ ์˜๋ฌธ์ด ๋“ค์—ˆ์–ด์š” ๐Ÿค”
๋ฌด๋น™์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Movement ํด๋ž˜์Šค ์ „์ฒด์ ์œผ๋กœ ๋ฉ”์„œ๋“œ ๊ธธ์ด๋‚˜ depth1 ๊ทœ์น™์„ ์ฒดํฌํ•ด๋ณด์‹œ๋ฉด ์ข‹๊ฒ ์–ด์š”!

@Override
public List<Position> execute(Position from, final BoardMediator boardMediator) {
final Piece piece = boardMediator.getPieceInPosition(from);
final Movement movement = movementOrder.getFirst();
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ฏธ๋ฆฌ ๊ณต์œ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ด์š”~ ๐Ÿ‘

Comment on lines +58 to +61
if (!hasPieceIn(position)) {
throw new IllegalArgumentException("์š”์ฒญ๋œ ์œ„์น˜์—๋Š” ๊ธฐ๋ฌผ์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
}
return positionPieceMap.get(position);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ทจํ–ฅ ์ฐจ์ด์ด์ง€๋งŒ ๋ถ€์ •๋ฌธ์ธ ์กฐ๊ฑด๋ณด๋‹ค ๊ธ์ •๋ฌธ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋ฐฐ์น˜ํ•˜๋Š”๊ฒƒ๋„ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์ด๋ผ ์ƒ๊ฐํ•ด์š”~

Suggested change
if (!hasPieceIn(position)) {
throw new IllegalArgumentException("์š”์ฒญ๋œ ์œ„์น˜์—๋Š” ๊ธฐ๋ฌผ์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
}
return positionPieceMap.get(position);
if (hasPieceIn(position)) {
return positionPieceMap.get(position);
}
throw new IllegalArgumentException("์š”์ฒญ๋œ ์œ„์น˜์—๋Š” ๊ธฐ๋ฌผ์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");

Comment on lines +28 to +47
CHINESE_MAP = Map.of(
TeamType.RED, Map.of(
PieceType.GENERAL, ConsoleColor.red("ๆผข"),
PieceType.GUARD, ConsoleColor.red("ๅฃซ"),
PieceType.CHARIOT, ConsoleColor.red("่ปŠ"),
PieceType.CANNON, ConsoleColor.red("ๅŒ…"),
PieceType.HORSE, ConsoleColor.red("้ฆฌ"),
PieceType.ELEPHANT, ConsoleColor.red("่ฑก"),
PieceType.SOLDIER, ConsoleColor.red("ๅ…ต")
),
TeamType.BLUE, Map.of(
PieceType.GENERAL, ConsoleColor.blue("ๆฅš"),
PieceType.GUARD, ConsoleColor.blue("ๅฃซ"),
PieceType.CHARIOT, ConsoleColor.blue("่ปŠ"),
PieceType.CANNON, ConsoleColor.blue("ๅŒ…"),
PieceType.HORSE, ConsoleColor.blue("้ฆฌ"),
PieceType.ELEPHANT, ConsoleColor.blue("่ฑก"),
PieceType.SOLDIER, ConsoleColor.blue("ๅ’")
));
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด๊ฑด view ์™€ ๋งค์šฐ ๊นŠ์€๊ด€๊ณ„๋ผ view ์—์„œ ๋ณ€ํ™˜ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์€๋ฐ ๋ฌด๋น™์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”!
DTO ๊ฐ€ view ์˜ ์˜์—ญ๊นŒ์ง€ ๋„ˆ๋ฌด ๊นŠ๊ฒŒ ์•Œ๊ณ ์žˆ๋‹ค๊ณ  ๋А๊ปด์ ธ์„œ์š” :)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BoardDto ์ „์ฒด์ ์œผ๋กœ DTO ์˜ ์ฑ…์ž„๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„œ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š”๊ฒƒ ๊ฐ™์•„์š” ๐Ÿค”
๋ฌด๋น™์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?

public class General implements Piece {

private static final PieceType PIECE_TYPE = PieceType.GENERAL;
private static final PieceAction PIECE_ACTION;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ชจ๋“  piece ๋“ค์ด PieceAction๊ณผ PieceType์ด ํ•„์š”ํ•œ๋ฐ Piece ๋ฅผ ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ Piece ํ•˜์œ„์— ์ถ”์ƒํด๋ž˜์Šค๋กœ ๊ณ„์ธต ํ•˜๋‚˜๋ฅผ ๋‘๋Š”๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ด๊ฒ ์–ด์š” :)


private static void validateRowRange(final int row) {
if (row < MINIMUM_ROW || row > MAXIMUM_ROW) {
throw new IllegalArgumentException("ํ–‰ ์ž…๋ ฅ์€ 1~10์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.");
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•˜๋ฉด ์ƒ์ˆ˜์˜ ๊ฐ’ ์ˆ˜์ • ์‹œ ์ˆ˜์ •ํ•  ์œ„์น˜๊ฐ€ ์ค„์–ด๋“œ๋‹ˆ ํŽธํ•  ๊ฒƒ ๊ฐ™๋„ค์š” :)

Suggested change
throw new IllegalArgumentException("ํ–‰ ์ž…๋ ฅ์€ 1~10์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.");
throw new IllegalArgumentException("ํ–‰ ์ž…๋ ฅ์€ %s~%s์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.", MINIMUM_ROW, MAXIMUM_ROW);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants