숫자 야구 프로그램 만들기(2)

김종화·2023년 8월 15일

JavaScript

목록 보기
17/18

중복 없이 랜덤으로 만든 3자리 숫자를 입력값을 통해 맞춰보자

function generateNumber() {
  let num = [];
  while (num.length < 3) {
    let n = Math.floor(Math.random() * 10);
    if (!num.includes(n)) {
      num.push(n);
    }
  }
  return num.join("");
}
// 중복없는 임의의 3자리는 만드는 함수
  • 코딩을 하기 전에 생각해 볼 것!
    1 ) strike와 ball의 횟수를 카운트하여 콘솔에 기록
    2 ) 숫자를 비교한 횟수를 카운트하여 최종 결과를 콘솔에 기록
    3 ) 맞출 때까지 반복해서 입력창을 제공
let input = '123'

function checkNumber() {
  let i = 0;
  let strike = 0;
  let ball = 0;
  let play = 0;
  while (i < 3) {
    if (number[i] == input[i]) strike++;
    else if (number.includes(input[i])) ball++
    i++;
  }
  console.log(`${input}=> ${strike}S ${ball}B`);
  if (strike !== 3) {
    play++
    console.log(play) 
  } else {
    console.log(`${input}=> ${strike}S ${play}회 만에 성공!`);
  }
}

백틱을 이용해 문자와 변수값을 콘솔에 기록했으나 숫자를 못 맞추었을 때
게임이 반복되는 부분과 play가 카운트가 안되고 있는 점을 고쳐야 했다.

function playGame() {
  let play = 1
  input = window.prompt();
  checkNumber(input);

  function checkNumber() {
    let i = 0;
    let strike = 0;
    let ball = 0;
    while (i < 3) {
      if (number[i] == input[i]) strike++;
      else if (number.includes(input[i])) ball++
      i++;
    }
    console.log(`${input}=> ${strike}S ${ball}B`);
    if (strike !== 3) {
      play++
      console.log(play)
      playGame() 
    } else {
      console.log(`${input}=> ${strike}S ${play+1}회 만에 성공!`);
    }
  }
}
playGame();

playGame 함수를 만들어 3S 달성 전에는 playGame을 반복하도록 해준다.
아직 문제가 남았는데... play의 횟수가 2에서 올라가지 않는다...

vscode의 디버그 기능을 이용해 보니 함수가 다시 실행될 때 저장된 값이 초기화 되는 것을 확인...
play 변수를 함수 바깥에 선언해서 횟수가 누적되도록 하니 잘 저장됐다!

최종코드!

function generateNumber() {
  let num = [];
  while (num.length < 3) {
    let n = Math.floor(Math.random() * 10);
    if (!num.includes(n)) {
      num.push(n);
    }
  }
  return num.join("");
} // 중복 없는 랜덤 3자리를 생성하는 함수

const number = generateNumber(); // 변수에 함수의 리턴값을 저장
console.log(number);
let play = 1 // 실행될 때 1부터 카운트

window.alert('콘솔창을 켜주세요')
function playGame() {
  input = window.prompt();
  checkNumber(input);

  function checkNumber() {
    let i = 0;
    let strike = 0;
    let ball = 0;
    while (i < 3) {
      if (number[i] == input[i]) strike++;
      else if (number.includes(input[i])) ball++
      i++;
    }
    console.log(`${input}=> ${strike}S ${ball}B`);
    if (strike !== 3) {
      play++
      console.log(play)
      playGame() // strike = 3이 아닐시 게임을 반복
    } else {
      console.log(`${input}=> ${strike}S ${play}회 만에 성공!`);
    }
  }
}
playGame();

자바스크립트를 기초 문법을 통해 만들어 본 숫자 야구 게임!
조건문과 반복문 다양한 메서드를 활용해 볼 수 있었던 재밌는 코딩이었다!

0개의 댓글