원생 js 가 실현 한 금 산 타자 미니 게임(인 스 턴 스 코드 상세 설명)
관심 있 는 거 있 으 면 Js 소스 한번 볼 게 요.
//
var board = {
dom: document.getElementById("score"),
maxLost: 3, //
lost: 0, //
score: 0, //
render: function() {
//
this.dom.innerHTML =
"<p> :" +
this.score +
"</p><p> :" +
this.lost +
" / " +
this.maxLost +
"</p>";
},
//
addLost: function() {
if (this.lost === this.maxLost) {
return; //
}
this.lost++;
if (this.lost === this.maxLost) {
//
game.gameOver();
}
this.render();
},
reset: function() {
this.lost = 0;
this.score = 0;
this.render();
},
//
addScore: function(number) {
if (this.lost === this.maxLost) {
//
return;
}
this.score += number;
this.render();
}
};
board.render();
var letters = []; // ,
//
var divContainer = document.getElementById("letter-container");
/**
* ,
*/
function createLetter() {
// img
var img = document.createElement("img");
img.className = "letter";
divContainer.appendChild(img);
// src
var charNumber = getRandom(65, 65 + 26); // ASCII
var char = String.fromCharCode(charNumber);
img.src = "img/letter/" + char + ".png";
//left
var left = getRandom(0, divContainer.clientWidth - img.width);
img.style.left = left + "px";
var letter = {
dom: img,
char: char,
left: left,
top: -img.height, // top
speed: getRandom(100, 500), // : /
render: function() {
this.dom.style.top = this.top + "px";
},
// ,
// duration :
move: function(duration) {
var dis = duration * this.speed; //
this.top += dis;
this.render();
},
kill: function() {
//
//
var index = letters.indexOf(this); //
if (index >= 0) {
letters.splice(index, 1);
}
// dom
this.dom.remove();
}
};
letter.render();
letters.push(letter);
}
// ( )
function getRandom(min, max) {
// Math.random() 0~1
// Math.random() * (max - min) 0 ~ (max - min)
// Math.random() * (max - min) + min min ~ max
return Math.floor(Math.random() * (max - min) + min);
}
// ,
var game = {
timerProduce: null, // timerid
timerMove: null, // timerid
isOver: false,
// , ,
startProduce: function() {
if (this.timerProduce) {
return; // ,
}
this.timerProduce = setInterval(createLetter, 500);
},
//
stopProduce: function() {
clearInterval(this.timerProduce);
this.timerProduce = null;
},
//
startMove: function() {
if (this.timerMove) {
return;
}
var duration = 0.016; // ,
this.timerMove = setInterval(function() {
for (var i = 0; i < letters.length; i++) {
var letter = letters[i]; //
letter.move(duration);
//
if (letter.top >= divContainer.clientHeight) {
letter.kill();
i--;
//
board.addLost();
}
}
}, duration * 1000);
},
//
stopMove: function() {
clearInterval(this.timerMove);
this.timerMove = null;
},
gameOver: function() {
this.stopMove();
this.stopProduce();
document.getElementById("over").style.display = "block";
this.isOver = true;
},
restart: function() {
//
for (var i = 0; i < letters.length; i++) {
var letter = letters[i];
letter.kill();
i--;
}
this.startMove();
this.startProduce();
board.reset();
this.isOver = false;
document.getElementById("over").style.display = "none";
}
};
game.startProduce();
game.startMove();
//
window.onkeydown = function(e) {
if (game.isOver) {
return;
}
var key = e.key.toUpperCase();
//
for (var i = 0; i < letters.length; i++) {
var letter = letters[i];
if (letter.char === key) {
letter.kill();
board.addScore(10);
return; //
}
}
};
js 의 대상 프로 그래 밍 만 사용 하면 귀여운 금 산 타자 게임 이 이 루어 집 니 다.총결산
여기 서 원생 js 가 실현 한 금 산 타자 게임 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 js 금 산 타자 게임 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.