[๐ ์ฌ์ดํด2 - ๋ฏธ์ (๊ธฐ๋ฌผ ํ์ฅ + DB ์ ์ฉ)] ์์ด์ ๋ฆฌ ๋ฏธ์ ์ ์ถํฉ๋๋ค.#345
[๐ ์ฌ์ดํด2 - ๋ฏธ์
(๊ธฐ๋ฌผ ํ์ฅ + DB ์ ์ฉ)] ์์ด์ ๋ฆฌ ๋ฏธ์
์ ์ถํฉ๋๋ค.#345yj9107v wants to merge 77 commits intowoowacourse:yj9107vfrom
Conversation
- DownwardSoldierMoveStrategy๋ฅผ RedSoldierMoveStrategy๋ก ๋ณ๊ฒฝ - UpwardSoldierMoveStrategy๋ฅผ GreendSoldierMoveStrategy๋ก ๋ณ๊ฒฝ
- ์๋ฌ ๋ฉ์์ง๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์์น์ ์์ ์ ์ธ - view ๋ฉ์์ง๋ view ํจํค์ง ๋ด์ message ํจํค์ง๋ก ๊ด๋ฆฌ
- horse -> elephant๋ก ์์
- routePositons -> routePositions ๋ณ๊ฒฝ
- ์ด/ํ๋๋ผ์ ๋ฐ๋ฅธ ๊ถ์ฑ ์์ญ ๊ตฌํ
- Position์ ์ฑ ์์ด ์ปค์ง๊น๋ด Palace ํด๋์ค๋ฅผ ๋ง๋ค์ด ๊ถ์ฑ ์์ญ ์ฌ๋ถ ํ์ธ
- ๋ชฉ์ ์ง๊ฐ ๊ถ์ฑ ์ธ๋ถ ์ ์์ธ ํ ์คํธ ์ถ๊ฐ - ๊ถ์ฑ ๋ด๋ถ์์์ ์ด๋ ํ ์คํธ๋ฅผ ์ํด ๋ฉ์๋๋ฅผ ๊ถ์ฑ ์์์ ์ด๋ํ๊ฒ ๋ณ๊ฒฝ
- GeneralMoveStrategy, GuardMoveStrategy ๋ ํด๋์ค isPalace() ๋ฉ์๋ ์ถ๊ฐ - isPalace() ๋ชฉ์ ์ง๊ฐ ๊ถ์ฑ ์ธ๋ถ์ผ ์ ์์ธ๋ฅผ ๋์ง - canMoveTo()์์ isPalace() ๋ฒ์ ๊ฒ์ฆ ํ ๋ชฉ์ ์ง ์ด๋ ๊ฐ๋ฅํ์ง๋ก ๋ณ๊ฒฝ
- ๊ถ์ฑ ์์ญ์ ๊ฐ ๋ชจ์๋ฆฌ์ธ ๊ฒฝ์ฐ ๊ถ์ฑ ์ค์์ผ๋ก ์ด๋ ๊ฐ๋ฅ ํ ์คํธ - ๊ถ์ฑ ์์ญ์ ์ค์์ธ ๊ฒฝ์ฐ ๊ฐ ๋ชจ์๋ฆฌ๋ก ์ด๋ ๊ฐ๋ฅ ํ ์คํธ
- reachablePositionInPalace() ๋ฉ์๋ ์ถ๊ฐ 1. ๊ถ์ฑ ์์ญ์ ๊ฐ ๋ชจ์๋ฆฌ์ธ ๊ฒฝ์ฐ ๊ถ์ฑ ์ค์์ผ๋ก ์ด๋ ์์น ๋ฐํ 2. ๊ถ์ฑ ์์ญ์ ์ค์์ธ ๊ฒฝ์ฐ ๊ฐ ๋ชจ์๋ฆฌ๋ก ์ด๋ ์์น๋ค ๋ฐํ 3. ๊ถ์ฑ ์์ญ์์ ๋๊ฐ ์ด๋ ๋ถ๊ฐ๋ฅ ์ ๋น ๋ฆฌ์คํธ๋ฅผ ๋ฐํ
- ๊ถ์ฑ์ ์ค์ ์์น์ธ ๊ฒฝ์ฐ ์ด๋ ๊ฐ๋ฅํ ์์น ์ถ๊ฐ - ํ ์คํธ๋ช ์์
- ๊ธฐ๋ณธ ์ํ์ข์ฐ ์ด๋์์ ๊ถ์ฑ ์์ญ์ ๋์ด๊ฐ๋ฉด ๋บ๋ค. - ๊ถ์ฑ ์์ญ์์ ๋ฐ๋ผ ๋๊ฐ ์ด๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๊ฐ ์ ์๋ ๋ชฉ์ ์ง ์ถ๊ฐ
- ๊ถ์ฑ ๋ชจ์๋ฆฌ์ธ ๊ฒฝ์ฐ ์ํ์ข์ฐ์์ ๊ถ์ฑ ์ธ๋ถ๋ ๋ชฉ์ ์ง์ ๊ฐ ์ ์๋ ํ ์คํธ - ํ ์คํธ๋ช ๋ณ๊ฒฝ
- ๊ถ์ฑ ๋ด๋ถ์ ๋ฐ๋ฅธ ์ด๋ ํ ์คํธ 1. ๊ถ์ฑ ๋ชจ์๋ฆฌ์ธ ๊ฒฝ์ฐ, ๊ถ์ฑ ์ค์ ์ด๋ ๊ฐ๋ฅ ํ ์คํธ 2. ๊ถ์ฑ ์ค์์ธ ๊ฒฝ์ฐ, ์กธ์ ์ด๋ ๋ฐฉํฅ์ ์ ๋๊ฐ ์ด๋ ๊ฐ๋ฅ ํ ์คํธ 3. ๊ถ์ฑ ์ค์์์ ๋ท ๋๊ฐ์ ์ ์ฃผ์ด๋ ํด๋น๋์ง ์์์ง ํ ์คํธ - GreenSoldierMoveStrategy ํด๋์ค๋ช ์คํ ์์
- ๊ถ์ฑ ๋ด๋ถ์ ๋ฐ๋ฅธ ์ด๋ ๊ฐ๋ฅํ ๋ชฉ์ ์ง ์ถ๊ฐ 1. ๊ถ์ฑ ๋ชจ์๋ฆฌ์ธ ๊ฒฝ์ฐ, ๊ถ์ฑ ์ค์ ์ด๋ ๊ฐ๋ฅ 2. ๊ถ์ฑ ์ค์์ธ ๊ฒฝ์ฐ, ์กธ์ ์ด๋ ๋ฐฉํฅ์ ์ ๋๊ฐ ์ด๋ ๊ฐ๋ฅ 3. ๊ถ์ฑ ์ค์์์ ๋ท ๋๊ฐ์ ์ ์ฃผ์ด๋ ํด๋น๋์ง ์์ - GreenSoldierMoveStrategy ํด๋์ค๋ช ์คํ ์์
- ๊ถ์ฑ ์์ญ์ ๋ชจ์๋ฆฌ์ธ ๊ฒฝ์ฐ, ๋๊ฐ์ด๋์ด ๊ฐ๋ฅํด์ง๋ค. ์ฐจ์ ์ด๋ ๊ท์น์ ๋ฐ๋ผ ๋ฐ๋ํธ ๋๊ฐ์ด๋๊น์ง ์ด๋์ด ๊ฐ๋ฅํ๋ค.
- ๊ถ์ฑ ์์ญ์ ๋ชจ์๋ฆฌ์ธ ๊ฒฝ์ฐ, ๋๊ฐ์ด๋์ด ๊ฐ๋ฅํด์ง๋ค. ์ฐจ์ ์ด๋ ๊ท์น์ ๋ฐ๋ผ ๋ฐ๋ํธ ๋๊ฐ์ด๋๊น์ง ์ด๋์ด ๊ฐ๋ฅํ๋ค.
pkeugine
left a comment
There was a problem hiding this comment.
์๋ ํ์ธ์ ์์ด์ ๋ฆฌ, PK์ ๋๋ค.
์ด์ ๋ฐ๊ฐ์ ์ด์~
์งง์ ์๊ฐ์ด์์ง๋ง ๋ง๋์ ์ฆ๊ฑฐ์ ๊ณ , ์ข์ ์๊ฐ ๋ณด๋ธ ๋ฏ ํ๋ค์.
์ ๋ฒ ์ฌ์ดํด์์ ๋ฆฌํฉํฐ๋ง์ ์ด์ ์ ๋ง์ท์ฃ ,
๊ทธ ํ๋ฆ์ ์ ์ด์ด๊ฐ ์ฃผ์
์ PR์ด ์ข์์.
์ง๊ธ ๋น์ฅ ๋จธ์งํด๋ ๊ด์ฐฎ์ ๋ฏ ํ๋ค์.
๊ทธ๋์ ์ด๋ฒ ๋ฆฌ๋ทฐ ํ ๋ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
์ฌํ ๋ด์ฉ์ ๊ฐ๋ ๋ด์์ด์.
์ฐ๋ฆฌ๊ฐ ํํ ์๊ธฐํ๋ ๊ฐ์ฒด์งํฅ์ด๋ ์ฑ
์ ์ด๋ฐ๊ฑฐ ๋ง๊ณ ...
์์ด์ ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ค์ ๋ก ๋ฐ์ํ ์ ์๋ ๊ฒ๋ค์ ๊ธฐ๋ฐ์ผ๋ก ์๊ฐ๊ฑฐ๋ฆฌ ๋ฐ ์ ์์ ๋จ๊ฒผ์ต๋๋ค.
๋ด์ฉ์ด ์ข ์ด๋ ค์ธ ์๋ ์์ต๋๋ค. ํ์ง๋ง ๊ฝค ์ฌ๋ฐ์๊ฑฐ์์.
ํ๋์ฉ ์ ์๊ฐํด๋ณด๊ณ , ์์ด์ ๋ฆฌ๋ง์ ๋์์ (๋ฐ์ || ๋ฐ๋ฐ) ๊ธฐ๋ํ ๊ฒ์.
๋ฆฌ๋ทฐ ๋ค ํ์ธํ๋ค๊ณ ํ๋จํ๋ฉด ๋ฐ๋ก ๋จธ์งํ๊ฒ ์ต๋๋ค.
์ผ๋ง ๋จ์ง ์์ ๋ฏธ์
, ๋๊น์ง ํ์ดํ
์
๋๋ค.
๋ฐฉํ ์ ๊น์ง ๊ณ์ ํดํผํดํนํ์ธ์!!! ๐ช ๐ช ๐ช
| import java.util.List; | ||
| import java.util.stream.Stream; | ||
|
|
||
| public class GeneralMoveStrategy extends MoveStrategy { |
There was a problem hiding this comment.
์ฌ์ดํด 1 ๋๋ถํฐ ๋ณด์ธ ํ์์ธ๋ฐ, GeneralMoveStrategy ์ GuardMoveStrategy ๊ตฌํ์ด ์์ ์ผ์นํฉ๋๋ค.
๋น์๋ ๊ถ์ฑ ๊ตฌํ์ด ๋จ์์๋ ๋๋ผ, ๋ฏธ๋ฆฌ ์ค๋ณต์ ์์ ์ง ์๋๊ฒ ์ข๋ค๊ณ ์๊ฐํ์ด์.
์ค์ ๋ก ์ค๋ณต์ธ ๋ก์ง์ธ์ง, ๊ทธ๋ ๊ฒ ๋ณด์ด๊ธฐ๋ง ํ๋๊ฑด์ง ๊ฐ์ด ์๋ฒฝํ ์กํ์ง ์์ผ๋๊น์.
๊ทธ๋ฐ๋ฐ ์ง๊ธ์ ๋ชจ๋ ๊ธฐ๋ฅ ๊ตฌํ์ด ์๋ฃ๋์์ผ๋ ์์ฌํ๊ณ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ํด๋ณผ ์ ์์ ๋ฏ ํฉ๋๋ค.
์ด๋ฌ๋ฉด ์๋์ ์ฝ๋ฉํธ๋ก ์ธํ ๋ณ๊ฒฝ๋ ํ ๊ณณ๋ง ์์ํ
๊ณ ์.
ํ์คํ ์ค๋ณต์ ์ธ์งํ๊ณ ์์ ๋ณด๋ ๊ฒฝํ,
๊ทธ๋ฆฌ๊ณ ์ค๋ณต ์ ๊ฑฐ๋ก ์ธํ ๋ณ๊ฒฝ ๋ฒ์ ์ต์ํ๋ฅผ ๊ฒฝํํด๋ด
์๋ค. :)
| @Override | ||
| public boolean canMoveTo(Position currentPosition, Position destination) { | ||
| validatePalaceArea(destination); | ||
| return createDestinations(currentPosition).contains(destination); | ||
| } |
There was a problem hiding this comment.
canMoveTo ๊ตฌํ์ ๋ชจ๋ MoveStrategy์ ๊ฑธ์ณ ์ ๋ง ์ ๋ง๋ค์ด์ฃผ์
จ์ด์ ๐
๊ทธ๋ฐ๋ฐ GeneralMoveStrategy ์ชฝ์์๋ ๊ฒ์ฆ์ ํต๊ณผํ์ง ๋ชปํ๋ฉด return false ๊ฐ ์๋ ์์ธ๋ฅผ ๋์ ธ์.
์ด์ boolean์ ์ฌ์ฉํ๋๊ฑฐ, false ๋ฅผ ๋ฐํํ์ฌ ํธ์ถํ๋ ์ชฝ์์ false ์ผ ๋์ ์์
์ ์ด์ด์ ์ฒ๋ฆฌํ๋๋ก ํด๋ณด๋ฉด ์ด๋จ๊น์?
|
|
||
| public void initialize() { | ||
| try (Connection connection = dataSource.getConnection()) { | ||
| String sql = Files.readString(Path.of("src/main/resources/schema.sql")); |
There was a problem hiding this comment.
์ฌ๊ธฐ Path.of("src/main/resources/schema.sql") ์ ์ด๋ค ๊ฒฝ๋ก๋ฅผ ๊ธฐ์ค์ผ๋ก ํด์๋ ๊น์?
ํ ๋ฒ ํ์ธ ์ผ์ ํ๋ก์ ํธ ๋ฃจํธ๊ฐ ์๋ ๊ณณ์์ ์คํํด๋ดค๋๋ฐ, NoSuchFileException ์ด ๋ฐ์ํฉ๋๋ค.
์ด์ ๋ Path.of(...) ๊ฐ ์์
๋๋ ํ ๋ฆฌ ๊ธฐ์ค ์๋ ๊ฒฝ๋ก์ฌ์์์.
์ง๊ธ์ ./gradlew run ์ด๋ IDE ๋ก ํ๋ก์ ํธ ๋ฃจํธ์์ ์คํํ๋๊น ์ฐ์ฐํ ๋ง๋ ์ํ๊ณ ์.
๊ทธ๋ฐ๋ฐ ๋์ค์ JAR๋ก ๋น๋ํด์ ๋ฐฐํฌํ๋ฉด ์๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋๋ค. (JAR ๊ฐ ๋ฌด์์ธ์ง ํ ๋ฒ ํ์ตํด๋ณด์ฃ )
src/main/resources/ ๋ ์์ค ๋๋ ํ ๋ฆฌ๋ผ์, ๋น๋ ๊ฒฐ๊ณผ๋ฌผ(JAR) ์๋ ๊ทธ ํด๋ ์์ฒด๊ฐ ์กด์ฌํ์ง ์์์.
๋น๋ ์์ ์ src/main/resources/ ์ ํ์ผ๋ค์ด ์ด๋๋ก ์ด๋ํ๋์ง,
๊ทธ๋ฆฌ๊ณ ๋ฐํ์์ ๊ทธ ํ์ผ์ ์ด๋ป๊ฒ ์ฝ์ด์ผ ํ๋์ง ํ๋ฒ ์ฐพ์๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
๊ทธ๋ฆฌ๊ณ ์์ ํด๋ณด์ฃ .
ํ๋ก์ ํธ ๋ค๋ฅธ ๋ถ๋ถ๋ค๋ ํ ๋ฒ ํ์ธํด์ฃผ์ธ์.
| private boolean isForwardDiagonalPosition(Position currentPosition, Position destination) { | ||
| return List.of( | ||
| currentPosition.upCrossLeft(), | ||
| currentPosition.upCrossRight()) | ||
| .contains(destination); | ||
| } |
There was a problem hiding this comment.
์ฌ์ดํด 1์์๋ up, down ๊ด๋ จํ์ฌ ๋น์ทํ ์๊ธฐ๋ฅผ ๋๋ด๋ ๊ฒ ๊ฐ์๋ฐ,
์์ด์ ๋ฆฌ์ ํ๋ก์ ํธ์์ ์ฝ๋ ๋ค์ด๋ฐ ๋ฐฉ์์ ๋ดค์ ๋ ์ด ๋ฉ์๋๋ ์ด๋ฆ์ด ํท๊ฐ๋ ค์.
ํ ๋ฒ ํ์ธํด๋ณด์๊ณ ์์ด์ ๋ฆฌ๋ ๋์ํ๋ค๋ฉด ์ ์ ํ๊ฒ ๋ฐ๊ฟ๋ณด์ฃ .
| private void playGame() { | ||
| OutputView.printBoard(janggiGame.allFactors()); | ||
| OutputView.printCurrentPlayerTurn(janggiGame.gameStatus()); | ||
| OutputView.printCurrentPlayerTurn(janggiGame.gameStatus().description()); | ||
| execute(this::playerPhase); | ||
| } |
There was a problem hiding this comment.
ํ๋ ์ด์ด๊ฐ ์๋ ์ฅ๊ตฐ์ ์ก๋ ์๊ฐ, ๋ณด๋๋ ์ด๋ค ํ๋ฆ์ผ๋ก ์ถ๋ ฅ๋ ๊น์?
ํ๋ฒ playGame() ์ดํ์ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๋ณด์ธ์.
playGame() ์ ๋จผ์ "์ด๋ ์ " ๋ณด๋๋ฅผ ์ถ๋ ฅํ๊ณ ์
๋ ฅ์ ๋ฐ์ ๊ธฐ๋ฌผ์ ์ด๋ํด์.
๊ทธ๋ฌ๋ ์ฅ๊ตฐ์ด ์ฌ๋ผ์ง "์ด๋ ํ" ๋ณด๋๋ ๋ณด์ด์ง ์์์.
๊ฒฐ๊ตญ ํ๋ ์ด์ด๋ ์๊ธฐ๊ฐ ์ฅ๊ตฐ์ ์ก์ ์๊ฐ์ ๋ณด๋๋ฅผ ํ ๋ฒ๋ ๋ชป ๋ณด๊ณ (์ ์ผ ๊ธฐ๋ถ ์ข์ ์๊ฐ์ธ๋ฐโฆ!),
๋ฐ๋ก ์ ์๋ "X๋๋ผ ์น" ๋ฉ์์ง๋ง ๋ณด๊ฒ ๋ผ์.
์ด๊ฒ ์ ์๊ธฐ๋๋ฉด, ์ง๊ธ ๊ตฌ์กฐ์์๋ "๋ณด๋๋ฅผ ๊ทธ๋ฆฌ๋ ์์ " ์ด "์
๋ ฅ์ ๋ฐ๋ ์์ " ์ ๋ฌถ์ฌ ์์ต๋๋ค.
playGame() ์์ ๋ ๋ + ์
๋ ฅ + ์ด๋ ์ด ํ ๋ฉ์ด๋ฆฌ์ธ๊ฑฐ์ฃ .
๊ทธ๋์ ๋ฃจํ๊ฐ ์
๋ ฅ ์์ด ๋น ์ ธ๋๊ฐ๋ ์๊ฐ ๋ง์ง๋ง ๋ ๋๊ฐ ๋๋ฝ๋๋ ๊ฑฐ์์.
์ด ์ธ ๊ฐ์ง ์ฑ
์์ ์ด๋ป๊ฒ ๋ถ๋ฆฌํ ์ ์์์ง ํ๋ฒ ๊ณ ๋ฏผํด๋ณด์ธ์.
๋ถ๋ฆฌํด๋๋ฉด ๊ฒ์ ์ข
๋ฃ ์์ ๋ฟ๋ง ์๋๋ผ, ๋์ค์ ๋ณด๋๋ง ๋ค์ ๊ทธ๋ฆฌ๊ณ ์ถ์ ๋
(์: ๊ฒ์ ์ฌ๊ฐ, ๋ณต๊ธฐ, undo ๊ธฐ๋ฅ ๋ฑ) ๋ ์ ์ฐํด์ง๋๋ค.
| @@ -1,2 +1,2 @@ | |||
| # java-janggi | |||
There was a problem hiding this comment.
๋ฆฌ๋ทฐํ๋ค๊ฐ HorseMoveRule ์ List ํด๋์ค ๊ฒฝ๋ก๊ฐ ๋ค ๋ค์ด๊ฐ ์๋ ๊ตฌํ์ ์ฐพ์์ด์.
์ด๋ฒ์ ๋ณ๊ฒฝ๋ ์ฌํญ์ ์๋์ง๋ง ์์ ํด์ค์๋ค!
| public Map<Position, Piece> nonePieces() { | ||
| return piecesByTeam(Piece::isNoneTeam); | ||
| } |
There was a problem hiding this comment.
ํ ์คํธ์์๋ง ์ฌ์ฉ๋๋ ๋ฉ์๋์ ๋๋ค.
| import persistence.entity.GameState; | ||
| import persistence.entity.PieceState; | ||
|
|
||
| public final class GameStateMapper { |
There was a problem hiding this comment.
์์ด์ ๋ฆฌ๊ฐ class ์ final ์ ๋ถ์ด๋ ๊ธฐ์ค์ด ๋ญ์ง ๊ถ๊ธํฉ๋๋ค.
์๋ชป๋๋ค๋๊ฑด ์๋๊ณ , ์ ๋ง ๊ถ๊ธํด์ ๋จ๊ธฐ๋ ์ง๋ฌธ์
๋๋ค.
| public interface GameStateRepository { | ||
|
|
||
| void save(GameState gameState); | ||
|
|
||
| GameState load(); | ||
| } |
There was a problem hiding this comment.
Q. ์ค์ ๋ก JDBC๋ฅผ ์ฒ์ ์ฐ๊ฒฐํ๊ณ ๊ตฌํํ๋ค ๋ณด๋ ์ด๋ค ๋ถ๋ถ์ ํนํ ์กฐ์ฌํด์ผ ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. ์ด ๋ฐฉํฅ์ด ์ ์ ํ๋์ง ๊ถ๊ธํฉ๋๋ค
์ ๋ง๋ค์ด์ฃผ์
จ์ต๋๋ค.
์ผ๋ถ ์์์ ๋ํด ์ฝ๋ฉํธ ๋จ๊ฒผ์ผ๋, ๊ทธ๊ฒ๋ค ์ค์ ์ผ๋ก ์ ๊ณ ๋ฏผํด์ฃผ์๊ณ ํ์ตํ ํ ๋ฆฌ๋ทฐ ๋ฐ์ํด๋ณด๋ฉด ์๋ฒฝํ ๊ฒ ๊ฐ์์.
๋ฆฌ๋ทฐ๊ฐ ์๋ ๋ถ๋ถ์ ์ ๊ฐ ์๊ฐํ์ ๋ ์ถฉ๋ถํ ๊ด์ฐฎ์ ๊ตฌํ์ด๋ผ๊ณ ์๊ฐํ๋ค๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
์ ์คํ์ผ์ ํ์
ํ์
จ์์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ ๋ ๊น๋ํ๊ณ ๋๋ฌด ์ค๋ฒ์์ง๋์ด๋ง ๋์ง ์์ ๊ฒฐ๊ณผ๋ฌผ์ ์ ํธํฉ๋๋ค.
๊ทธ๋ฐ ์๋ฏธ์์ ์ง๊ธ ์์ด์ ๋ฆฌ PR์ ์ ๋ง ์ข์์.
์ด์ ์ด๋ฒ ์ฌ์ดํด์์ ํ์ตํ DB ์ ๊ทผ ๋ฐฉ์์ ๋ฐํ์ผ๋ก ํ
์ด๋ธ์ ์ฌ๋ฌ row๋ฅผ ๋ฃ๊ณ ๊ด๋ฆฌํด๋ณด๊ณ ,
table join ๊ณผ ๊ฐ์ฒด๋ค ๊ฐ์ ์ํธ์์ฉ์ ๊ฒฝํํด๋ณด๋ฉด ์ข์ ๋ฏ ํฉ๋๋ค.
๋ค์ redo(?) ๋ฏธ์
์ผ๋ก ์ฌ๋ฌ ์ฒด์ค ๊ฒ์์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํด๋ณด๋ ๊ฒ์ ์ถ์ฒ๋๋ ค์.
๋๋ฌด '์ํ ๋ฐฉ๋ฒ์ผ๊น', '์๋ชป๋ ๋ฐฉ๋ฒ์ผ๊น' ์ ์ด์ฒจ์ ๋ง์ถ์ง๋ ๋ง์๊ตฌ์, ์ผ๋จ ๊ทธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉด
๋ฆฌ๋ทฐ์ด๊ฐ '์ ์ด๊ฑด ์ ๋ง ์๋๋ฐ' ํ๋ ๋ถ๋ถ์ ์ก์์ค๊ฒ๋๋ค.
| @@ -1,2 +1,2 @@ | |||
| # java-janggi | |||
|
|
|||
There was a problem hiding this comment.
์ ๋ฒ ์ฌ์ดํด ๋ ์ปค๋ฐ๊ณผ git ๊ด๋ฆฌ์ ๋ํ ์๊ธฐ๋ฅผ ํ์์ฃ .
์ ๊ฒฝ ์จ์ฃผ์ ๋ชจ์ต์ด ๋ณด์ฌ์ ์ข์ต๋๋ค ๐
์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์ฌ๊ธฐ์ ๋ ๋์๊ฐ ์ปค๋ฐ ์๋ฅผ ๋ ์ค์ผ ์ ์๋ค๊ณ ๋ด์.
์ด๋ฒ ์ฌ์ดํด์ 20 ~ 25๊ฐ ์ ๋๊ฐ ์ ๋นํ ๋ฏ ํ๊ณ ์.
์ปค๋ฐ์ ์๊ฒ ๋๋์๋ ๋ง์ ๋ถ๋ช
๊ทธ ์ฅ์ ์ด ์์ด์์ผ ๊ฒ๋๋ค.
๊ทธ ์ฅ์ ์ ๊ฐ์ฅ ์ ์ด๋ฆด ์ ์๋ ์ปค๋ฐ ์ฌ์ด์ฆ๊ฐ ์ด๋์ ๋์ผ์ง ๊ณ์ํด์ ๊ณ ๋ฏผํด๋ณด์
จ์ผ๋ฉด ํด์.
์ปค๋ฐ์ด ๋๋ฌด ์์ ๋จ์๋ผ๋ฉด
๋กค๋ฐฑ์ ํ ๋, ๋ฐฐํฌ๋ฅผ ์ํด cherry pick ์ ํ ๋, ํ๋ก์ ํธ์ ํ๋ฆ์ ํ์
ํ ๋
์ด์ฉ ์ ์์ด ์ฌ๋ฌ ์ปค๋ฐ์ ํจ๊ป ๋ณด๊ณ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
๊ทธ๋ด ๋ ์คํ๋ ค ๋๋ฌด ์์ ๋จ์์ ์ปค๋ฐ์ ๋ถํธํ ์ ์์ด์. ์ค์๋ฅผ ๋ฐ์์ํฌ ๊ฐ๋ฅ์ฑ๋ ๊ต์ฅํ ๋์์ง๊ณ ์.
ํ์ง๋ง ์ฌ์ดํด 1 ๋๋ณด๋ค ๋ถ๋ช
ํ ์ข์์ก์ด์.
๊ทธ๋ฌ๋ ์กฐ๊ธ์ฉ ์กฐ๊ธ์ฉ ์์ด์ ๋ฆฌ๋ง์ git commit ๋ถ๋ฆฌ ๊ฐ๊ฐ์ ์ตํ๋ด
์๋ค :)
|
Q. ์ด๋ฐ ์ํฉ์์ ๋ ๋์ ์ค๊ณ๋ฅผ ํ๊ธฐ ์ํด์๋ ์ด๋ค ๋ฐฉํฅ์ผ๋ก ๊ณ ๋ฏผํด ๋ณด๋ฉด ์ข์์ง ๊ถ๊ธํฉ๋๋ค. ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ด ํ๋ ๋๋ฝ๋์ด ์ถ๊ฐํฉ๋๋ค : ์ผ๋จ ํด๋น ์ง๋ฌธ์์ ๋ค๋ฃจ๋ ๋ช๊ฐ์ง ๋ด์ฉ์ ์ ์ฝ๋ฉํธ๋ค์ ์์ต๋๋ค. ์คํ๋ ค ์ ๋ ์ฌํ๊น์ง ๋์จ Java ๋ฒ์ ๋ค์ ์ฐจ์ด, ์์ด์ ๋ฆฌ๊ฐ ์ฐํ
์ฝ์์ Java ๋ง์คํฐ๊ฐ ๋๋๊ฑฐ์ฃ . ์์ฆ AI ๊ฐ ์๋ ๋ฐ์ด๋๋ ๊ทธ๊ฑธ ํ์ฉํด์ ๊ณต๋ถํ๊ธฐ๋ ๋๋ฌด ์ข๊ณ ์. |
์ฒดํฌ ๋ฆฌ์คํธ
test๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์?์ด๋ค ๋ถ๋ถ์ ์ง์คํ์ฌ ๋ฆฌ๋ทฐํด์ผ ํ ๊น์?
1๏ธโฃ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๋ ์ด๋ค ์ ์ ์กฐ์ฌํด์ผ ํ ์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ํด ์ด๋ค ๊ณต๋ถ๊ฐ ํ์ํ์ง ๊ถ๊ธํฉ๋๋ค
๊ถ์ฑ ์์ญ์ด ์ถ๊ฐ๋๋ฉด์, ๊ถ์ฑ ์ฌ๋ถ๋ฅผ Position์์ ํ๋จํ ์ง ์๋๋ฉด Palace ํด๋์ค๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด ๊ด๋ฆฌํ ์ง ๊ณ ๋ฏผ์ด ์ปธ์ต๋๋ค.
๊ณ ๋ฏผ ๋์ Position์ด ๊ถ์ฑ ์์ญ๊น์ง ํจ๊ป ๋ค๋ฃจ๋ฉด ์ฑ ์์ด ๋ฌด๊ฑฐ์์ง๋ค๊ณ ์๊ฐํด, Palace ํด๋์ค๋ฅผ ๋ง๋ค์ด ๊ถ์ฑ ์์ญ์ ๊ด๋ฆฌํ๋๋ก ๊ตฌํํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ๊ธฐ๋ฌผ์ ์ด๋ ์ ๋ต์์ ๊ถ์ฑ ์ ๋ณด๋ฅผ ํ์ฉํ ์ ์๋๋ก MoveStrategy ์ถ์ ํด๋์ค์ Palace๋ฅผ ํ๋๋ก ๋์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ๊ฐ ์ด๋ ์ ๋ต์ด Palace๋ฅผ ํตํด ํ์ฌ ์์น๋ ๋ชฉ์ ์ง๊ฐ ๊ถ์ฑ ์์ญ์ธ์ง ํ๋จํ๊ณ ์ด๋ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋๋ก ๊ตฌํํ์ต๋๋ค.
๋ค๋ง ๊ตฌํ์ ํ๋ฉด์, ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ๋ ๋์ ์ค๊ณ๋ฅผ ํ๋ ค๋ฉด ์ด๋ค ๊ธฐ์ค์ผ๋ก ํ๋จํด์ผ ํ๋์ง ๊ฐ์ด ์ ์กํ์ง ์์์ต๋๋ค.
์ค์ค๋ก ๊ณ ๋ฏผํด ๋ณด๊ธฐ๋ ํ์ง๋ง, ์ข์ ์ค๊ณ์ ๊ธฐ๋ฐ์ด ๋๋ ์ง์์ด ๋ถ์กฑํ๋ค๊ณ ๋๊ปด ๊ฒฐ๊ตญ์ ๊ตฌํ ๊ฐ๋ฅํ ๋ฐฉํฅ์ผ๋ก ์ฐ์ ์์ฑํ๊ฒ ๋์์ต๋๋ค.
์ด๋ฐ ์ํฉ์์ ๋ ๋์ ์ค๊ณ๋ฅผ ํ๊ธฐ ์ํด์๋ ์ด๋ค ๋ฐฉํฅ์ผ๋ก ๊ณ ๋ฏผํด ๋ณด๋ฉด ์ข์์ง ๊ถ๊ธํฉ๋๋ค.
๋ํ ์ ์ฝ๋๋ฅผ ๋ณด์ จ์ ๋, ์ ๊ฐ ํนํ ๋ถ์กฑํ๊ฒ ๋๋ผ๊ณ ๊ณต๋ถํด ๋ณด๋ฉด ์ข์ ๊ฐ๋ ์ด๋ ์ฃผ์ ๊ฐ ์๋ค๋ฉด ์กฐ์ธ ๋ถํ๋๋ฆฝ๋๋ค.
2๏ธโฃ JDBC ์ฐ๊ฒฐ์ ๊ตฌํํ ๋์ ๋ฐฉํฅ์ฑ๊ณผ, ํนํ ์ง์ํด์ผ ํ ๋ถ๋ถ์ด ๊ถ๊ธํฉ๋๋ค
์ด๋ฒ ์๊ตฌ์ฌํญ์์ DB ์ฐ๊ฒฐ์ด ์ถ๊ฐ๋์๋๋ฐ, ๊ด๋ จ ์ง์๊ณผ ๊ฒฝํ์ด ๋ถ์กฑํ๋ค ๋ณด๋ ํ์ต๊ณผ ๊ตฌํ์ ๋ณํํ๋ฉด์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ์ต๋๋ค.
๊ทธ๋์ ๋จผ์ ํฐ ๋ฐฉํฅ์ ์๋์ ๊ฐ์ด ์ก๊ณ ๊ตฌํ์ ์งํํ์ต๋๋ค.
์์ ๊ฐ์ ์์๋ก ๊ตฌํ์ ์์ ๊ฐ๋ฉฐ ์งํํ๋๋ฐ, ์ด ๋ฐฉํฅ์ด ์ ์ ํ๋์ง, ํน์ ๋ถ์กฑํ๊ฑฐ๋ ์๋ชป๋ ๋ถ๋ถ์ด ์์๋์ง ๊ถ๊ธํฉ๋๋ค.
๋ ํ๋๋, DB ์ฐ๊ฒฐ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ โ๋ฌด์์ด ์ข์ง ์์ ์ฝ๋์ธ์งโ, โ๋ฌด์์ ์ง์ํด์ผ ํ๋์งโ๋ฅผ ๋ช ํํ๊ฒ ํ๋จํ์ง ๋ชปํ ์ฑ ์๊ตฌ์ฌํญ์ ๋ง์กฑ์ํค๋ ๋ฐ๋ง ์ง์คํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฉ์ธ์ด ์ ์ฅ ๋ฐฉ์์ ์์ง ์์์ผ ํ๋ค๋ ์ ์ ์์ํ์ง๋ง, ์ค์ ๋ก JDBC๋ฅผ ์ฒ์ ์ฐ๊ฒฐํ๊ณ ๊ตฌํํ๋ค ๋ณด๋ ์ด๋ค ๋ถ๋ถ์ ํนํ ์กฐ์ฌํด์ผ ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
DB ์ฐ๊ฒฐ์ ๊ตฌํํ ๋ ์ ๊ฐ ํนํ ์กฐ์ฌํด์ ๋ด์ผ ํ ๋ถ๋ถ, ๊ทธ๋ฆฌ๊ณ ์ง์ํด์ผ ํ ์ค๊ณ๋ ์ฝ๋ ๋ฐฉํฅ์ด ์๋ค๋ฉด ์กฐ์ธ ๋ถํ๋๋ฆฝ๋๋ค.