[JavaScript] 로또 번호 추첨기 만들기

728x90
반응형

목차

  • JavaScript 사용 방법
  • 세미콜론(;)과 주석
  • 데이터 상자 만들기
  • 로또 번호 추첨기

     


    로또 번호 추첨기 만들기

    자바스크립트로 로또 번호 추첨기를 만들면서 자바스크립트의 기본 개념을 공부해보도록 하겠다.

    이 내용은 코드라이언 '일단 만드는 javascript'를 기반으로 정리한 것이다.

     


    JavaScript 사용 방법

     

    자바스크립트를 작성할 때에는 두 가지 방법이 있다.

    1. html 파일 안에 작성

    2. 별도의 js 파일

     

    html 파일에 작성하는 경우 <body> 태그 안에서 뒷부분에 <script> 태그 안에 입력한다. 

     

    자바스크립트로 브라우저 화면에 텍스트를 출력하려면 document.write() 함수를 이용하면 된다.

    document.write('브라우저 화면에 출력됩니다');

     


     

    세미콜론(;)과 주석

    세미콜론(;)은 하나의 명령어가 끝났다는 의미이다.

    자바스크립트에서는 하나의 명령어가 끝나고 줄바꿈을 해주면 세미콜론을 사용하지 않아도 된다.

    그러나 두 개 이상의 명령어를 한 줄에 적는 경우에는 한 명령어가 끝날 때마다 세미콜론(;)을 반드시 붙여줘야 정상적으로 작동한다.

     

    [주석의 용도]

    1. 코드 설명을 적어줄 때

    2. 코드를 동작시키고 싶지 않을 때

     

    주석으로 표시한 부분은 실행되지 않는다. 표시 방식은 다음과 같다.

    //한줄 주석

    /*여러 줄 주석*/

     

     


     

    데이터 상자 만들기

    변수를 설정할 때에는 var을 이용한다.

    var 변수명 = 값;

     

    <자료형>

    • 문자열(String)
    • 숫자(int, float)
    • 부울(bool): true, false 

    자료형을 알아내는 법: typeof 데이터

     

    (ES6)

    let 변수명 = 값;

    const 변수명 = 값;

     


    로또 번호 추첨기

     

    1. 랜덤으로 숫자 뽑기


    Math.random();

    ▶ 0이상~1미만 실수(float)를 랜덤으로 뽑는다.

    var num = Math.random();
    document.write(num);

     

    Math.random()*45+1;

     1이상 46미만의 실수

    parseInt();

    소수점은 버리고 정수로 변환

     

    parseInt(Math.random() * 45 + 1);

     1이상~45이하 정수(int)

    var num = parseInt(Math.random()*45+1);
    document.write(num);

     

    2. 배열에 저장하기


    배열은 다음과 같이 사용하면 된다. 대괄호[] 안에 원소를 적어주면 된다.

     

    var lotto = [1, 2, 3, 4, 5, 6];

    lotto[0] 처럼 인덱스를 이용해서 배열의 원소를 뽑아올 수 있다.

     

    배열이름.push(원소)

    ▶ 배열의 마지막 값으로 원소를 추가한다.

            var lotto = [];
            lotto.push(parseInt(Math.random() * 45 + 1));
            lotto.push(parseInt(Math.random() * 45 + 1));
            lotto.push(parseInt(Math.random() * 45 + 1));
            lotto.push(parseInt(Math.random() * 45 + 1));
            lotto.push(parseInt(Math.random() * 45 + 1));
            lotto.push(parseInt(Math.random() * 45 + 1));
            document.write(lotto);

     

    3. 반복문 사용하기


    DRY: Don't Repeat Yourself

    위의 코드를 보면 불필요하게 반복되는 코드가 너무 많다. 이런 코드는 반복문을 사용하여 간단하게 만들어주는 것이 바람직하다. 

     

    반복문은 대표적으로 for문과 while문을 사용할 수 있다.

     

    ① for문

    for (시작; 끝; 증가) {

        반복하려는 코드

    }

    var lotto = [];
    for (var i = 0; i < 6; i++){
    	lotto.push(parseInt(Math.random() * 45 + 1));
    }
    document.write(lotto);

    로또에서는 앞에서 나온 번호와 중복되지 않는다.

    만약 중복이 아니라면 .push() 하도록 조건문을 추가해보겠다.

     

    배열.indexOf(값);     //값이 있으면 위치, 없으면 -1

    var lotto = [];
    for (var i = 0; i < 6; i++){
    	var num = parseInt(Math.random() * 45 + 1);
        if (lotto.indexOf(num) == -1) {
              lotto.push(num);
        }
    }
    document.write(lotto);

    중복되지 않는 경우에만 push를 했기 때문에 공이 6개가 되지 않을 수도 있다.

    따라서 공이 6개가 될 때까지 반복하도록 수정해야 한다.

     

    ② while 반복문 이용

    배열.length;     //배열의 길이 반환

    var lotto = [];
            while (lotto.length < 6)
                var num = parseInt(Math.random() * 45 + 1);
                if (lotto.indexOf(num) == -1) {
                    lotto.push(num);
                }
            }
            document.write(lotto);

     

    4. 오름차순으로 정렬하기


    배열.sort();     //배열 값 정렬

    .sort((a, b) =>a-b); //오름차순으로 정렬하기

    var lotto = [];
    while (lotto.length < 6) {
    	var num = parseInt(Math.random() * 45 + 1);
    	if (lotto.indexOf(num) == -1) {
       		lotto.push(num);
    	}
    }
    lotto.sort((a,b)=>a-b);
    document.write(lotto);

     

    5. 출력하기


    배열에 있는 값을 하나씩 출력해준다.

    document.write("<div class='ball ball1'>" + lotto[0] + "</div>");
    document.write("<div class='ball ball2'>" + lotto[1] + "</div>");
    document.write("<div class='ball ball3'>" + lotto[2] + "</div>");
    document.write("<div class='ball ball4'>" + lotto[3] + "</div>");
    document.write("<div class='ball ball5'>" + lotto[4] + "</div>");
    document.write("<div class='ball ball6'>" + lotto[5] + "</div>");

    참고) 코드라이언 '일단 만드는 Javascript' 강의

    https://www.codelion.net/

    728x90
    반응형