๊ฐ์
๋ฏธ์ | ๊ธฐ๊ฐ | Repository | PR & Review |
---|---|---|---|
์๋์ฐจ ๊ฒฝ์ฃผ 1๋จ๊ณ | 23-02-10 - 23-02-13 |
Repo | PR & Review |
๐ ๋ฏธ์ ํ๊ณ
์ฒซ ๋ฒ์งธ ๋ฏธ์ ์ 2๋จ๊ณ๋ ์ถ๊ฐ๋ ๊ธฐ๋ฅ ๊ตฌํ์ด ์๊ณ ๊ณตํต ํผ๋๋ฐฑ ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐํ์ผ๋ก ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋ง ํ๋ ๊ฒ์ผ๋ก ์งํํ์๋ค. ์๋ง ์ฐํ ์ฝ์ ์์คํ ์ ์ ์ํ๋ ์จ๋ณด๋ฉ ๋ฏธ์ ์ด๋ผ ๊ฐ๋จํ๋ค๊ณ ์๊ฐํ๋ค. ๋ ๋ฒ์งธ ๋ฏธ์ ๋ถํฐ๋ step2๊ฐ ๋ฌด๋ ค ์ฃผ๋ง ํฌํจ 9์ผ์ด๋ ๊ณผ์ฐ ์ด๋ค ์ด๋ ค์์ด ์์๊น ๋๊ทผ๊ฑฐ๋ฆฐ๋ค.
๐ ๏ธ ๋ฆฌํฉํฐ๋ง
- feat: ์๋์ฐจ ์ด๋ฆ์ด ๊ณต๋ฐฑ์ผ ๊ฒฝ์ฐ ์๋ฌ ๋ฐํํ๊ธฐ
- feat: ์๋์ฐจ์ ์ต์ข ์์น๋ฅผ ๊ตฌํ๊ธฐ
- feat: ์๋์ฐจ์ ์ด๋๋ฅผ ๊ฒฐ์ ํ๋ ์ซ์ ๋ฐฐ์ด ๋ง๋ค๊ธฐ
- refactor: ๋๋ฉ์ธ ๋ก์ง๊ณผ UI ๋ก์ง ํด๋ ๋ถ๋ฆฌํ๊ธฐ
- refactor: ES6 ๋ชจ๋ ์ ์ฉํ๊ธฐ
- refactor: ์ ํจ์ฑ ๊ฒ์ฌ ๋ฉ์๋ ์ด๋ฆ ์์ ํ๊ธฐ
- ์ด๋ฆ์ ํตํด ํด๋น ๋ฉ์๋๊ฐ ํ๋ ์ญํ ์ ์ ์ ์๋๋ก ํ๋ค.
- refactor: ์๋์ฐจ ๊ฒ์์ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด ๋ง๋ค๊ธฐ
- ํด๋น ๊ฐ์ฒด์์ ์๋์ฐจ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ค.
- ํด๋น ๊ฐ์ฒด์์ ์๋์ฐจ ๊ฒ์์ ์ ๋ฐ์ ์ธ ์ญํ ์ ๋ด๋นํ๋ค.
- refactor: ์๋์ฐจ ๊ฐ์ฒด ์์ฑ์ GameManager์์ ์คํํ๊ธฐ
- refactor: GameManager์ ์๋ ํ์ ์ ์ฅํ๊ธฐ
- refactor: ์๋์ฐจ์ ์ด๋์ GameManager์์ ์คํํ๊ธฐ
- refactor: ์๋์ฐจ์ ์ํ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ํจ์๋ฅผ GameManager์์ ์คํํ๊ธฐ
- refactor: ์๋์ฐจ ๊ฒฝ์ฃผ ๊ฒ์์ ์ฐ์น์๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ํจ์๋ฅผ GameMananger์์ ์คํํ๊ธฐ
- refactor: ์ฐ์น์์ ์๋์ฐจ ์ด๋ฆ์ ๋ฐํํ๋ ํจ์๋ฅผ ๋ง๋ค์ด ์ถ๋ ฅํ๊ธฐ
- refactor: ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์์ ํ๊ธฐ
- refactor: ๋งค์ง ๋๋ฒ ์์ํํ๊ธฐ
- refactor: generateRandomNumber ์ฌ์ฌ์ฉ์ฑ ๋์ด๊ธฐ
์์ ๊ฐ์ ๋ชฉ๋ก์ ๋ฐํ์ผ๋ก ๋ฆฌํฉํฐ๋ง๊ณผ ์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ์ ์งํํ๋ค. ๋ฆฌํฉํ ๋ง ๋ด์ฉ ์ค ๋ช ๊ฐ์ง๋ฅผ ์ ๋ฆฌํ๋ค.
์ ํจ์ฑ ๊ฒ์ฌ ๋ฉ์๋ ์ด๋ฆ ์์ ํ๊ธฐ
// ๊ธฐ์กด ์ฝ๋
const Validator = {
// ...
isCarNameGreaterThanFive(names) {
return names.some((name) => name.length > 5);
},
isCarNameLowerCase(names) {
return names.every((name) => {
return name.search(/[^a-z]/g) === -1;
});
},
// ....
};
์์ ๋ฉ์๋์ ์ด๋ฆ์ ๋ณด๋ฉด is~
๋ผ๋ ์ ๋์ฌ ๋ถ์ฌ์๋ค. ์ด๋ ~์ด๋ค
๋ผ๋ ๊ฒ์ผ๋ก ์ง์ญ์ด ๋๋ค. ์ฆ, isCarNameGreaterThanFive
์ '์๋์ฐจ์ ์ด๋ฆ์ด 5๋ณด๋ค ํฌ๋ค'๋ผ๊ณ ์ง์ญ์ ํ ์ ์๋ค.
๋ํ ๋ฉ์๋ ์ด๋ฆ์ ํน์ ์ซ์์ ์กฐ๊ฑด์ด ๋ค์ด๊ฐ๊ฒ ๋์ด ์ ์ฐํ์ง ์๋ค๋ ํผ๋๋ฐฑ์ ๋ฐ๊ฒ ๋์๋ค. ์ฆ, ์ฝ๋์ ๋ด์ฉ์ด ๋ฐ๋๋ฉด ๋ฉ์๋์ ์ด๋ฆ๋ ์์ ๋์ด์ผ ํ๋ค. 5๋ณด๋ค ํฐ๋ค๋ ๊ฒ์ ๋ฌด์์ ์๋ฏธํ๋์ง ์๊ฐ์ ํ ํ์๊ฐ ์๋ค.
ํด๋น ๋ฉ์๋ ์ด๋ฆ์ด ๊ณผ์ฐ ์ข์์ง? ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํตํด ์๋ฌธ์ ํ๊ฒ ๋์๊ณ ๋ณด๋ค ์ข์ ์ด๋ฆ์ ์๊ฐ์ ํ๋ฉด์ ๋ฆฌํฉํฐ๋ง์ ์งํํ๋ค.
// ๋ฆฌํฉํฐ๋ง ํ ์ฝ๋
const Validator = {
// ...
isValidCarNameLength(names) {
return names.every((name) => name.length <= 5);
},
isValidCarNameCharacter(names) {
return names.every((name) => {
return name.search(/[^a-z]/g) === -1;
});
},
// ....
};
is~
์ ๋์ฌ ๋ค์ ๋ฐ๋ก Valid
๋ฅผ ๋ถ์ฌ ํด๋น ๋ฉ์๋๊ฐ ๊ฒ์ฌ์ ์ญํ ์ ํ๋ค๋ ์ถ์ธก์ ์ถฉ๋ถํ ํ ์ ์๋๋ก ๋ฆฌํฉํฐ๋ง์ ํ์๋ค.
๊ทธ๋ฆฌ๊ณ isValidCarNameLength
์ ์ฝ๋๋ฅผ ๋ณด์. ์๋์ฐจ ์ด๋ฆ์ ๊ธธ์ด๊ฐ 5๋ ๊ฐ๊ฑฐ๋ ์๋ค๋ ๊ฒ์ ์๋์ฐจ ์ด๋ฆ์ ๊ธธ์ด๊ฐ ์ ํจํ์ง๋ฅผ ํ๋จํ๋ ๊ธฐ์ค์ด ๋๋ค. ์๋์ฐจ ์ด๋ฆ์ ๊ธธ์ด์ ๊ด๋ จ๋ ์ฝ๋์ด๋ฏ๋ก CarNameLength
์ ๋ถ์ฌ ๋ฉ์๋ ์ด๋ฆ์ ์ ํ๋ค.
์ด๋ฌํ ๋ฉ์๋ ์ด๋ฆ์ ์๋์ฐจ์ ๊ธธ์ด์ ์๊ตฌ ์ฌํญ์ด ๋ฐ๋์ด๋ ์์ ํ์ง ์์๋ ๋๋ฏ๋ก ์ ์ฐํ๋ค๊ณ ํ ์ ์๋ค. ๋จ์ง, ๋ด๋ถ์ ์ฝ๋๋ง ๋ฐ๊พธ๋ฉด ๋๋ค!
์๋์ฐจ ๊ฒฝ์ฃผ ๊ฒ์์ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด ์์ฑ
์ด์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์๋์ฐจ ๊ฐ์ฒด์๋ getWinner
๋ฉ์๋๊ฐ ์์๋ค. ์ด ๋ฉ์๋๋ ์๋์ฐจ๋ค์ ์์๋ก ๊ฐ์ง๋ ๋ฐฐ์ด์ ์ธ์๋ก ๋ฐ์ ํ ๊ฐ์ฅ ๋ฉ๋ฆฌ ์ด๋ํ ์๋์ฐจ์ ์ด๋ฆ์ ๋ฐํํ๋ ์ญํ ์ ํ๋ค. ์ด๋ฌํ ์ญํ ์ ๊ณผ์ฐ ์๋์ฐจ ๊ฐ์ฒด์ ์ด์ธ๋ฆฌ๋ ๋ฉ์๋์ผ๊น? ์๋๋ผ๊ณ ์๊ฐํ๋ค. ์ฐ์น์๋ฅผ ์ฐพ๋ ์ญํ ์ ์๋์ฐจ ๊ฐ์ฒด๊ฐ ์๋๋ผ ์๋์ฐจ ๊ฒฝ์ฃผ ๊ฒ์์ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด์์ ๋ ์ด์ธ๋ฆฐ๋ค๊ณ ์๊ฐํ์ฌ ์ด๋ฅผ ์ํด ์๋์ฐจ ๊ฒฝ์ฃผ ๊ฒ์์ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
๊ฐ์ฒด์ ์ด๋ฆ์ GameManager
์ด๋ค.
GameManger
์์ ์ฐ์น์๋ฅผ ์ฐพ๋ ๊ฒ๋ฟ ์๋๋ผ, ์๋์ ์ญํ ์ ๊ฐ์ง๊ฒ ๋๋ค.
- ์๋์ฐจ ์์ฑ ๋ฐ ์ถ๊ฐ
- ์ด๋ ํ์ ์ ์ฅ
- ์๋์ฐจ ์ด๋ ์ํค๊ธฐ
- ์์๊ฐ ์ซ์(๋๋ค)์ธ ๋ฐฐ์ด ์์ฑ
- ์๋์ฐจ์ ํ์ฌ ์์น ๋ฐ ์ด๋ฆ ๊ฐ์ ธ์ค๊ธฐ
- ์ฐ์น์ ์ฐพ๊ธฐ
- ๊ฐ์ฅ ๋ฉ๋ฆฌ ์ด๋์ ์๋์ฐจ์ ์์น ์ฐพ๊ธฐ
ํ๋ ฅํ๋ ๊ด๊ณ๋ฅผ ์๊ฐํ์ฌ ์ญํ ์ ๊ฐ์ฒด์๊ฒ ์ ์ ํ ๋ถ๋ฐฐํ์!
generateRandomNumber ์ฌ์ฌ์ฉ์ฑ ๋์ด๊ธฐ
// ๊ธฐ์กด ์ฝ๋
const generateRandomNumber = {
generator() {
return Math.floor(Math.random() * RANDOM_NUMBER_RANGE);
},
};
๊ธฐ์กด ์ฝ๋๋ฅผ ๋จผ์ ์ดํด๋ณด์. ์ด๋ค ๋ฌธ์ ๊ฐ ์์๊น?
generateRandomNumber
๊ฐ์ฒด์ generator
๋ฉ์๋๋ ์ธ์ ์ด๋์๋ 1 ~ 9 ์ฌ์ด์ ์ซ์๋ง ๋ฐํ์ ํ๋ค. ์ด๊ฒ ๋ฌด์์ด ๋ฌธ์ ์ผ๊น? ๋ง์ฝ ์๋์ฐจ์ ์ด๋ ์กฐ๊ฑด์ด 0 ~ 13 ์ฌ์ด์ ์ซ์ ์ค 6 ์ด์์ผ ๊ฒฝ์ฐ๋ก ๋ฐ๋๊ฒ ๋๋ค๋ฉด ์๋ก์ด ํจ์๋ฅผ ์์ฑํ๊ฑฐ๋ ์์๋ฅผ ์์ ํด์ผ ํ๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ๋ณด๋ค generator
์ ์ธ์๋ฅผ ์ ๋ฌํ์ฌ ๋ฒ์๋ฅผ ์ค์ ํ๋ ๊ฒ์ด generator
๋ฉ์๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ ๋ฐฉ๋ฒ์ด๋ค.
// ๋ฆฌํฉํฐ๋ง ํ ์ฝ๋
const generateRandomNumber = {
generator(minNumber, maxNumber) {
return minNumber + Math.floor(Math.random() * (maxNumber - minNumber + 1));
},
};
minNumber
์ maxNumber
๋ฅผ ์ธ์๋ก ์ ๋ฌํ์ฌ ํด๋น ๋ฒ์ ๋ด์ ์ซ์๋ฅผ ๋ฐํํ๋๋ก ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋ง ํ์๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ ํตํด ์๊ตฌ ์ฌํญ์ด ๋ฐ๋์๋๋ผ๋ ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์์ ์ธ์๋ง ์ฐ-์ฝ ๋ฐ๊พธ๊ธฐ๋ง ํ๋ฉด ๋๋ค!
๐ ์ํ ์
- ๋ค๋ฅธ ๋ฏธ์ ๋ณด๋ค ์งง์ step2์์ง๋ง ์๊ฐ ๋ด์ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ์ ๋ง๋ฌด๋ฆฌํ์๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ ๋ด์ฉ, ๊ณตํต ํผ๋๋ฐฑ ๋ด์ฉ์ ์ต๋ํ ๋ฐ์ํ๋๋ก ๋ ธ๋ ฅํ์๋ค.
๐ ์์ฌ์ด ์
- ์ด๋ฐํ๊ฒ step2๋ฅผ ์งํํ ๋ฏํ์ฌ ์์ฝ๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ, ํผ๋๋ฐฑ์ ๋ํ ๋ด์ฉ ๊ณต์ ๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ง ์์๋ค.
- ๋ฆฌ๋ทฐ์ด ํผ๋๋ฐฑ์ ๋ฆ๊ฒ ์์ฑํ์๋ค.
๐ ์์ผ๋ก์ ๊ฐ์ค
- ๊ณ ๋ฏผํ ๋ถ๋ถ์ด ์์ผ๋ฉด ํจ๊ป ๋๋๊ธฐ(ํจ๊ป ์ฑ์ฅํ๊ธฐ)
- ์ฌ์ ๋ฅผ ๊ฐ์ง๊ณ ๋ฏธ์ ์งํํ๊ธฐ
- ํญ์ ๋ค์ด๋ฐ์ ์ ๊ฒฝ ์ฐ๊ธฐ
'๐ ์ฐ์ํํ ํฌ์ฝ์ค > Level1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ ๋ฒจ1 ์ ์ฌ ๋ญ ๋จน์ง - step2 (0) | 2023.04.14 |
---|---|
๋ ๋ฒจ1 ์ ์ฌ ๋ญ ๋จน์ง - step1 (0) | 2023.04.14 |
๋ ๋ฒจ1 ํ์ด์ ๋ก๋ - step2 (0) | 2023.04.13 |
๋ ๋ฒจ1 ํ์ด์ ๋ก๋ - step1 (0) | 2023.04.13 |
๋ ๋ฒจ1 ์๋์ฐจ ๊ฒฝ์ฃผ - step1 (0) | 2023.04.10 |