찾다
웹 프론트엔드JS 튜토리얼JavaScript 두더지 잡기 게임 코드 설명_Game Entertainment

데모 주소: http://demo.jb51.net/js/mouse/index.html
패키지 다운로드 주소http://www.jb51.net/jiaoben/32434.html
심심할 때 쓴 글입니다. 먼저 효과를 살펴보겠습니다(UI가 상대적으로 보기 흉합니다):
JavaScript 두더지 잡기 게임 코드 설명_Game Entertainment
설명: 빨간색 클릭은 100점, 파란색은 클릭합니다. 클릭하면 100점이 차감됩니다.

js를 사용하여 작은 게임을 작성하고 js 코드를 연습하고 싶습니다.
html 부분을 먼저 보세요:
html

코드를 복사하세요 코드는 다음과 같습니다.


#panel{높이:300px;너비:300px;배경:#ccc;margin:50px 0 0 200px;}
#panel ul{list-style:none; 디스플레이:블록;플로트: 왼쪽;마진:0;패딩:0;}
#panel li{display:block;float:left;width:100px;height:100px
overflow:hidden;position:relative ;text-align:center ;}
#panel lispan{display:block;position:relative;left:0;top:60px;
width:100px;height:40px; background:url(img/hole .gif) 0 -60px ;z-index:100;}


참고: 빨간색 클릭 점수 100 , 파란색 클릭수는 100점 100점 차감됩니다.






  • 스팬>





점수: 0
;카운트다운: 60

🎜>

js 부분: Gopher 클래스



코드 복사
코드는 다음과 같습니다

var Mouse = function(type){
//페이지에 추가된 두더지의 특정 dom 요소
this.mouse = null
//두더지의 수
this.num = -1;
//두더지가 숨어 있는 구멍의 번호
this.hole = -1
//초기화, 유형은 두더지 유형입니다. , 사용하기 쉬움 Bad
this.init(type);
}
Mouse.prototype = {
//마우스 유형, 좋음, 나쁨, 좋은 것, 나쁜 것 죽임
mousetype: {
"good": "img/good.gif",
"bad": "img/bad.gif",
"goodkill":"img/goodkill.gif",
" badkill":"img/badkill.gif"
},
//고퍼 초기화
init: function(type){
type = type || >var _this = this;//두더지의 DOM 요소 생성
this.mouse = document.createElement("div")
//두더지 유형
this .mouse.mousetype = type;
//확장형 - 살아 있는지 여부
this.mouse.islive =
this.mouse.style.cssText = 'width:75px;height: 100px;Background:url( ' this.mousetype[type] ');left:0;top:20px;
position:relative;margin:auto;cursor:pointer;';//마우스 클릭 바인딩 event
this.mouse.onclick = function(e){_this.beat(e);}
},
//두더지를 클릭했습니다
beat : function(e){
if( this.mouse.islive){
this.mouse.islive = false;
this.onbeat()
this.mouse.style.Background = "url(" this.mousetype[this .mouse.mousetype "kill"] ")";
}
},
//고퍼 애니메이션
animation: function(speed){
speed = speed == 'fast '?20 :speed == 'normal'?30:50;
var obj = this.mouse,ost = obj.style,oTop =parseInt(ost.top,10),cut=5,_this = this;
//두더지가 구멍에서 나오도록 하세요
var show = function(top){
top = top-cut
if(top >= -40){
ost. top = top 'px';
setTimeout(function(){show(top);},speed)
}
else
{
setTimeout(function(){hide(- 40) ;},speed*10);
}
}
//고퍼 숨기기
var hide = function(top){
top = top cut; top < ;= oTop){
ost.top = top 'px'
setTimeout(function(){hide(top);},speed)
}
else {
_this.reset();
}
}
show(oTop);
},
//고퍼가 구멍으로 돌아갈 때 재설정
reset: 함수 ( ){
this.mouse.islive =true;
this.mouse.style.Background = "url(" this.mousetype[this.mouse.mousetype] ")"
this.onend( ) ;
},
//확장 방법: 두더지 클릭
onbeat: function(){},
//확장 방법: 두더지 애니메이션 종료 후
onend: function( ){}
}


게임 논리를 제어하는 ​​게임 제어 클래스가 있습니다.



코드 복사
코드는 다음과 같습니다.

//게임 제어 클래스
var Game = {
//게임 시간, 1분
time: 61,
//Gopher 맵, 총 10개 중, 두 개는 나쁘다
mouseMap: {
1:'좋음',
2:'나쁨',
3:'좋음',
4:'좋음',
5 :'나쁨',
6:'좋음',
7:'나쁨',
8:'좋음',
9:'좋음',
10:'좋음'
},
//모든 햄스터 돔 요소
allMouse: [],
//현재 점수
nowScore: 0,
//현재 몇 개의 굴이 사용되고 있습니까? hasHole : {},
//현재 활성 상태인 두더지는 몇 개입니까?
hasMouse: {},
//페이지의 Burrow 컬렉션
lis: null,
//초기화 고퍼 및 굴
init: function(){
//페이지의 굴 컬렉션 가져오기
this.lis = document.getElementById('panel').getElementsByTagName('li'); _this = this;//10몰 초기화
for(var i=1;i var mouse = new Mouse(this.mouseMap[i] ; good'? 1:-1));
}
//고퍼 애니메이션 종료 이벤트 확장
mouse.onend = function(){
//굴에서 고퍼 제거
var li = _this.lis[this.hole];
li.removeChild(li.mouse.mouse);
li.mouse = null
//해당 굴과 두더지 지우기
_this.hasHole this.hole] = null;
_this.hasMouse[this.num] = null
}
this.allMouse.push(mouse);
} ,
/ /게임 점수 수정
changeScore: function(score){
this.nowScore = Score;
document.getElementById('score').innerHTML = this.nowScore; //게임 시작
start: function(){
if(this.time var _this = this
//랜덤 홀 번호
var ran; = parsInt(Math.random()*9,10);
while(this.hasHole[random]){
random = parsInt(Math.random()*9,10)
}
//임의의 마우스 번호
var randomMouse =parseInt(Math.random()*10,10);
while(this.hasMouse[randomMouse]){
randomMouse =parseInt(Math.random( )*10,10);
}
//구멍에 점 추가
this.allMouse[randomMouse].hole = random;
this.allMouse[randomMouse].
this.lis[random].appendChild(this.allMouse[randomMouse].mouse);
this.lis[random].mouse = this.allMouse[randomMouse]
this. .mouse.animation('normal');
//고퍼와 버로우 숫자를 기록합니다
this.hasHole[random] = 'true'
this.hasMouse[randomMouse] = ' true'; 🎜>setTimeout(function(){_this.start();},250);
},
//Countdown
startTime : function(){
this.time - = 1; 🎜>var _this = this;
document.getElementById('time').innerHTML = this.time
if(this.time > 0){
setTimeout(function() {_this.startTime ()},1000);
}
},
//게임 설정 재설정
reset : function(){
this.time = 61> this.allMouse = [ ];
this.nowScore = 0;
this.hasMouse = {};
this.lis = null;
}
}
//게임 시작 함수
function GameStart(){
if(Game.time > 0 && Game.time != 61){
alert(" 게임은 아직 끝나지 않았으며 다시 시작할 수 없습니다! ");
return;
}
Game.reset();
Game.init();
Game.start();
Game.startTime();
}

그렇습니다. 여전히 기능은 매우 간단합니다.
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구