Tech is created to fix problem

가위 바위 보 게임 만들기 본문

연습 또 연습/js 연습문제

가위 바위 보 게임 만들기

furaha 2023. 7. 19. 12:39
반응형

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