快速业务通道

游戏《贪食蛇》的制作

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-11


这是个纯脚本的贪食蛇,仅供交流学习
点击浏览该文件
源文件

点击浏览该文件
贪食蛇的设计
首先明确制订基本的规则
1。蛇头不能咬蛇身--蛇头不能和蛇身发生碰撞,包括不能突然反方向运动
2。蛇头不能碰障碍--撞上就gameover,包括不能走出游戏区域
3。蛇吃了食物会增加长度,食物吃掉一个才会产生新的
4。蛇只有上下左右四个行走方向
根据规则,很快得出基本的程序模块结构
1。初始化,场景、障碍和基本的蛇(初始长度,初始行走方向)
2。在场景中放置食物,吃完一个再出现下一个,吃一个食物蛇身增加一节,食物不能和障碍重合 3。蛇的运动,一节跟一节
4。行走中检测蛇头不能和障碍、蛇身碰撞,也不能超出游戏区域
5。键盘的监听,控制蛇的运动,及改变游戏状态 好了,按照这个思路,一步步把游戏给建起来吧 下面这个是根据这个思路用纯脚本编制的贪食蛇,仅供学习交流,copy到主场景第一帧就ok了。 var sl=3; //蛇起始节
var wallnum=20; //障碍数
var sp=10;
var fx=sp;
var fy=0;
var en=0;
var go=false; //蛇是否还能走的标志
var turn=0;
var gameover=false; //游戏结束,重新初始化标志
//================================画方块函数
drawbox=function(obj,w,h,mycolor){
with(obj){
lineStyle(1,0,100);
beginFill(mycolor,100);
moveTo(0,0);
lineTo(w,0);
lineTo(w,h);
lineTo(0,h);
lineTo(0,0);
endFill();
}
}
//=================================画圆函数
drawcircle=function(obj,r,mycolor){
var rr,radius;
with(obj){
lineStyle(0,0,0);
beginFill(mycolor,100);
moveTo(2*r,r);
for(rr=1;rr<=36;rr++){
radius=rr*10*Math.PI/180;
lineTo(r*Math.cos(radius)+r, r*Math.sin(radius)+r);
};
endFill();
}
}
//=============================================================生成背景mc
_root.createEmptyMovieClip("bg",1);
drawbox(bg,500,300,0x0099cc);
bg._x=25;bg._y=30;
//=============================================================初始化函数
beginclear=function(){
for(i=0;ifx=sp;
fy=0;
en=0;
go=false;
//=================================产生随机的障碍物(实际的游戏制作中应该定义障碍,因为随机可能出现封闭的区域)
for(i=0;i_root.createEmptyMovieClip("wall"+i,10+i);
drawbox(this["wall"+i],20,20,0xcc3300);
this["wall"+i]._x=bg._x+20*random(25);this["wall"+i]._y=bg._y+20*(1+random(14));
}
//==================================产生初始的三节蛇
sl=3;
for(i=0;i_root.createEmptyMovieClip("sn"+i,100+i);
if(i>0){ rcolor=0xffff00} else {rcolor=0x99ffff};
drawcircle(this["sn"+i],4,rcolor);
this["sn"+i]._x=bg._x;this["sn"+i]._y=bg._y;
}
} beginclear(); //初始化场景
//================================================================蛇的运动及检测
onEnterFrame=function(){
if(go){ //是否还能动,能动就执行下面的
//--------------------
if(en==0){ //有没食物,没有就产生个食物
ex=bg._x+20*random(25);ey=bg._y+20*random(15);nowall=true;
for(i=0;iif(this["wall"+i].hitTest(ex+1,ey+1)) nowall=false;
}
if(nowall){
en=1;_root.createEmptyMovieClip("ee",1000); //放置食物,食物标志置1
drawcircle(ee,8,0x00ff00);drawbox(ee,4,4,0xff0000);ee._x=ex;ee._y=ey;
}
}
//--------------------蛇的移动,后一节跑前一节的位置上去,蛇头部向控制方向行走
for(j=sl-1;j>0;j--){
t=j-1;this["sn"+j]._x=this["sn"+t]._x;this["sn"+j]._y=this["sn"+t]._y;
}
sn0._x+=fx;sn0._y+=fy;
//--------------------如果食物被蛇头碰到,食物就消失,食物标志清

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号