Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- sqld 자격증 시험
- 부트캠프
- promise 비동기처리
- react hook
- 퍼블리셔 이직후기
- 2024 sqld
- 국비지원
- 프론트엔드부트캠프후기
- firebase rules
- 야놀자 fe 1기
- foreach
- 패스트캠퍼스
- reduce
- TypeScript
- Where
- github
- 국비지원취업
- 프론트엔드개발자
- css 꿀팁
- git
- js CRUD
- 성능개선
- Filter
- 리액트오류
- 부트캠프 취업후기
- 야놀자x패스트캠퍼스
- map
- sqld 55회
- Firebase
- 패스트캠퍼스 부트캠프
Archives
- Today
- Total
Tech is created to fix problem
가위 바위 보 게임 만들기 본문
반응형
Q1. 당신은 컴퓨터와 가위 바위 보 게임을 하려고 합니다.
당신이 가위, 바위, 보 중에서 하나를 선택하면,
컴퓨터는 가위, 바위, 보 중에서 하나를 랜덤하게 고릅니다.
이때 승부의 결과를 출력하는 코드를 작성하세요.
(유저가 이겼다면 “유저: 승, 컴퓨터: 패” 와 같은 형식으로 출력)
(유저가 가위, 바위, 보 중에서 하나만 입력한다고 가정하고, 예외처리는 하지 않아도 됩니다.)
A1. 내가 푼 답
function game(user, com) {
if (user === '가위' && com === '보') {
alert('user가 승리했습니다');
} else if (user === '바위' && com === '가위') {
alert('user가 승리했습니다');
} else if (user === '보' && com === '바위') {
alert('user가 승리했습니다');
} else if (user === com) {
alert('비겼습니다');
} else {
alert('com이 승리했습니다')
}
}
let random = Math.random();
let comRandom = '';
if (random < 0.34) {
comRandom = '가위';
} else if (random < 0.67) {
comRandom = '바위';
} else {
comRandom = '보';
}
console.log(random);
game('가위', comRandom);
A1. 바람직한 답
let choices = ['가위', '바위', '보']
let user = prompt('가위 바위 보 중에서 하나를 선택해주세요.', '')
let computer = choices[Math.floor(Math.random() * 3) % 3]
const isUserWin = (computer === '가위' && user === '바위')
|| (computer === '바위' && user === '보')
|| (computer === '보' && user === '가위')
const isUserLose = (computer === '가위' && user === '보')
|| (computer === '바위' && user === '가위')
|| (computer === '보' && user === '바위')
alert('컴퓨터는 ' + computer)
if (computer === user) {
alert('무승부')
} else if (isUserWin) {
alert('유저: 승, 컴퓨터: 패')
} else if (isUserLose) {
alert('유저: 패, 컴퓨터: 승')
}
이게 리팩토링이구나 싶었다,, 직관적으로 봤을 때 잘 나뉘어져있고, 부분마다 어떤 역할인지 선명하게 잘 보인다;;
[다음에 시도해보면 좋을 것들]
💎 가위,바위,보 배열을 만들어서 Math.random() 에 3을 곱하고 나눠서 0,1,2 중 하나가 인덱싱으로 들어가게...
💎 그리고 else if 를 남발하지 않고, isUserWin, isUserLose 의 모든 경우의 수를 변수에 담아서 마지막에 else if 로 결과를 출력하는!!
내 정답이랑 비교가 많이 되었다ㅋ
반응형
'연습 또 연습 > js 연습문제' 카테고리의 다른 글
배열&객체 연습문제 1 (0) | 2023.07.19 |
---|---|
up down 게임 만들기 (0) | 2023.07.19 |
함수 문제풀이 (0) | 2023.07.19 |
for while 반복문 문제풀이 (0) | 2023.07.18 |
if 조건문 문제풀이 (0) | 2023.07.18 |