-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[3주차 기본/심화/공유 과제] 숫자 게임 만들기 🔢 #4
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
안녕하세요! yb 김민정 입니다:)
코드 전체적으로 너무 깔끔하게 짜서,
딱히 코멘트 달 부분이 거의 없었어요..🥺 w
특히나, 함수로 빼는 부분을 정말 꼼꼼하게 짜신 것 같아요!!
pr 작성이 미완이라서, 그 부분 채워주시면 좋을 것 같습니다
저도 많이 배우고 갑니다,, 너무 고생 많으셨어요 👍🏻👏🏻👏🏻🍀
const NumberCard = ({ cardNumber, handleCardClick, isVisible }) => { | ||
return ( | ||
<> | ||
<NumberCardLayout | ||
onClick={() => handleCardClick(cardNumber)} | ||
isVisible={isVisible} | ||
> | ||
<NumberCardTextStyle>{cardNumber}</NumberCardTextStyle> | ||
</NumberCardLayout> | ||
</> | ||
); | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오 카드도 컴포넌트로 해서 IsVisible 값으로 처리하는 게 깔끔하고 좋네요,,!👍🏻👍🏻
{gameRanking | ||
.sort( | ||
(a, b) => formatRankingData(a.play) - formatRankingData(b.play) | ||
) | ||
.map((rank, index) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오.. 랭킹 데이터를 format 하도록 함수를 뺀 거군요!! 👏🏻
setNumberArray(createRandomArray(1, 9)); | ||
setNextNumberArray(createRandomArray(10, 18)); | ||
setIsVisible(Array(9).fill(true)); | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
숫자 직접 넣으셨는데,
유지보수 하기에도 그렇지만
level 에 따라 달라지는 부분 구현을 나중에 추가한다는 가정하에
state 로 관리하거나, 변수로 관리하면 좋을 것 같아요!!
JSON.parse(localStorage.getItem("ranking")) | ||
); | ||
|
||
const { time, startTimer, resetTimer } = useTimer(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
time 관련 함수로 따로 빼는 아이디어 너무 좋네요...
함수 빼기 장인이다,,
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
역시 채연님,, 코드 읽으면서 계속 깨달음을 얻었습니다,,, 전반적으로 함수와 스타일 컴포넌트의 분리를 잘해주셔서 읽으면서 깔끔한 코드 구조가 이런거구나 느꼈습니다 많이 배웠어요🫶
const Header = ({ handleChangeContent, content, time }) => { | ||
const [buttonState, setButtonState] = useState("GAME"); | ||
|
||
const handleClickButton = (content) => { | ||
handleChangeContent(content); | ||
setButtonState(content); | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분에서 buttonState
와 content
가 비슷한 역할을 하고 있는 것으로 보여서
handleChangeContent(content);
setButtonState(content);
혹시 둘 다 작성하신 이유가 있을까요??
display: flex; | ||
justify-content: center; | ||
align-items: center; | ||
visibility: ${({ isVisible }) => (!isVisible ? "hidden" : "visible")}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
visibility 속성을 사용해서 슷자카드를 조정할 수 있네요!! 🤩
const handleCardNumberChange = (number) => { | ||
setCardNumber(number); | ||
}; | ||
|
||
const handleCardClick = (number) => { | ||
if (number === 1) { | ||
startTimer(); | ||
} | ||
|
||
if (number === cardNumber) { | ||
handleCardNumberChange((prev) => prev + 1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
handleCardNumberChange
함수를 별도로 만들지 않고 setCardNumber((prev) => prev + 1)
로 작성하면 더 직관적이지 않을까,, 생각합니다!
✨ 구현 기능 명세
💡 기본 과제
18까지 클릭해야한다면, 처음에는 19까지의 숫자가 랜덤으로 보여짐현재 시각
,게임의 레벨
,플레이 시간
3개의 정보를 localStorage에 저장 (랭킹에서 사용)🔥 심화 과제
Level 1:
3 x 3
, Level 2:4 x 4
, Level 3:5 x 5
createPortal
공유과제
링크 첨부 : https://wave-web.tistory.com/94
❗️ 내가 새로 알게 된 점
❓ 구현 과정에서의 어려웠던/고민했던 부분
🥲 소요 시간
2일
🖼️ 구현 결과물
3주차 과제 구현 영상