Skip to content

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

Open
haechanmoon wants to merge 30 commits intowoowacourse:haechanmoonfrom
haechanmoon:haechanmoon

Conversation

@haechanmoon
Copy link
Copy Markdown

@haechanmoon haechanmoon commented Mar 30, 2026

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

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

์•ˆ๋…•ํ•˜์„ธ์š” ํ”ผ๋…ธ์ž…๋‹ˆ๋‹ค!
ํŽ˜์–ด์™€ ๋จธ๋ฆฌ๋ฅผ ๋งž๋Œ€๋ฉฐ ์—ด์‹ฌํžˆ ๊ตฌํ˜„ํ•ด ๋ณด์•˜์ง€๋งŒ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
Depth1 ์ด์ƒ๊ณผ, get์‚ฌ์šฉ, else์‚ฌ์šฉ, ๋“ฑ ๋ชป์ง€ํ‚จ ์š”๊ตฌ์‚ฌํ•ญ๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค..
๊ทธ๋ž˜๋„ ๋ฆฌ๋ทฐ ์ž˜ ๋ถ€ํƒ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!

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

์ดˆ๋ฐ˜ ์„ค๊ณ„์˜ ๋„ˆ๋ฌด ์–ด๋ ค์›€

์ œ๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅ์— ์•„์ง ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ดˆ๋ฐ˜ ์„ค๊ณ„ํ•  ๋•Œ ์ˆจ์ด ํƒ ๋ง‰ํž™๋‹ˆ๋‹ค.
์ €๋ฒˆ์ฃผ์— <๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด>๋ฅผ ์ฝ๊ธด ํ–ˆ์ง€๋งŒ ์ด๊ฒƒ์„ ์ง์ ‘ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๋ ค ํ•˜๋‹ˆ ์•„์ง ๋„ˆ๋ฌด ์–ด๋ ค์šด ๊ณผ์ •์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํŽ˜์–ด์™€ ๊ฐ™์ด ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜๋”๋ผ๋ฉด ํ˜ผ์ž์„œ๋Š” ๋Œ์•„๊ฐ€๋Š” ๊ธฐ๋Šฅ์„ ์™„์„ฑํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

TDD๋ฅผ ํ•˜๋”๋ผ๋„ ํฐ ๋ผˆ๋Œ€๋Š” ๋งŒ๋“ค๊ณ  ์‹œ์ž‘์„ ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ดˆ๋ฐ˜์— ๋งŽ์€ ์–ด๋ ค์›€์„ ๋А๋ผ๋Š”๋ฐ ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ๊ทน๋ณตํ•˜์…จ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.!

๋‹คํ˜•์„ฑ

  • ์ถ”์ƒํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด๋ฌธ์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ TDD ๋กœ ํ•  ๋•Œ์˜ ๋ณต์žก์„ฑ์ด ๋„ˆ๋ฌด ์ปค์„œ ์‹œ๋„ํ•˜๋‹ค๊ฐ€ ํฌ๊ธฐํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ์ถ”์ƒํ™”ํ•˜๋ฉด ์ข‹์„์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!

Copy link
Copy Markdown

@syoun602 syoun602 left a comment

Choose a reason for hiding this comment

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

์•ˆ๋…•ํ•˜์„ธ์š” ํ”ผ๋…ธ ๐Ÿ™‚
์ด๋ฒˆ์— ์žฅ๊ธฐ ๋ฏธ์…˜ ๋ฆฌ๋ทฐ์–ด๋ฅผ ๋งก๊ฒŒ๋œ ์ฌ์ž…๋‹ˆ๋‹ค. ๋งŒ๋‚˜์„œ ๋ฐ˜๊ฐ€์›Œ์š”.
๋ฆฌ๋ทฐ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์„ค๊ณ„์ ์ธ ๋ถ€๋ถ„๋„ ๋ณด๊ณ  ์žˆ์—ˆ์œผ๋‚˜ ๊ทธ ์ „์— ์šฐ์„ ์ ์œผ๋กœ ๊ฐœ์„ ํ•ด์•ผ ํ•  ์š”๊ตฌ์‚ฌํ•ญ ๊ด€๋ จ ๋‚ด์šฉ์ด ๋งŽ์ด ๋ณด์—ฌ ์ด๋ฒˆ์—๋Š” ์„ค๊ณ„ ์ค‘์‹ฌ๋ณด๋‹ค๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๊ธฐ๋ณธ ๋™์ž‘์„ ๋จผ์ € ๋งž์ถ”๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค.

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

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

import java.util.List;
import java.util.function.Supplier;

public class JanggiController {
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๋ž€ ๋ฌด์—‡์ธ์ง€ ์–ด๋–ค ์—ญํ• ์ธ์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.
๋‹จ์ˆœํžˆ Spring์—์„œ ํ”ํžˆ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด์ด๋ผ์„œ ์ผ๋‹ค๋ฉด ์ฝ˜์†” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ผญ ์ปจํŠธ๋กค๋Ÿฌ๋ผ๋Š” ๋„ค์ด๋ฐ์ด ํ•„์š”ํ•œ์ง€ ๊ณ ๋ฏผํ•ด๋ด…์‹œ๋‹ค.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

์ œ๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ Controller์˜ ์—ญํ• ์€ ๋„๋ฉ”์ธ๊ณผ View๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์ „์ฒด์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์•„์ง Spring์„ ๊ฑฐ์˜ ๋‹ค๋ค„๋ณธ ์ ์ด ์—†์–ด์„œ ์–ด๋– ํ•œ ํŒจํ„ด์„ ์˜์‹ํ•˜๊ณ  ์ผ๋‹ค๊ธฐ๋ณด๋‹ค๋Š”, MVC ํŒจํ„ด ๊ด€์ ์—์„œ ํ๋ฆ„์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ JanggiController๋ผ๋Š” ๋„ค์ด๋ฐ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ฒจ์ฃผ์‹  ํ›„ ์ฝ˜์†” ํ™˜๊ฒฝ๊ณผ ํ˜„์žฌ ๊ฐ์ฒด์˜ ์—ญํ• ์„ ๋‹ค์‹œ ๊ณ ๋ฏผํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ž…์ถœ๋ ฅ์„ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด ์žฅ๊ธฐ ๊ฒŒ์ž„์˜ ์ „์ฒด์ ์ธ ์ง„ํ–‰์„ ์ฑ…์ž„์ง€๋Š” ์ ์—์„œ, Controller๋ผ๋Š” ์ด๋ฆ„๋ณด๋‹ค๋Š” JanggiGame์ด๋ผ๋Š” ๋„ค์ด๋ฐ์ด ์ด Class์˜ ์ฑ…์ž„๊ณผ ์„ฑ๊ฒฉ์„ ๋” ์ง๊ด€์ ์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

๋„ค์ด๋ฐ๊ณผ ๊ฐ์ฒด์˜ ์—ญํ• ์— ๋Œ€ํ•ด ๊นŠ๊ฒŒ ๊ณ ๋ฏผํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. JanggiGame์œผ๋กœ ์ˆ˜์ •ํ•˜์—ฌ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

์ด์ „์— ๋‚จ๊ฒผ๋˜ ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ ์ฐธ๊ณ ์ฐจ ํ•œ๋ฒˆ ์ฝ์–ด๋ณด์‹œ๋ผ๊ณ  ๋งํฌ ๋‚จ๊ฒจ๋‘˜๊ฒŒ์š”~
woowacourse/java-blackjack#975 (comment)

return board;
}

public List<Position> findAvailablePositions(Position 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.

์ „์ฒด์ ์œผ๋กœ ๋ผ์ธ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์š”.
๋ฏธ์…˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ง€์ผœ๋ด…์‹œ๋‹ค

ํ•จ์ˆ˜(๋˜๋Š” ๋ฉ”์„œ๋“œ)์˜ ๊ธธ์ด๊ฐ€ 10๋ผ์ธ์„ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค.
ํ•จ์ˆ˜(๋˜๋Š” ๋ฉ”์†Œ๋“œ)๊ฐ€ ํ•œ ๊ฐ€์ง€ ์ผ๋งŒ ํ•˜๋„๋ก ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ์ชผ๊ฐœ๋„๋ก ๋…ธ๋ ฅํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค!
๋ฉ”์„œ๋“œ๋“ค์„ ์ž‘๊ฒŒ ์ชผ๊ฐœ๋‹ค๊ฐ€ ๋ณด๋‹ˆ ์ œ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•œ ์„ค๊ณ„๊ฐ€ ๋œ ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€ ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•ด์•ผํ•˜๋‚˜ ๊ณ ๋ฏผ์ค‘์ž…๋‹ˆ๋‹ค.. ๋ฉ”์„œ๋“œ ๋ผ์ธ ์ˆ˜ ์ค„์ด๋Š” ์ž‘์—…์ด ์ œ์ผ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Comment on lines +61 to +66
Piece piece = board.get(position);
PieceType pieceType = piece.getPieceType();

MoveRule moveRule = pieceType.getMoveRule();

List<Route> routes = moveRule.findRoutes(piece.getTeam());
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

์ „๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์™€์„œ ์กฐ๋ฆฝํ•˜๊ณ  ์žˆ๋Š”๋ฐ tell don't ask์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ด…์‹œ๋‹ค

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ์–ด๋””๊นŒ์ง€ get์„ ์“ธ ์ˆ˜ ์žˆ์„๊นŒ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ, ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋œ ์“ธ ์ˆ˜ ์žˆ์„๊นŒ. . ์•„์ง ์ƒ๊ฐ์ด ์™„์ „ํžˆ ์ •๋ฆฌ๋˜์ง€ ์•Š์•„ ์กฐ๊ธˆ ๋” ์ƒ๊ฐ์„ ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค..

Copy link
Copy Markdown
Author

@haechanmoon haechanmoon left a comment

Choose a reason for hiding this comment

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

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

import java.util.List;
import java.util.function.Supplier;

public class JanggiController {
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

์ œ๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ Controller์˜ ์—ญํ• ์€ ๋„๋ฉ”์ธ๊ณผ View๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์ „์ฒด์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์•„์ง Spring์„ ๊ฑฐ์˜ ๋‹ค๋ค„๋ณธ ์ ์ด ์—†์–ด์„œ ์–ด๋– ํ•œ ํŒจํ„ด์„ ์˜์‹ํ•˜๊ณ  ์ผ๋‹ค๊ธฐ๋ณด๋‹ค๋Š”, MVC ํŒจํ„ด ๊ด€์ ์—์„œ ํ๋ฆ„์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ JanggiController๋ผ๋Š” ๋„ค์ด๋ฐ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ฒจ์ฃผ์‹  ํ›„ ์ฝ˜์†” ํ™˜๊ฒฝ๊ณผ ํ˜„์žฌ ๊ฐ์ฒด์˜ ์—ญํ• ์„ ๋‹ค์‹œ ๊ณ ๋ฏผํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ž…์ถœ๋ ฅ์„ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด ์žฅ๊ธฐ ๊ฒŒ์ž„์˜ ์ „์ฒด์ ์ธ ์ง„ํ–‰์„ ์ฑ…์ž„์ง€๋Š” ์ ์—์„œ, Controller๋ผ๋Š” ์ด๋ฆ„๋ณด๋‹ค๋Š” JanggiGame์ด๋ผ๋Š” ๋„ค์ด๋ฐ์ด ์ด Class์˜ ์ฑ…์ž„๊ณผ ์„ฑ๊ฒฉ์„ ๋” ์ง๊ด€์ ์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

๋„ค์ด๋ฐ๊ณผ ๊ฐ์ฒด์˜ ์—ญํ• ์— ๋Œ€ํ•ด ๊นŠ๊ฒŒ ๊ณ ๋ฏผํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. JanggiGame์œผ๋กœ ์ˆ˜์ •ํ•˜์—ฌ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

return board;
}

public List<Position> findAvailablePositions(Position position) {
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ์ชผ๊ฐœ๋„๋ก ๋…ธ๋ ฅํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค!
๋ฉ”์„œ๋“œ๋“ค์„ ์ž‘๊ฒŒ ์ชผ๊ฐœ๋‹ค๊ฐ€ ๋ณด๋‹ˆ ์ œ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•œ ์„ค๊ณ„๊ฐ€ ๋œ ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€ ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•ด์•ผํ•˜๋‚˜ ๊ณ ๋ฏผ์ค‘์ž…๋‹ˆ๋‹ค.. ๋ฉ”์„œ๋“œ ๋ผ์ธ ์ˆ˜ ์ค„์ด๋Š” ์ž‘์—…์ด ์ œ์ผ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Copy link
Copy Markdown

@syoun602 syoun602 left a comment

Choose a reason for hiding this comment

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

์•ˆ๋…•ํ•˜์„ธ์š” ํ”ผ๋…ธ~
์š”๊ตฌ์‚ฌํ•ญ์„ ์ ์ ˆํžˆ ์ž˜ ์ง€์ผœ์ฃผ์…จ๋„ค์š” ๐Ÿ‘
์žฅ๊ธฐ ๋ฏธ์…˜์ด ์›Œ๋‚™ ์–ด๋ ค์šด ๋ฏธ์…˜์ด๊ธฐ ๋•Œ๋ฌธ์—,์ง€๊ธˆ์ฒ˜๋Ÿผ ํ•˜๋‚˜์”ฉ ์ •๋ฆฌํ•ด๋‚˜๊ฐ€๋Š” ๊ณผ์ • ์ž์ฒด๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด์š”. ์ด๋ฒˆ์—๋Š” ์ด์ „๋ณด๋‹ค ํ›จ์”ฌ ์•ˆ์ •์ ์œผ๋กœ ์ฝํ˜”๊ณ  ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งž์ถ”๋ ค๋Š” ๋…ธ๋ ฅ๋„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค ๐Ÿ˜€
๋ช‡ ๊ฐ€์ง€ ๊ฐœ์„  ํฌ์ธํŠธ๋ฅผ ๋‚จ๊ฒจ๋‘์—ˆ๋Š”๋ฐ ํ™•์ธํ•ด์ฃผ์‹œ๊ณ  ์žฌ์š”์ฒญ ์ฃผ์„ธ์š”.

}
}

private boolean playTurn(Board 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.

ํ„ด์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ์€ ์žˆ๋Š”๋ฐ, ์‹ค์ œ ํ„ด ๊ฐœ๋…์ด ๋„๋ฉ”์ธ์— ์—†๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ํ•œ๋‚˜๋ผ ์ฐจ๋ก€์—๋„ ์ดˆ๋‚˜๋ผ ๋ง์„ ์›€์ง์ผ ์ˆ˜ ์žˆ๋„ค์š”

import java.util.Map;
import java.util.function.Supplier;

public class JanggiGame {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

์ด ๋ถ€๋ถ„์€ ํ›„์ˆœ์œ„๋กœ ๋‘๊ณ  ์ž‘์—…ํ•ด์ฃผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค)

๊ฒŒ์ž„ ์ž์ฒด๋„ ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋กœ ๋ฐ”๋ผ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”.
์ง€๊ธˆ ๊ตฌ์กฐ๋Š” ๊ฒŒ์ž„ ์ง„ํ–‰๊ณผ ์ž…์ถœ๋ ฅ ๊ฐ•๊ฒฐํ•ฉ ๋˜์–ด ์žˆ๋Š”๋ฐ Application์ด ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๋‹ด๋‹นํ•˜๊ณ  Game์€ ๊ฒŒ์ž„ ์ง„ํ–‰์— ํ•„์š”ํ•œ ์ƒํƒœ์™€ ๊ทœ์น™๋งŒ ๊ด€๋ฆฌํ•˜๋„๋ก ๋‚˜๋ˆ„๋ฉด ์ฑ…์ž„์ด ๋” ์„ ๋ช…ํ•ด์งˆ ๊ฒƒ ๊ฐ™์•„์š”. ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ์ดํ›„์— ํ„ด ๊ด€๋ฆฌ๋‚˜ ์ข…๋ฃŒ ์กฐ๊ฑด ๊ฐ™์€ ๊ทœ์น™๋„ UI์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ์‰ฌ์›Œ์งˆ ๊ฒƒ ๊ฐ™์•„์š”.

private boolean isChoTurn = true;

public void run() {
Board board = initializeBoard();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

JanggiGame์ด ๊ฒŒ์ž„ ์ง„ํ–‰์„ ๋‹ด๋‹นํ•œ๋‹ค๋ฉด,๊ทธ ์•ˆ์—์„œ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” Board๋Š” ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ์–ด๋–จ๊นŒ์š”? ํ˜„์žฌ๋Š” ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ์—์„œ ๊ณ„์† Board๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ฒŒ์ž„์ด ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ์ƒํƒœ๋ผ๋ฉด ํ•„๋“œ๋กœ ๋‘๋Š” ์ชฝ์ด ๊ฐ์ฒด์˜ ์—ญํ• ์„ ๋” ์ž์—ฐ์Šค๋Ÿฌ์›Œ ๋ณด์—ฌ์š”.


import java.util.List;

public interface MoveRule {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

์ง€๊ธˆ์˜ MoveRule์€ ๊ฐ ๊ธฐ๋ฌผ์˜ ์ด๋™ ๊ทœ์น™์„ ์ง์ ‘ ํŒ๋‹จํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ด๋™ ๋ฐฉํ–ฅ ๋ชฉ๋ก๋งŒ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‹ค์ œ ๊ฒฝ๋กœ ๊ณ„์‚ฐ๊ณผ ์žฅ์• ๋ฌผ ๊ฒ€์‚ฌ ์ด๋™ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํŒ๋‹จ์€ ๋Œ€๋ถ€๋ถ„ Board๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์–ด์š”. ๊ทธ๋ž˜์„œ Board์—์„œ isPo() ๊ฐ™์€ ํƒ€์ž… ๋ถ„๊ธฐ๊ฐ€ ๋‚˜์˜ค๊ณ  ์ด๋™ ๊ทœ์น™์ด MoveRule์ด๋‚˜ Piece์— ์ถฉ๋ถ„ํžˆ ๋จธ๋ฌผ์ง€ ๋ชปํ•˜๊ณ  Board ์ชฝ์— ๋งŽ์ด ๋ชจ์—ฌ ์žˆ๋Š” ๋“ฏํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ตฌ์กฐ๋ผ๋ฉด MoveRule์ด ์ง€๊ธˆ ์ •๋ง ์˜๋ฏธ ์žˆ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ•œ ๋ฒˆ ๊ณ ๋ฏผํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ๋งŒ์•ฝ ์ด๋™ ๊ทœ์น™์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด๋ผ๋ฉด, ๋‹จ์ˆœํžˆ ๋ฐฉํ–ฅ๋งŒ ๋„˜๊ฒจ์ฃผ๊ธฐ๋ณด๋‹ค ํ˜„์žฌ ๋ณด๋“œ ์ƒํƒœ์—์„œ ์–ด๋””๊นŒ์ง€ ์ด๋™ ๊ฐ€๋Šฅํ•œ์ง€๊นŒ์ง€ ์Šค์Šค๋กœ ํŒ๋‹จํ•˜๋Š” ์ชฝ์ด ๋” ์ž์—ฐ์Šค๋Ÿฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค. Piece๊ฐ€ ์ž์‹ ์˜ ์ด๋™ ๊ฐ€๋Šฅ ์œ„์น˜๋ฅผ ์ง์ ‘ ํŒ๋‹จํ•˜๋„๋ก ๋งŒ๋“ค์–ด๋ณด๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ผ ๊ฒƒ ๊ฐ™์€๋ฐ์š”. ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด Piece๊ฐ€ MoveRule์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฐ€ ์ด๋™ ๊ฐ€๋Šฅ ์œ„์น˜ ๊ณ„์‚ฐ์„ ์œ„์ž„ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด Board๋Š” ํŒ์˜ ์ƒํƒœ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์— ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Comment on lines +12 to +13
private final int x;
private final int y;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

x,y ๊ฐ€ ์ขŒํ‘œ๋ฅผ ์˜๋ฏธํ•˜๋Š”๊ฑด ์•Œ์ง€๋งŒ ๋” ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์€ ์—†์„๊นŒ์š”?
๋‹จ์ˆœ ์ˆ˜ํ•™ ์ขŒํ‘œ๋ณด๋‹ค row col๊ณผ ๊ฐ™์€ ์ด๋ฆ„๋„ ์žˆ๊ฒ ๋„ค์š”

@@ -0,0 +1,7 @@
package janggi.domain;

public enum Team {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ํŒ€ ๊ด€๋ จํ•ด์„œ ๋ฉ”์„œ๋“œ๋“ค์„ ์‘์ง‘ํ•ด๋ด…์‹œ๋‹ค. ๊ฐ™์€ ํŒ€ ํŒ๋‹จ ๋“ฑ

System.out.println();
}

private void printCell(Map<Position, Piece> board, List<Position> availablePositions, Position 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.

์šฐ์„  ์š”๊ตฌ์‚ฌํ•ญ์ด๋‹ˆ๋งŒํผ view์—ฌ๋„ else if/switch๋Š” ์ตœ๋Œ€ํ•œ ์ง€์–‘ํ•ด์ฃผ์„ธ์š”

@@ -0,0 +1,29 @@
package janggi.domain;

public enum Direction {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

up, down ๋“ฑ ๋ณด๋‹ค ๋” ์ข‹์€ ์˜ˆ์‹œ๊ฐ€ ์žˆ์–ด์š”. ๋‚˜์นจ๋ฐ˜์„ ํ™œ์šฉํ•ด๋ด…์‹œ๋‹ค~

this.board = initBoard;
}

public Map<Position, Piece> getBoard() {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

๋ฉ”์„œ๋“œ ์ˆœ์„œ๋ฅผ ์‹ ๊ฒฝ์จ๋ณด์•„์š”. ๋‹จ์ˆœ getter์˜ ์œ„์น˜๋ฅผ ๊ฐ€์žฅ ์ž˜๋ณด์ด๋Š” ์ตœ์ƒ๋‹จ์— ๋†“์•„์•ผ ํ• ๊นŒ์š”?
๋˜ํ•œ ๋ฐฉ์–ด์  ๋ณต์‚ฌ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ด…์‹œ๋‹ค~

import java.util.List;
import java.util.function.Supplier;

public class JanggiController {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

์ด์ „์— ๋‚จ๊ฒผ๋˜ ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ ์ฐธ๊ณ ์ฐจ ํ•œ๋ฒˆ ์ฝ์–ด๋ณด์‹œ๋ผ๊ณ  ๋งํฌ ๋‚จ๊ฒจ๋‘˜๊ฒŒ์š”~
woowacourse/java-blackjack#975 (comment)

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.

2 participants