인프런 커뮤니티 질문&답변

호박인절미님의 프로필 이미지
호박인절미

작성한 질문수

웹 게임을 만들며 배우는 자바스크립트

indexOf & 숫자야구 구현

iput 입력글자 제한에러...

작성

·

139

0

안녕하세요 선생님

강의 잘듣고 있습니다

다른 기능은 잘되는데 

input창에 처음으로 답을  입력할때  4글자 까지 입력이 되는데 

2번째 입력할때  입력 글자가 3글자로 제한되는데.. 뭐가 문제일 까요 ㅠㅠㅠ 

아 , 그리고 또 궁금한점이 

함수 숫자뽑기() 에서 처음에는 조건이 

var i = 0i < 4i += 1

로 쓰이는데 

틀리면  조건이

var i = 0i < 3i += 1

으로 쓰는건 왜인가요??

// 숫자야구



var 바디 = document.body;

var 숫자후보;
var 숫자배열;
function 숫자뽑기() {
    숫자후보 = [123456789];
    숫자배열 = [];
    for (var i = 0i < 4i += 1) {
        var 뽑은것 = 숫자후보.splice(Math.floor(Math.random() * (9 - i)), 1)[0];
        숫자배열.push(뽑은것);
    }
}

// 문제 시작 
숫자뽑기();
console.log(숫자배열);  // 게임 답 확인용


var 결과 = document.createElement("h3");
바디.append(결과);


var  = document.createElement('form');
document.body.append();
var 입력창 = document.createElement('input');
.append(입력창);
입력창.maxLength = 4// input 입력 4글자로 제한
var 버튼 = document.createElement('button');
버튼.textContent = "입력";
버튼.style.marginLeft = '3px';
.append(버튼);
var 결과창 = document.createElement('div');
document.body.append(결과창);



var 틀린횟수 = 0;
.addEventListener('submit'function 콜백함수(e) {
    e.preventDefault();
    var  = 입력창.value;
    if ( === 숫자배열.join("")) {
        // 답이 맞으면
        결과.textContent = "홈런";
        입력창.value = " ";
        입력창.focus();
        // 새로운 문제 내기  
        숫자뽑기();
        틀린횟수 = 0;
    } else {
        // 답이 틀리면
        var 답배열 = .split(" ");
        var 스트라이크 = 0;
        var  = 0;

        틀린횟수 += 1;

        if (틀린횟수 > 4) {  // 4번 넘게 틀리면
            결과.textContent = '4번 넘게 틀려서 실패! 답은' + 숫자배열.join(',') + '였습니다.';
            입력창.value = " ";
            입력창.focus();

            // 새로운 문제 내기  
            숫자뽑기();

            틀린횟수 = 0;
        } else {  // 4번 미만으로 틀리면
            console.log('답이 틀리면'답배열); // 에러 확인용
            for (var i = 0i < 3i += 1) {
                if (Number(답배열[i]) === 숫자배열[i]) {  // 같은 자리인지 확인
                    스트라이크 += 1;
                    console.log('같은자리?'); // 에러 확인용
                } else if (숫자배열.indexOf(Number(답배열[i])) > -1) { //같은 자리는 아니지만, 숫자가 겹치는지 확인 && 여기서 -1 은 indexOf에서 없는값을 의미
                     += 1;
                    console.log('겹치는 숫자?'); // 에러 확인용

                }



            }






            결과.textContent = 스트라이크 + "스트라이크" +  + "볼 입니다";
            입력창.value = " ";
            입력창.focus();
        }


    }
});

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
호박인절미님의 프로필 이미지
호박인절미

작성한 질문수

질문하기