본문 바로가기
MINI PROJECT/JavaScript

끝말잇기 게임을 만들었다.

by jono 2021. 8. 18.

PROJECT 03 >>>

끝말잇기 게임

# 새로배우게된 것

 

1. script선언문의 위치

-  코드는 위에서 아래로 순차적으로 실행되므로,  HTML 화면의 구성을 이루는 코드들의 위에 먼저 그려지고 나서 script선언문이 위치해야 한다.

 

2. prompt() 입력값의 문자형

- 무조건 String이다. 따라서 입력값이 숫자라면, Number( prompt( ) ) 메서드를 이용하여 형변환을 해줘야 함.

 

3.  documnet.querySelector( '선택자' );

- 단일 요소를 선택할 경우 -> '선택자' 자리에는 div, button 등 태그이름이 온다.

- 복수의요소를 선택할 경우 -> document.querySelectorAll ( '선택자' ) 

   => '선택자' 자리에 들어간 태그가 모두 NodeList에 저장된다. 배열이 아님에 주의.

-  선택자 안에있는 선택자를 한번에 선택해오는 것도 가능함. 공백으로 구분한다.

   document.querySelector( 'div  span' );   // div태그 안에 있는 span태그의 요소를 선택해 옴.

 

4. id와 class는 선택해올 때 다르게 표기해야 한다.

  1) id => 하나의 요소에만 지정할 수 있다. 불러올 때  # 을 붙여서 쓴다.

     document.querySelector( '#id명' );

  2) class => 복수의 요소에 지정할 때 사용한다. 불러올 때   을 붙여서 쓴다

     document.querySelector( '.class명' );  // 여러요소를 선택해오므로, 마찬가지로 NodeList 형식으로 저장된다.

 

5. 태그를 저장하는 변수명 정하기

-  앞에   기호를 붙여 구분를 쉽게하자. ( 책에서 나왔는데 좋아보임. )

$input = document.querySeelctor('input');

 

6. addEventListener( '이벤트명' , '함수명' );

  1) '이벤트명' => cilick, input 등. ( on을 붙이지 않음 )

  2) '함수명'  => 괄호를 붙이지 않음!  // 괄호를 붙이면 '이벤트'의 발생여부에 상관없이 해당 함수가 실행된다.

 

7. 함수생성의 간소화된 형태

const funcName = ( 매개변수 ) => { . . . };

 

8. undefined

- if문 안에 들어가면 => false 값을 가짐.

=> 따라서, !undefined == true

 

9. value or textCotent

  1) value => 입력태그에서의 입력값을 불러올 때 사용함.

             => input / select / textarea

  2) textContent  => 일반태그들의 내부 값을 불러올 때 사용함.

                       => div / span / button

 

10. 순서도를 그리는 연습하기.

-  프로그래밍 적 사고를 하는데에 도움이 된다.

-  사용자의 이벤트가 필요한 곳에서 순서도를 끊는다!


 #코드 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>!WORD-RELAY WEBGAME!</title>
</head>

<body>
  <div><span id="order">1</span>번째 참가자</div>
  <div>제시어: <span id="word"></span></div>
  <input type="text">
    <button>입력</button>

    <script>
    const number = Number(prompt("몇명이 참가합니까?"));
    const $button =  document.querySelector('button');
    const $input = document.querySelector('input');
    const $word = document.querySelector('#word');
    let word; //제시어
    let newWord; //입력한단어
    const $order = document.querySelector('#order');

    const onClickButton = () => {
      if (!word || word[word.length-1] === newWord[0]) {//제시어가 비어있다. or 끝말을 이음
        word = newWord; // 입력한단어가 제시어가 된다.
        $word.textContent = word;// 화면에 제시어를 표시한다.

        const order = Number($order.textContent);
        if (order + 1 > number) {
          $order.textContent = 1;
        } else {
          $order.textContent = order +1;
        }
      }else{
        alert('끝말잇기 규칙에 어긋납니다!');
      }
        $input.value = '';
        $input.focus();
    };

    const onInput = (event) => {
      newWord = event.target.value;// 입력한 단어를 현재단어로 설정 
    };

    $button.addEventListener('click',onClickButton);
    $input.addEventListener('input',onInput);

    </script>

</body>
</html>

 # 출처 

Let's Get IT 자바스크립트 프로그래밍 3장.

DOM객체를 활용한 끝말잇기 웹게임만들기!

 

Let's Get IT 자바스크립트 프로그래밍: 3장 DOM 객체 다루기_끝말잇기 게임

 

thebook.io

 

댓글