用JS写个网页贪吃蛇游戏的代码是什么
Admin 2022-09-16 群英技术资讯 1302 次浏览
这篇主要是介绍“用JS写个网页贪吃蛇游戏的代码是什么”的内容了,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家解决用JS写个网页贪吃蛇游戏的代码是什么的问题,下面我们一起来了解看看吧。本文实例为大家分享了JavaScript实现网页贪吃蛇游戏的具体代码,供大家参考,具体内容如下
<!DOCTYPE html>
<html>
<head><title>贪吃蛇</title>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<script>
var canv=document.getElementById("canvas");
var ctx=canv.getContext("2d");
var score=0;
//定义一个方块的构造函数
var Block=function(col,row,size)
{
this.col=col;
this.row=row;
this.size=size;
};
//定义Block函数的原型方法draw;
Block.prototype.draw =function()
{
ctx.fillRect(this.col*this.size,this.row*this.size,this.size,this.size)
}
//定义对象蛇
var snake ={
body:[
new Block(20,20,10),
new Block(20,21,10),
new Block(20,22,10)
],
direction:"right",
};
//定义画蛇的函数
snake.draw=function()
{
for(var i=0;i<this.body.length;i++)
{
this.body[i].draw();
}
};
snake.move = function()
{
var head = this.body[0];
if(snake.direction=="right")
{
var newhead=new Block(head.col+1,head.row,head.size)
}
if(snake.direction =="left")
{
var newhead = new Block(head.col-1,head.row,head.size);
}
if(snake.direction=="up")
{
var newhead=new Block(head.col,head.row-1,head.size)
}
if(snake.direction=="down")
{
var newhead=new Block(head.col,head.row+1,head.size)
}
if(newhead.col<0 || newhead.col>39 )
{
clearInterval(intervalId);
gameover();
}
if(newhead.row<0 || newhead.row>39 )
{
clearInterval(intervalId);
gameover();
}
for(var i=0;i<this.body.length;i++)
{
if(this.body[i].col==newhead.col &&this.body[i].row==newhead.row)
{
clearInterval(intervalId);
gameover();
}
}
this.body.unshift(newhead);
if(newhead.col==apple.posX &&newhead.row==apple.posY)
{
score=score+100;
while(true)
{
var checkApple =false;
apple.posX=Math.floor(Math.random()*40);
apple.posY=Math.floor(Math.random()*40);
for(var i=0; i<this.body.length;i++)
{
if(this.body[i].col==apple.posX &&this.body[i].row==apple.posY)
checkApple=true;
}
if(!checkApple)
break;
}
}
else{
this.body.pop();
}
};
//创建苹果对象
var apple={
posX:Math.floor(Math.random()*40),
posY:Math.floor(Math.random()*40),
sizeR:5
}
//画苹果函数
apple.draw=function()
{
ctx.fillStyle="Green";
ctx.beginPath();
ctx.arc(this.posX*10+5,this.posY*10+5,5,0,Math.PI*2,false);
ctx.fill();
ctx.fillStyle="Black";
};
//结束
var gameover=function()
{
ctx.font="60px Comic Sans MS";
ctx.textAlign="center";
ctx.textBaseline="middle";
ctx.fillText("GAME OVER!",200,200)
};
//定时功能
var intervalId=setInterval (function ()
{
ctx.clearRect(0,0,400,400);
ctx.font="20px Arial";
ctx.fillText("Score:"+score,5,15);
snake.draw();
snake.move();
apple.draw();
ctx.strokeRect(0,0,400,400);
},200);
//贪吃蛇的按键控制
$("body").keydown(function(event)
{
console.log(event.keyCode);
if(event.keyCode==37 &&snake.direction!="right")
{
snake.direction="left";
}
if(event.keyCode==38 &&snake.direction!="down")
{
snake.direction="up";
}
if(event.keyCode==39 &&snake.direction!="left")
{
snake.direction="right";
}
if(event.keyCode==40 &&snake.direction!="up")
{
snake.direction="down";
}
}
);
</script>
</body>
</html>

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了如何使用vue3打造一个物料库,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
目录vue数据字典取键值vue项目的字典问题在utils中写一个dict.js的文件在main.js中引用刚才封装好的getDict方法之后我们就可以在系统中使用vue数据字典取键值首先:项目里的数据字典路由已经配好进入项目页面引入数据字典import { getTypeValue } from @/api/dict/
我们在浏览网站时,经常会看到滚动广告,那么这是怎么样实现的呢?这篇文章就给大家介绍一下jquery实现上下滚动的效果,文章中有详细的代码示例,对此感兴趣的朋友就继续往下看吧。
跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据,下面这篇文章主要给大家介绍了关于VUE跨域详解以及常用解决跨域的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
用JS怎么写个画板功能?对于画板功能,我们比较常见是电子教室里的电子黑板,能够经常画画和签字操作,那么我们想要用JS来实现要怎么做呢?
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008