사용자가 슬라이더를 통해 로 사용자가 범위를 지정 하고
그 범위내에 숫자중 임의의 숫자를 선택하면 컴퓨터도 범위내에 랜덤순자를 생성한다.
만약 두값이 같다면 사용자의 승리 틀리면 패배인 게임이다.
html작성
1.게임의 이름을 h1태그를 이용하여 작성한다.
2.Generate a number between 1 and 200
이부분을 h2
태그를 사용하여 class
를 지정해준다.
3.input
의 type
속성중 range
를 이용하여 슬라이더를 사용하였고
4.tickmarks(슬라이더 눈금)를 사용하여 사용자가 값을 입력할 때 좀더 편리하게 하였다.
tickmarks 작성 방법은 input
안에 속성값을 list="ticksmarks"
라고 지정한후
datalist
를 id = "tickmarks"
로 지정한후 원하는 눈금의 갯수만큼 option
태그를 생성한다.
option
태그의 value
값을 주어 간격을 맞춘다. 이게임의 범위는 최소 1 최대 200 이기 때문에
50 100 150 200 총 4개의 value
값을 주었다.
5.사용자의 입력값을 받기 위해 from
태그를 작성
label
태그를 이용하여 Guess the number:
라는 내용을 입력7.input type
을 number
로 지정 min
값을 1로 지정하고 value = ""
를 주어 초기값을 빈칸으로 만들 었다. 이곳에는 숫자이외에 다른 입력을 받지 않도록 설정했다.
8.button
태그를 이용해 버튼을 만들어준다.
9..사용자의 선택값과 컴퓨터의 선택값을 보여주는 span 생성
10.결과값 출력을 위한 h2태그 생성
html 요약
1.range 값을 실시간으로 받기위해 h2에 class 지정
2.range 생성 및 클래스 생성
3.form 태그 생성 및 클래스 생성
4. number type의 inpnt 생성 및 클래스 생성
5.사용자의 선택값과 컴퓨터의 선택값을 보여주는 span 과 승부의 결과값을 보여주는 h2태그 생성 및 클래스 생성
java script 코드
const form = document.querySelector(".js-form"),
range = document.querySelector(".js-range"),
maxNum = document.querySelector(".js-maxNum"),
input = document.querySelector(".js-guessNumber"),
chose = document.querySelector(".js-chose"),
result = document.querySelector(".js-result");
range.oninput = handleInput;
function handleInput() {
const rangeVal = range.value;
maxNum.innerText = `Generate a Number between 0 and ${range.value}`;
form.addEventListener("submit", playgame);
}
function playgame(event) {
event.preventDefault();
const rangeVal = range.value;
const mcNumber = Math.floor(Math.random() * rangeVal + 1);
paintResult(rangeVal, mcNumber);
}
function paintResult(rangeVal, mcNumber) {
const inputVal = input.value;
if (parseInt(inputVal) > rangeVal || parseInt(inputVal) < 0) {
chose.innerText = `${range.value}이하의 숫자를 입력하세요!`;
} else if (inputVal === "") {
chose.innerText = "숫자를 입력하세요!";
} else if (parseInt(inputVal) === mcNumber) {
chose.innerText = `You chose: ${inputVal}, the machine chose: ${mcNumber}.`;
result.innerText = "You Win!";
} else {
chose.innerText = `You chose: ${inputVal}, the machine chose: ${mcNumber}.`;
result.innerText = "You Lose!";
}
}
html
태그 모두 document.queryseletor
를 이용하여 가져온다.2.사용자의 range
값을 실시간으로 반응하기 위해 range.oninput
을 hanleInput
으로 지정한다.
3.hanleInput
함수에 range.value
값을 가져오고 사용자에게도 보여주기 위해
inner.Text
를 사용하여 작성한다. 그후 form
태그에 addEventListener
를 작성한다.
from
태그에 이벤트를 submit
을 주게되면 클릭과 엔터가 동시에 입력된다.
form
태그에 이벤트를 등록할 때 주의할 점이 있다.
form
태그는 기본적으로 submit
을 실행하고 나면 리로드가 되기 때문에 내부 함수가 실행되지 않는다. 그래서 콜백에서 e.preventDefauit()
를 써서 기본동작인 리로드를 막아줘야 한다.
form.addEventListener('submit', (e)=>{
e.preventDefault();
});
addEventListener
의 첫번째 인자값을 반응할 event
를 넣어주고 두번째 인자는 event
발생시 실행될 함수를 기입한다.
addEventListener
의 두번째 인자에 playgame 이라는 함수를 넣었다. playgame 함수는const mcNumber = Math.floor(Math.random() * rangeVal + 1);
Math.floor
로 소숫점을 날려준다.input
의 value
를 받아와서 정의한다.input
의 value
는 사용자에게 문자열로 받아왔기 때문에parseInt()
라는 숫자형으로 만들어주는 메소드를 사용하여 조건을 완성시킨다.