操作方法:
按键盘上下左右或者WASD移动方向。
计分规则:
蛇身每增加一节,分数加10,在吃到下一个食物前每改变一次方向,减一分。
ps:分数可能会是负值{:4_105:}
HTML5标签canvas:
canvas 元素用于在网页上绘制图形。
在贪吃蛇中利用画布绘制背景网格:
//清空整个画布 ctx.clearRect(0,0,480,480); //绘制网格 for(var i=0;i<30;i++){ ctx.strokeStyle="#ccc";//线条颜色 ctx.beginPath(); //绘制横线 ctx.moveTo(0,i*width); ctx.lineTo(480,i*width); //绘制竖线 ctx.moveTo(i*width,0); ctx.lineTo(i*width,480); ctx.closePath(); ctx.stroke(); }
在贪吃蛇中利用画布绘制蛇身及食物:
//绘制蛇的身体 for(var i=0;i<snake.length;i++){ ctx.fillStyle="black";//填充颜色 //蛇的头部 if(i==snake.length-1){ ctx.fillStyle="red"; } ctx.beginPath(); ctx.rect(snake[i].x*width,snake[i].y*width,width,width); ctx.closePath(); ctx.fill(); ctx.stroke(); }
HTML5标签output:
output 元素用于不同类型的输出,比如计算或脚本输出:
<div> <output id="result" onforminput="resCalc()"></output> </div> <script> document.getElementById('result').value = score; </script>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html"> <meta name="Keywords" content="Html5"> <meta name="Desciption" content="贪吃蛇V1.0"> <meta name="Author" content="沙漠胡杨"> <meta name="Time" content="2015/4/14"> <title>贪吃蛇</title> <style type="text/css"> *{margin:0;padding:0;} body{font-size:12px;font-family:"微软雅黑";background:#CCC;} h1{font-size:36px;color:#fff;text-shadow:1px 1px 5px #000;margin:30px auto;text-align:center;position:relative;} #snakeCanvas{background:#fff;box-shadow:3px 3px 5px #666;margin:0 auto;display:block;} #score,#result{font-size:32px;color:#fff;text-shadow:1px 1px 5px #000;} #score{position:absolute;top:150px;right:300px;} #result{position:absolute;top:150px;right:240px;} </style> </head> <body> <h1>贪吃蛇游戏</h1> <div> <p id="score">得分:<p> <output id="result"></output> </div> <!--画布--> <canvas id="snakeCanvas" width="480" height="480"></canvas> </body> <script type="text/javascript"> /* 第一步:准备画布 1、分成N个方格,为每个小方格设定为16px*16px 30*30个 2、初始化一条蛇 3、初始化一个食物 第二步:实现动画 1、让蛇移动(监听键盘事件,上下左右或WASD控制方向) 2、捕捉食物(蛇身体增长,另外产生一个食物) 第三步:让蛇自动前行 */ var canvas=document.getElementById("snakeCanvas"); var ctx=canvas.getContext("2d");//画笔 var width=16; //移动速度 var speed=200; //计分 /*计分规则:蛇身每增加一节,分数加10,在吃到下一个食物前每改变一次方向,减一分*/ var score=0; document.getElementById('result').value = score; //蛇的身体 var snake=[]; //指定初始长度为6 var snakelen=6; //初始化 for(var i=0;i<snakelen;i++) { snake[i]=new Cell(i,0,-1); } var head=snake[snakelen-1]; //蛇的身体构成的元素,x坐标,y坐标,d方向:1左 -1右 2上 -2下 function Cell(x,y,d){ this.x=x; this.y=y; this.d=d; return this; } //食物对象 function Food(x,y){ this.x=x; this.y=y; return this; } //初始食物的出现位置 var foodX=Math.ceil(Math.random()*28+1); var foodY=Math.ceil(Math.random()*28+1); //定义食物 var food=new Food(foodX,foodY); //绘制游戏基本元素 function draw(){ //清空整个画布 ctx.clearRect(0,0,480,480); //绘制网格 for(var i=0;i<30;i++){ ctx.strokeStyle="#ccc";//线条颜色 ctx.beginPath(); //绘制横线 ctx.moveTo(0,i*width); ctx.lineTo(480,i*width); //绘制竖线 ctx.moveTo(i*width,0); ctx.lineTo(i*width,480); ctx.closePath(); ctx.stroke(); } //绘制蛇的身体 for(var i=0;i<snake.length;i++){ ctx.fillStyle="black";//填充颜色 //蛇的头部 if(i==snake.length-1){ ctx.fillStyle="red"; } ctx.beginPath(); ctx.rect(snake[i].x*width,snake[i].y*width,width,width); ctx.closePath(); ctx.fill(); ctx.stroke(); } //绘制食物 drawFood(); //判断是否吃到食物 if(head.x==food.x&&head.y==food.y){ //增加蛇身的长度 var newCell=new Cell(food.x,food.y,head.d); snake[snake.length]=newCell; head=newCell; //随机产生一个食物 initFood(); food=new Food(foodX,foodY); drawFood(); score=score+10; document.getElementById('result').value = score; } } //初始化食物的x,y坐标,随机位置 function initFood(){ //Math.random()返回一个0-1之间的随机数 //Math.ceil()向上取整 foodX=Math.ceil(Math.random()*28+1); foodY=Math.ceil(Math.random()*28+1); //判断是否跟蛇的身体有重叠 for(var i=0;i<snake.length;i++){ if(snake[i].x==foodX&&snake[i].y==foodY){ initFood();//递归产生食物坐标 } } } //绘制食物 function drawFood(){ ctx.fillStyle="green"; ctx.beginPath(); ctx.rect(food.x*width,food.y*width,width,width); ctx.closePath(); ctx.fill(); } draw(); //监听键盘的事件 document.onkeydown=function(e){ //keyCode 上38下40左37右39 //W87 S83 A65 D68 var keyCode=e.keyCode; var direction; //alert(keyCode); switch(keyCode){ case 38: case 87: direction=2;break;//上 case 40: case 83: direction=-2;break;//下 case 37: case 65: direction=1;break;//左 case 39: case 68: direction=-1;break;//右 default:break; } //控制蛇的移动方向 if(head.d+direction!=0&&(keyCode==37||keyCode==38||keyCode==39||keyCode==40||keyCode==65||keyCode==68||keyCode==37||keyCode==83||keyCode==87)){ if(head.d!=direction){score--;document.getElementById('result').value = score; } moveSnake(direction); } } //移动蛇的方法 function moveSnake(direction){ var newSnake=[]; var newCell=new Cell(head.x,head.y,head.d); //循环除开头以外的身体部分 for(var i=0;i<snake.length;i++){ newSnake[i-1]=snake[i] } newSnake[snake.length-1]=newCell; newCell.d=direction; switch(direction){ case 2: newCell.y--;break;//上 case -2: newCell.y++;break;//下 case 1: newCell.x--;break;//左 case -1: newCell.x++;break;//右 } snake=newSnake; head=snake[snake.length-1]; checkDeath(); draw(); } //自动移动 function moveClock(){ moveSnake(head.d); } setInterval(moveClock,speed); //判断游戏是否结束 function checkDeath(){ //判断是否出边界 if(head.x>=30||head.y>=30||head.x<0||head.y<0){ alert("很遗憾,您输了!" + "\n" + "您的得分为:"+"\n"+score); window.location.reload(); } //判断是否碰到自己 for(var i=0;i<snake.length-2;i++){ if(head.x==snake[i].x&&head.y==snake[i].y){ alert("很遗憾,您输了!" + "\n" + "您的得分为:"+"\n"+score); window.location.reload(); } } } </script> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html"> <meta name="Keywords" content="Html5"> <meta name="Desciption" content="贪吃蛇V1.0"> <meta name="Author" content="沙漠胡杨"> <meta name="Time" content="2015/4/14"> <title>贪吃蛇</title> <style type="text/css"> *{margin:0;padding:0;} body{font-size:12px;font-family:"微软雅黑";background:#CCC;} h1{font-size:36px;color:#fff;text-shadow:1px 1px 5px #000;margin:30px auto;text-align:center;position:relative;} #snakeCanvas{background:#fff;box-shadow:3px 3px 5px #666;margin:0 auto;display:block;} #score,#result{font-size:32px;color:#fff;text-shadow:1px 1px 5px #000;} #score{position:absolute;top:150px;right:300px;} #result{position:absolute;top:150px;right:240px;} </style> </head> <body> <h1>贪吃蛇游戏</h1> <div> <p id="score">得分:<p> <output id="result"></output> </div> <!--画布--> <canvas id="snakeCanvas" width="480" height="480"></canvas> </body> <script type="text/javascript"> /* 第一步:准备画布 1、分成N个方格,为每个小方格设定为16px*16px 30*30个 2、初始化一条蛇 3、初始化一个食物 第二步:实现动画 1、让蛇移动(监听键盘事件,上下左右或WASD控制方向) 2、捕捉食物(蛇身体增长,另外产生一个食物) 第三步:让蛇自动前行 */ var canvas=document.getElementById("snakeCanvas"); var ctx=canvas.getContext("2d");//画笔 var width=16; //移动速度 var speed=200; //计分 /*计分规则:蛇身每增加一节,分数加10,在吃到下一个食物前每改变一次方向,减一分*/ var score=0; document.getElementById('result').value = score; //蛇的身体 var snake=[]; //指定初始长度为6 var snakelen=6; //初始化 for(var i=0;i<snakelen;i++) { snake[i]=new Cell(i,0,-1); } var head=snake[snakelen-1]; //蛇的身体构成的元素,x坐标,y坐标,d方向:1左 -1右 2上 -2下 function Cell(x,y,d){ this.x=x; this.y=y; this.d=d; return this; } //食物对象 function Food(x,y){ this.x=x; this.y=y; return this; } //初始食物的出现位置 var foodX=Math.ceil(Math.random()*28+1); var foodY=Math.ceil(Math.random()*28+1); //定义食物 var food=new Food(foodX,foodY); //绘制游戏基本元素 function draw(){ //清空整个画布 ctx.clearRect(0,0,480,480); //绘制网格 for(var i=0;i<30;i++){ ctx.strokeStyle="#ccc";//线条颜色 ctx.beginPath(); //绘制横线 ctx.moveTo(0,i*width); ctx.lineTo(480,i*width); //绘制竖线 ctx.moveTo(i*width,0); ctx.lineTo(i*width,480); ctx.closePath(); ctx.stroke(); } //绘制蛇的身体 for(var i=0;i<snake.length;i++){ ctx.fillStyle="black";//填充颜色 //蛇的头部 if(i==snake.length-1){ ctx.fillStyle="red"; } ctx.beginPath(); ctx.rect(snake[i].x*width,snake[i].y*width,width,width); ctx.closePath(); ctx.fill(); ctx.stroke(); } //绘制食物 drawFood(); //判断是否吃到食物 if(head.x==food.x&&head.y==food.y){ //增加蛇身的长度 var newCell=new Cell(food.x,food.y,head.d); snake[snake.length]=newCell; head=newCell; //随机产生一个食物 initFood(); food=new Food(foodX,foodY); drawFood(); score=score+10; document.getElementById('result').value = score; } } //初始化食物的x,y坐标,随机位置 function initFood(){ //Math.random()返回一个0-1之间的随机数 //Math.ceil()向上取整 foodX=Math.ceil(Math.random()*28+1); foodY=Math.ceil(Math.random()*28+1); //判断是否跟蛇的身体有重叠 for(var i=0;i<snake.length;i++){ if(snake[i].x==foodX&&snake[i].y==foodY){ initFood();//递归产生食物坐标 } } } //绘制食物 function drawFood(){ ctx.fillStyle="green"; ctx.beginPath(); ctx.rect(food.x*width,food.y*width,width,width); ctx.closePath(); ctx.fill(); } draw(); //监听键盘的事件 document.onkeydown=function(e){ //keyCode 上38下40左37右39 //W87 S83 A65 D68 var keyCode=e.keyCode; var direction; //alert(keyCode); switch(keyCode){ case 38: case 87: direction=2;break;//上 case 40: case 83: direction=-2;break;//下 case 37: case 65: direction=1;break;//左 case 39: case 68: direction=-1;break;//右 default:break; } //控制蛇的移动方向 if(head.d+direction!=0&&(keyCode==37||keyCode==38||keyCode==39||keyCode==40||keyCode==65||keyCode==68||keyCode==37||keyCode==83||keyCode==87)){ if(head.d!=direction){score--;document.getElementById('result').value = score; } moveSnake(direction); } } //移动蛇的方法 function moveSnake(direction){ var newSnake=[]; var newCell=new Cell(head.x,head.y,head.d); //循环除开头以外的身体部分 for(var i=0;i<snake.length;i++){ newSnake[i-1]=snake[i] } newSnake[snake.length-1]=newCell; newCell.d=direction; switch(direction){ case 2: newCell.y--;break;//上 case -2: newCell.y++;break;//下 case 1: newCell.x--;break;//左 case -1: newCell.x++;break;//右 } snake=newSnake; head=snake[snake.length-1]; checkDeath(); draw(); } //自动移动 function moveClock(){ moveSnake(head.d); } setInterval(moveClock,speed); //判断游戏是否结束 function checkDeath(){ //判断是否出边界 if(head.x>=30||head.y>=30||head.x<0||head.y<0){ alert("很遗憾,您输了!" + "\n" + "您的得分为:"+"\n"+score); window.location.reload(); } //判断是否碰到自己 for(var i=0;i<snake.length-2;i++){ if(head.x==snake[i].x&&head.y==snake[i].y){ alert("很遗憾,您输了!" + "\n" + "您的得分为:"+"\n"+score); window.location.reload(); } } } </script> </html>
以上是html5中的output标签和canvas标签实现贪吃蛇的详细内容。更多信息请关注PHP中文网其他相关文章!

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML的作用是通过标签和属性定义网页的结构和内容。1.HTML通过到、等标签组织内容,使其易于阅读和理解。2.使用语义化标签如、等增强可访问性和SEO。3.优化HTML代码可以提高网页加载速度和用户体验。

htmlisaspecifictypefodyfocusedonstructuringwebcontent,而“代码” badlyLyCludEslanguagesLikeLikejavascriptandPytyPythonForFunctionality.1)htmldefineswebpagertuctureduseTags.2)“代码”代码“ code” code code code codeSpassSesseseseseseseseAwiderRangeLangeLangeforLageforLogageforLogicIctInterract

HTML、CSS和JavaScript是Web开发的三大支柱。1.HTML定义网页结构,使用标签如、等。2.CSS控制网页样式,使用选择器和属性如color、font-size等。3.JavaScript实现动态效果和交互,通过事件监听和DOM操作。

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

HTML适合初学者学习,因为它简单易学且能快速看到成果。1)HTML的学习曲线平缓,易于上手。2)只需掌握基本标签即可开始创建网页。3)灵活性高,可与CSS和JavaScript结合使用。4)丰富的学习资源和现代工具支持学习过程。

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

如何设计菜单中的虚线分割效果?在设计菜单时,菜名和价格的左右对齐通常不难实现,但中间的虚线或点如何...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

记事本++7.3.1
好用且免费的代码编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境