html5 js 贪吃蛇游戏(基于面向对象)
来源:互联网 发布:淘宝朝鲜族冷面的做法 编辑:程序博客网 时间:2024/04/28 02:15
其实严格意义上也不算太面向对象
初学js的话还是写写这类的回收或很大的!
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js小游戏之贪吃蛇</title>
<!--作者:yueyong
如有什么错误请留言,或者联系qq:1397604589 一起探讨
初学js 希望可以一起进步-->
<style>div{margin:0 auto;text-align:center;} #mcanvas { border:2px solid #0F6;display:block;margin:0 auto;}</style> </head> <body> <div id="instruction"> <p style="font-size:18px;color:#03C;">分别由键盘的上下左右来控制蛇的移动方向</p> </div> <div id="main"> </div> <script type="text/javascript"> var canvas = document.createElement('canvas'); canvas.id = "mcanvas";canvas.width='800';canvas.height='600';document.body.appendChild(canvas); var ctx=canvas.getContext('2d'); var foods var snakes//放食物和蛇的数组 //初始化 function foodinit(x,y) //x,y代表坐标 { var object=new Object(); object.x=x; object.y=y; ctx.fillStyle='red'; ctx.fillRect(x,y,10,10); ctx.strokeStyle='#000000'; ctx.strokeRect(x,y,10,10);return object;}//蛇身function snakeinit(x,y){var object=new Object();object.x=x;object.y=y;ctx.fillStyle='blue';ctx.fillRect(x,y,10,10);ctx.strokeStyle='#000000';ctx.strokeRect(x,y,10,10);return object;}//蛇头function snakeinith(x,y){var object=new Object();object.x=x;object.y=y;ctx.fillStyle='red';ctx.fillRect(x,y,10,10);ctx.strokeStyle='#000000';ctx.strokeRect(x,y,10,10);return object;}//画蛇function sinit(x,y,len){x=parseInt(x);y=parseInt(y);var snake=snakeinith(x,y);x=x-10;for(var i=1;i<len;i++){var snake=snakeinit(x,y);snakes.push(snake);x=x-10;}}function makesnake(x,y,length,speed){this.x=x;this.y=y;this.len=length;this.dir='R';this.snakex=x;this.snakey=y;var head; //蛇头var last;//蛇尾var odir;sinit(snakex,snakey,len);document.onkeydown=function movedir(e) {odir=dir;var code=0;var e=e||event;code=e.keyCode||e.which||e.charCode; switch(code) { case 37: dir="L"; break; case 38: dir="U"; break; case 39: dir="R";break; case 40: dir="D"; break; } } //移动蛇 function m() { if(snakes[0].x+10>canvas.width+5||snakes[0].x<0||snakes[0].y<0||snakes[0].y+10>canvas.height+5) {over();return; //游戏结束 } else {if(dir=='R'){ head=snakeinith(snakes[0].x+10,snakes[0].y);snakeinit(snakes[0].x,snakes[0].y); }else if(dir=='L'){ head=snakeinith(snakes[0].x-10,snakes[0].y);snakeinit(snakes[0].x,snakes[0].y); }else if(dir=='D'){ head=snakeinith(snakes[0].x,snakes[0].y+10);snakeinit(snakes[0].x,snakes[0].y); } else if(dir=='U') { head=snakeinith(snakes[0].x,snakes[0].y-10);snakeinit(snakes[0].x,snakes[0].y); } if(snakes[1].x==head.x&&snakes[1].y==head.y) { dir=odir; if(dir=='R'){head=snakeinith(snakes[0].x+10,snakes[0].y);}else if(dir=='L'){head=snakeinith(snakes[0].x-10,snakes[0].y); }else if(dir=='D'){head=snakeinith(snakes[0].x,snakes[0].y+10); } else if(dir=='U') {head=snakeinith(snakes[0].x,snakes[0].y-10); }} snakes.unshift(head); last=snakes[len]; clear(last.x,last.y); snakes.pop(); } //判断食物是否和蛇头相撞 for (var i = 0;i<foods.length; i++) { if(foods[i].x == snakes[0].x&&foods[i].y == snakes[0].y){foods.pop(); makefood(); var tail=snakeinit(last.x,last.y); snakes.push(tail); len++; clearInterval(snake_interval); if(speed>20) { speed=speed-8; snake_interval=setInterval(m,speed); } // } } for(var i=2;i<snakes.length;i++) {if(snakes[0].x==snakes[i].x&&snakes[0].y==snakes[i].y){alert("撞到自己了!");}} } snake_interval=setInterval(m,speed); }//生成地图function map(){ctx.fillStyle='#000000';ctx.fillRect(0,0,canvas.width,canvas.height);} //生成食物function makefood(){var x=parseInt(canvas.width/10*Math.random())*10;var y=parseInt(canvas.height/10*Math.random())*10;var food=new foodinit(x,y);foods.push(food);}//清除function clear(x,y){ctx.fillStyle='#000000';ctx.strokeStyle='#000000';ctx.strokeRect(x,y,10,10);ctx.fillRect(x,y,10,10);}function star(){foods=new Array(); snakes=new Array();map();document.getElementById("star").setAttribute('style',"display:none;");document.getElementById("restar").setAttribute('style',"display:block;");document.onkeydown=function movedir(e) {var code=0;var e=e||event;code=e.keyCode||e.which||e.charCode; if(code!=0) {makefood ();var x=(40/canvas.width)*canvas.width;makesnake(x,x,3,100);} } }function over(){clearInterval(snake_interval);alert("游戏结束!");}function restar(){clearInterval(snake_interval);foods=new Array(); snakes=new Array();map();//document.getElementById("star").setAttribute('style',"display:none;");document.onkeydown=function movedir(e) {var code=0;var e=e||event;code=e.keyCode||e.which||e.charCode; if(code!=0) {makefood ();var x=(40/canvas.width)*canvas.width;makesnake(x,x,3,100);} } }</script><div id="star" style="display:block;"> <button type="button" onClick="star();">开始游戏</button></div><div id="restar" style="display:none;"> <button type="button" onClick="restar();">重新开始</button></div> </body> </html>
阅读全文
1 0
- html5 js 贪吃蛇游戏(基于面向对象)
- 一个基于HTML5的canvas的js面向对象贪吃蛇
- 基于js面向对象和canvas动画实现贪吃蛇游戏
- js贪吃蛇,面向对象
- JS 面向对象版 贪吃蛇
- 基于HTML5+bootstrap实现类似贪吃蛇游戏
- html5+js 贪吃蛇
- HTML5 + js 贪吃蛇游戏设计与实现
- 以前写的一个面向对象的贪吃蛇游戏
- js 贪吃蛇游戏
- JS贪吃蛇游戏
- JS游戏贪吃蛇
- html5&javascript贪吃蛇游戏
- html5&javascript贪吃蛇游戏
- HTML5游戏源码《贪吃蛇》
- 贪吃蛇源码解析(面向对象)
- 面向对象之贪吃蛇
- js贪吃蛇游戏代码
- 从Git仓库中恢复已删除的分支、文件或丢失的commit
- 文章标题
- Webview内存泄漏与WebViewCallback: Unable to create JsDialog without an Activity
- 古文观止卷七_陋室銘_劉禹錫
- HDU
- html5 js 贪吃蛇游戏(基于面向对象)
- 数据库设计三大范式
- javascript的基础
- python中随机输入数字再排序
- Android Wi-Fi AP/STA mode support 1x1 or 2x2
- 42-反转单词顺序/左旋转字符串
- 使用反向传播算法(back propagation)训练多层神经网络
- oracle修改监听端口
- 数据科学大作业全记录---weka的实验比较