欢迎来到天天文库
浏览记录
ID:35465575
大小:74.45 KB
页数:4页
时间:2019-03-25
《贪食蛇游戏实现思路》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、贪食蛇游戏实现思路1•游戏状态参数定义vargameLoop;var型旦I辿]]I;//療戏区域敗急誓vargameHeight;//滋我区域勿髙度varsuagdafc;//保存蛇的数组varfood={nxn::-小;//食物口方块的大小varpx;varleft=37;varup=38;varright=39;vardown=40;//游戏的控制蛇的方向varleft=37;varup=38;varright=39;//蛇头的方商vardown=40;vard;//游戏开关varfalgD
2、;2•编写初始化方法,初始化游戏里面的必要数据init();//游戏初始化数据的方法functioninit()gameWidth
3、=cl.width;gameHeight=c2・height;snakeArry^=^
4、[];px=20;falgD=false;d=right;initSnakeArry(3);//初始化蛇的数据initFood();piay();2.1编写initSnakeArry函数,初始化蛇数组'口初始化蛇functioninitSnakeArry(Length){for(
5、vari=length;i>0;i•・){snakeArry.push({"xn:i,"y":0});}}■••2.2编写初始化食物的方法//初始化食物functioninitFood(){varfl=false;do{food["x"]=Math.floor(
6、gameWidth
7、/px*Math.random());food["y"]=Math.floor(gameHeight/px*Math.random());for(vari=0;i8、ood・x==snakeArry[i]・x&&food・y==snakeArry[i]・y){f1=true;}}}while(fl);}3•编写开始游戏的方法,调用打印蛇和食物的方法,接下来编写蛇移动的方法。functionplay()//很重要的代码,需要给游戏区域绘制snakeArry[i]・y*pxJpx-ctx.fillstyle='white';ctx.fillRect(0^0,gameWidthgameHeight);ctx.strokeStyle=1black1;ctx.stro9、keRect(0,0,gameWidth,gameHeight);paintSnake();//打印蛇到区域游戏paintCell(food.x,food・y);//为r印食物到游戏区域moveSnake();//移动吃}functionpaintCell(x’y){ctx.fillStyle='red';ctx.fillRect(x*px,y*px,px-1,px-1);}functionpaintSnake(){ctx.fillstyle='blue';for(variinsnakeArry10、){ctx.fillRect(snakeArry[i].x*px,px-1);}}使用定时器才能使蛇动起来gameLoop=setInterval(play^100);.Z/十宀一丄r4厶—A-..亠3.1编写蛇移动的方法functionmoveSnake(){falgD=false;//得到蛇头的位置varhead={"x":snakeAmy[0]:snakeAnry[0]・y};if(d==left)head・x・・;elseif(d==right)head.x++;elseif(d==up11、)head.;elseif(d==down)headpop();}if(head.x==・212、13、head.x=gameWidth/px14、15、head.y==-1116、head•y==gameHeight/px){if(confirm('游戏结束了,是否继续’)){return;}else{clearlnterval(gameLoop);return;}}snakeAr17、ry.unshift(head);falgD=true;}4.1键盘按下去触发事件//键盘事件functionchangeD(e){if(falgD){if(e.keyCode==left&&d!=right)d=left;elseif(e.keyCode==right&&d!=left)d=right;elseif(e.keyCode==up&&d!=down)d=up;elseif(e
8、ood・x==snakeArry[i]・x&&food・y==snakeArry[i]・y){f1=true;}}}while(fl);}3•编写开始游戏的方法,调用打印蛇和食物的方法,接下来编写蛇移动的方法。functionplay()//很重要的代码,需要给游戏区域绘制snakeArry[i]・y*pxJpx-ctx.fillstyle='white';ctx.fillRect(0^0,gameWidthgameHeight);ctx.strokeStyle=1black1;ctx.stro
9、keRect(0,0,gameWidth,gameHeight);paintSnake();//打印蛇到区域游戏paintCell(food.x,food・y);//为r印食物到游戏区域moveSnake();//移动吃}functionpaintCell(x’y){ctx.fillStyle='red';ctx.fillRect(x*px,y*px,px-1,px-1);}functionpaintSnake(){ctx.fillstyle='blue';for(variinsnakeArry
10、){ctx.fillRect(snakeArry[i].x*px,px-1);}}使用定时器才能使蛇动起来gameLoop=setInterval(play^100);.Z/十宀一丄r4厶—A-..亠3.1编写蛇移动的方法functionmoveSnake(){falgD=false;//得到蛇头的位置varhead={"x":snakeAmy[0]:snakeAnry[0]・y};if(d==left)head・x・・;elseif(d==right)head.x++;elseif(d==up
11、)head.;elseif(d==down)headpop();}if(head.x==・2
12、
13、head.x=gameWidth/px
14、
15、head.y==-11
16、head•y==gameHeight/px){if(confirm('游戏结束了,是否继续’)){return;}else{clearlnterval(gameLoop);return;}}snakeAr
17、ry.unshift(head);falgD=true;}4.1键盘按下去触发事件//键盘事件functionchangeD(e){if(falgD){if(e.keyCode==left&&d!=right)d=left;elseif(e.keyCode==right&&d!=left)d=right;elseif(e.keyCode==up&&d!=down)d=up;elseif(e
此文档下载收益归作者所有