이번 글은 연습문제 풀이입니다. 이전 글에서 연습문제를 풀어 보신 분들만 아래 내용을 확인하시길 바랍니다.
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의 조건으로 만들었고, 그 외의 경우는 비기는 것으로 하였습니다.
위 코드는 정답의 한 예시이며 반드시 위와 같이 코딩해야하는 것은 아닙니다. 문제에서 주어진 조건만 모두 만족한다면 정답입니다.