이번 글은 연습문제 풀이입니다. 이전 글에서 연습문제를 풀어 보신 분들만 아래 내용을 확인하시길 바랍니다.






10-1 풀이

function dice(smallNumber, bigNumber){
  var possibilities = bigNumber-smallNumber+1;
  return Math.floor(Math.random()*possibilities)+smallNumber;
}

우선 작은 수부터 큰 수까지는 몇가지 경우의 수가 있을 까요? 예를 들어 4와 9이 입력되었다면, 결과로 나올 수 있는 값은 4, 5, 6, 7, 8, 9의 6가지입니다. 이렇게 주어진 두 숫자와, 그 사이의 숫자의 갯수를 구하려면 큰 수 - 작은 수 + 1을 하면 됩니다. 이 값을 possiibliities 변수에 넣어 줍시다.

return Math.floor(Math.random()*possibilities)를 하면 0 부터 possibilities-1까지의 수 중에 하나를 만들 수 있습니다.

여기에 가장 작은 수인 smallNumber를 더해주면 입력받은 작은 수부터 입력받은 큰 수까지 중 하나의 정수를 구하는 함수가 완성됩니다.

10-2 풀이

//컴퓨터 가위 바위 보 값 구하는 함수
function getComputerValue(){
  var randomNumber = Math.floor(Math.random()*3); // 0, 1, 2 중 하나의 값을 랜덤으로 생성
  if(randomNumber == 0){
    return "가위";
  }
  else if(randomNumber == 1){
    return "바위";
  }
  else {
    return "보";
  }
}

//가위 바위 보 값 출력하는 함수
function printValues(yourName, yourValue, computerName, computerValue){
  console.log(yourName + ": " + yourValue + ", " + computerName + ": " + computerValue);
}

// 승자를 출력하는 함수
function printWinner(name){
  console.log(name+"의 승리입니다.");
}

// 비겼음을 출력하는 함수
function printDraw(){
  console.log("비겼습니다.");
}

//메인 게임 함수
function rockScissorPaper(yourValue){
  if(yourValue != "가위" && yourValue != "바위" && yourValue != "보"){
    console.log("잘못 입력하셨습니다.");
    return;
  }

  var computerName = "컴퓨터";
  var yourName = "당신";

  var computerValue =  getComputerValue();

  printValues(yourName, yourValue, computerName, computerValue);

  if(computerValue=="가위" && yourValue=="보" || computerValue=="바위" && yourValue=="가위" || computerValue=="보" && yourValue=="바위"){
    printWinner(computerName);
  }
  else if(computerValue=="가위" && yourValue=="바위" || computerValue=="바위" && yourValue=="보" || computerValue=="보" && yourValue=="가위"){
    printWinner(yourName);
  }
  else {
    printDraw();
  }
}

유의해서 봐야할 부분은 1. 컴퓨터의 가위 바위 보 값을 생성하는 부분과 2. 승, 패, 비김을 판단하는 부분입니다.

1. 컴퓨터의 값은 바로 생성하지 못하고 숫자 0, 1, 2중에서 랜덤한 수를 생성한 후 그 수에 따라 가위, 바위 보 값을 return하는 함수를 만들었습니다.

2. 플레이어가 승리하는 경우의 값들을 모두 모아 if의 조건으로 만들었고, 컴퓨터가 승리하는 경우의 값들을 모두 모아 else if의 조건으로 만들었고, 그 외의 경우는 비기는 것으로 하였습니다.

위 코드는 정답의 한 예시이며 반드시 위와 같이 코딩해야하는 것은 아닙니다. 문제에서 주어진 조건만 모두 만족한다면 정답입니다.


+ Recent posts