์ฐ๋ฆฌ ํ์ฌ๋ ๋ ํฐ์นด๋ฅผ ์ด์ํ๊ณ ์๋ค.
ํ์ฌ ๋ณด์ ํ๊ณ ์๋ ์ฐจ๋์ Sonata 2๋, Avante 1๋, K5 2๋๋ก ์ด 5๋์ ์ฐจ๋์ ๋ณด์ ํ๊ณ ์๋ค.
๊ณ ๊ฐ์ด ์ธํฐ๋ท์ผ๋ก๋ถํฐ ์์ฝํ ๋ ์ฌํํ ๋ชฉ์ ์ง์ ๋๋ต์ ์ธ ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ ฅ ๋ฐ๋๋ค.
์ด ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ํ์ฉํด ์ฐจ๋ ๋ณ๋ก ํ์ํ ์ฐ๋ฃ๋ฅผ ์ฃผ์ ํ๋ค. ์ฐจ๋ ๋ณ๋ก ์ฃผ์ ํด์ผ ํ ์ฐ๋ฃ๋์ ํ์ธํ ์ ์๋ ๋ณด๊ณ ์๋ฅผ ์์ฑํด์ผ ํ๋ค.
* Sonata : 10km/๋ฆฌํฐ
* Avante : 15km/๋ฆฌํฐ
* K5 : 13km/๋ฆฌํฐ
- ์์๊ณผ ์ถ์ ๋ฉ์๋๋ฅผ ํ์ฉํ๋ค.
- ์ ์๊ตฌ์ฌํญ์
if/else์ ์ ์ฐ์ง ์๊ณ ๊ตฌํํด์ผ ํ๋ค.
-
Carํด๋์ค ์ถ์ํ (Car)- ์ฃผ์
ํด์ผํ ์ฐ๋ฃ๋ ๊ณ์ฐ (
Car.getChargeQuantity())
- ์ฃผ์
ํด์ผํ ์ฐ๋ฃ๋ ๊ณ์ฐ (
-
ํ์ ํด๋์ค ๊ตฌํ
-
Sonataํด๋์ค ๊ตฌํ (Sonata)- ๋ฆฌํฐ๋น ์ด๋ ๊ฑฐ๋ฆฌ ๊ณ์ฐ (
Sonata.getDistancePerLiter()) - ์ฌํํ๋ ค๋ ๊ฑฐ๋ฆฌ ๋ฐํ (
Sonata.getTripDistance()) - ์ฐจ์ข
์ ์ด๋ฆ ๋ฐํ (
Sonata.getName())
- ๋ฆฌํฐ๋น ์ด๋ ๊ฑฐ๋ฆฌ ๊ณ์ฐ (
-
Avanteํด๋์ค ๊ตฌํ (Avante)- ๋ฆฌํฐ๋น ์ด๋ ๊ฑฐ๋ฆฌ ๊ณ์ฐ (
Avante.getDistancePerLiter()) - ์ฌํํ๋ ค๋ ๊ฑฐ๋ฆฌ ๋ฐํ (
Avante.getTripDistance()) - ์ฐจ์ข
์ ์ด๋ฆ ๋ฐํ (
Avante.getName())
- ๋ฆฌํฐ๋น ์ด๋ ๊ฑฐ๋ฆฌ ๊ณ์ฐ (
-
K5ํด๋์ค ๊ตฌํ (K5)- ๋ฆฌํฐ๋น ์ด๋ ๊ฑฐ๋ฆฌ ๊ณ์ฐ (
K5.getDistancePerLiter()) - ์ฌํํ๋ ค๋ ๊ฑฐ๋ฆฌ ๋ฐํ (
K5.getTripDistance()) - ์ฐจ์ข
์ ์ด๋ฆ ๋ฐํ (
K5.getName())
- ๋ฆฌํฐ๋น ์ด๋ ๊ฑฐ๋ฆฌ ๊ณ์ฐ (
-
๋ธ๋์ญ ๊ฒ์์ ๋ณํํ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ค. ๋ธ๋์ญ ๊ฒ์์ ๋๋ฌ์ ํ๋ ์ด์ด ์ค ์นด๋์ ํฉ์ด 21 ๋๋ 21์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ซ์๋ฅผ ๊ฐ์ง๋ ์ชฝ์ด ์ด๊ธฐ๋ ๊ฒ์์ด๋ค.
- ์นด๋์ ์ซ์ ๊ณ์ฐ์ ์นด๋ ์ซ์๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ๋ฉฐ, ์์ธ๋ก Ace๋ 1 ๋๋ 11๋ก ๊ณ์ฐํ ์ ์์ผ๋ฉฐ, King, Queen, Jack์ ๊ฐ๊ฐ 10์ผ๋ก ๊ณ์ฐํ๋ค.
- ๊ฒ์์ ์์ํ๋ฉด ํ๋ ์ด์ด๋ ๋ ์ฅ์ ์นด๋๋ฅผ ์ง๊ธ ๋ฐ์ผ๋ฉฐ, ๋ ์ฅ์ ์นด๋ ์ซ์๋ฅผ ํฉ์ณ 21์ ์ด๊ณผํ์ง ์์ผ๋ฉด์ 21์ ๊ฐ๊น๊ฒ ๋ง๋ค๋ฉด ์ด๊ธด๋ค. 21์ ๋์ง ์์ ๊ฒฝ์ฐ ์ํ๋ค๋ฉด ์ผ๋ง๋ ์ง ์นด๋๋ฅผ ๊ณ์ ๋ฝ์ ์ ์๋ค.
- ๋๋ฌ๋ ์ฒ์์ ๋ฐ์ 2์ฅ์ ํฉ๊ณ๊ฐ 16์ดํ์ด๋ฉด ๋ฐ๋์ 1์ฅ์ ์นด๋๋ฅผ ์ถ๊ฐ๋ก ๋ฐ์์ผ ํ๊ณ , 17์ ์ด์์ด๋ฉด ์ถ๊ฐ๋ก ๋ฐ์ ์ ์๋ค.
- ๊ฒ์์ ์๋ฃํ ํ ๊ฐ ํ๋ ์ด์ด๋ณ๋ก ์นํจ๋ฅผ ์ถ๋ ฅํ๋ค.
- ๋ชจ๋ ์ํฐํฐ๋ฅผ ์๊ฒ ์ ์งํ๋ค.
- 3๊ฐ ์ด์์ ์ธ์คํด์ค ๋ณ์๋ฅผ ๊ฐ์ง ํด๋์ค๋ฅผ ์ฐ์ง ์๋๋ค.
- ๋๋ฌ์ ํ๋ ์ด์ด์์ ๋ฐ์ํ๋ ์ค๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐํด์ผ ํ๋ค.
- ์ฌ๋ ์ด๋ฆ ์
๋ ฅ๋ฐ๊ธฐ(
InputView.getPlayerNames) - ์นด๋๋ ๋ฌธ์๊ฐ(
Suit)๊ณผ ์ซ์๊ฐ(Denomination)์ ๊ฐ์ง๋ค (Card)- ๋ฌธ์๊ฐ(
Suit)๊ณผ ์ซ์๊ฐ(Denomination)์enum์ผ๋ก ๊ตฌํํ๋ค
- ๋ฌธ์๊ฐ(
- ์นด๋๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง ์ผ๊ธ ์ปฌ๋ ์
Deck ๊ตฌํ
- ์นด๋๋ฅผ ์์ฑํ๋ค (
Deck.setupCard()) - ์นด๋๋ฅผ ์๋๋ค (
Deck.shuffle()) - ์นด๋ ํ ์ฅ์ ๊บผ๋ธ๋ค (
Deck.popCard())
- ์นด๋๋ฅผ ์์ฑํ๋ค (
-
Dealer๋Playerํด๋์ค๋ก๋ถํฐ ์์์ ๋ฐ๋๋ค - ์นด๋ ์ซ์๋ฅผ ๊ณ์ฐํ๋ค (
Player.calculateScore()) - ๋๋ฌ๊ฐ ํ๋ ์ด์ด์๊ฒ ์นด๋ ๋ฐฐ๋ถํ๋ค (
Dealer.allocateCard()) - ๋๋ฌ์ ์ฒ์ ๋ฐ์ 2์ฅ์ ์นด๋ ํฉ๊ณ๊ฐ 16์ดํ๋ผ๋ฉด ์นด๋ ํ ์ฅ์ ์ถ๊ฐ๋ก ๋ฐ๋๋ค (
Dealer.addOneMoreCard) - ์นด๋ ์ถ๊ฐ ์ฌ๋ถ ๋ฌป๊ธฐ (
InputView.askAddCard()) - ์ฐ์น์๋ฅผ ์ฐพ๋๋ค (
Judgement.findWinner()) - ์ต์ข
์นํจ ๊ณ์ฐํ๊ธฐ (
Judgement.judgeResult())