javascript 예제1) 야구게임

freshnoon·2020년 5월 28일
0

JavaScript

목록 보기
1/8
post-thumbnail

야구게임 코드작성

//야구게임은 중복된 숫자가 들어갈 수 없다. 따라서, 랜덤으로 숫자를 가져오되 중복되지 않게 가져온다.
        var list = [0,1,2,3,4,5,6,7,8,9];
        //실제 문제가 들어갈 number변수 
        var number = [];
        for (var i = 0; i < 4; i++){
            var select = Math.floor(Math.random() * list.length) // 랜덤한 값을 찾는것.
            //Math.floor는 "버림" ex)Math.floor(45.44) 결과 : 45
            //Math.random은 랜덤된숫자결과를 가져온다. ex)0.156123...
            
            number[i] = list.splice(select, 1)[0]
            console.log(number)
            // list.splice로 현재 list배열에 있는 숫자를 꺼내 number변수에 저장시킨다. 
            // 여기서 [0]을 사용한 이유는 해당 배열에 값만 뽑기 위해서 이다.
            // [0]을 해주지 않을 경우 ex) console.log(number[i]) 결과 : [1],[5],[6],[3]
            // [0]을 해줄 경우 console.log(number[i]) 결과 : 1,5,6,3
            //console.log('list', list, 'number', number, 'length', list.length)
            //number라는 변수에 현재 문제가 들어간다. ex) [1, 5, 6, 3]
        }

        var count = 0;
        var strike = 0;
        var ball = 0;
        while (count < 10){
            //입력창(prompt)
            var input = prompt('숫자를 입력하세요'); //플레이어가 입력하는 숫자 ex) ["1234"]
            var inputArray = input.split(''); 
          //poompt는 문자로 찍혀서 input에 들어있는 값이 문자가 된다. 
          //["1234"]를 비교를 위해 split함수를 사용해 
          //['1','2','3','4'] 처럼 한글자씩 떨어뜨린다.
            strike = 0; //비교하기 전, strike와, ball을 초기화한다.
            ball = 0;
            count++;
            //입력받은 숫자를 비교하는 부분,
            for (var j = 0; j < 4; j++){
                for(var k = 0; k < 4; k++){
                    if(number[j] == inputArray[k]){
                         //ex) number[1, 5, 6, 3] inputArray['1','2','3','4']
                         // 비교할 때 '==' 쓴 이유는 number는 숫자이고, inputArray는 문자이기 때문이다.
                         // number에 있는 것들을 inputArray에서 한번씩 돌려가며 해당 숫자가 있는지 부터 판별한다.
                         // 즉, {1 == '1','2','3','4'}, {5 == '1','2','3','4'}, {6 == '1','2','3','4'}, {3 == '1','2','3','4'}
                         // 첫번째 if가 참이 되면, strike와, ball의 여부를 가린다.
                         // j === k 가 strike인 이유는 자리수가 같은지 판별한다. 만약 자리수까지 같다면, strike가 나오고 그렇지 않다면 ball로 나올 것이다.
                        if(j === k){
                            strike++;
                        } else{
                            ball++;
                        }
                        break; // j === k가 같을경우 즉, strike될 때 가장가까이에있는 for문을 break한다.
                        //여기서 break는 구지 쓰지 않아도 작동하지만, 참이 나온 상황에서 불필요한 비교를 피해주기위해 사용한다.
                    }
                }
            }
            //결과창(console)
            if(strike === 4){
                console.log('홈런!!! ' + count + ' 번 만에 맞추셨습니다.')
                break; // break로 인해 바로 밖에서 동작하고 있는 while문이 멈추게되고 게임이 종료된다.
            } else if (count >= 10){
                console.error('시도 횟수를 초과하셨습니다.');
            } else{
                console.info(inputArray.join('') + ': ' + strike + '스트라이크' + ball + '볼');
                //inputArray.join('')을 하지 않았을 경우, ex)1,2,3,4
                //inputArray.join('') ex)1234
            }
        }

출처 : https://www.zerocho.com/category/JavaScript/post/5734572a9def49170022bd96
(제로초님 사이트)

함수사용(참고링크)

0개의 댓글