用户名: 密码: 验证码: QQ--程序群:31736530 动画群:38836599
闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   有意向写收费精品教程的朋友,请联系本站合作
当前位置 :首页>flash教程>Flash应用开发>列表

面向对象法制作贪吃蛇小游戏

[来源:闪吧 | 作者:ladeng6666  | 时间:2008-08-27 | 点击:  | 收藏本文  【 】]
这不能算是一个教程,只是我学习oop过程中的一个总结,有不对的地方,还请各位大侠多多指正!

 

一、
面向过程的编程


如果你以前做过贪吃蛇,可以跳过这一节,直接看
oop的写法。

起初的想法是:在库里有3MC,分别是head(蛇头),body(蛇关节),wall(墙)。

游戏开始时:先载入一个head,然后有一个从1snakeLengthfor循环,载入snakeLengthbody,分别命名为body1body2…”body”+snakeLength,另外还要载入一圈围墙wallwall的个数要视舞台的长宽而定了。

游戏进行时:
head的移动通过单位改变它的坐标就可以了,这个单位也就是单位位移,即head的长宽,body的移动,可以设两个值,oldXoldY,来记录上一个位置的坐标,作为下一个body的目标坐标,也就是,head走一步,body1走到headold坐标,body2走到body1old坐标依此类推。蛇的移动,我们用setInterval来实现,因为我们可以用第二个参数来改变设的移动速度,也就可以做到level越高,速度越快,以增加游戏的难度。

这是一个很好的想法,可是在动手作的过程中,问题就暴露出来了。蛇头吃到墙和body应该是gameOver的,应该怎么实现呢?你可能会想到hitTest,好的,我们来设想一下,假设蛇头为长宽均为20个像素的正方形,舞台为400*400,那么一圈围墙将会有20+20+18+18=76wall,再有10body,那么蛇头没走一步,要进行这样的碰撞检测。首先是一个10次的循环hitTest”body”+i);然后是26次循环hitTest”wall”+i);这仅仅是只有一圈围墙的空白围墙,如果再加上一些障碍墙呢?那么很容易就能有100次以上的循环hitTest,对于现在的计算机来说,应该算不了什么,的是你怎么给他们命名呢?for循环”wall”+i?障碍物呢?障碍物的位置坐标怎么记录?另外还有一个很重要的东西,food,贪吃蛇嘛,肯定要有东西吃,检测碰撞后,我们要判断碰到的是什么,如果是food应该怎么加分,碰到wall后怎么gameOver?,游戏过关怎么更换地图?当想到这些问题的时候,你会发现,自己的代码写的乱七八糟,当你试着修改的时候,可能是牵一发而动全身。

面对这些问题,我们选择了面向对象的编程,即
OOP

二、
面向对象的编程

面向对象的编程就是将headbodymap写到单独的类文件里。我们在实例化这些类的时候,就产生了对象,Movieclip就是一个类,当我们新建一个mc的时候,就是新建了一个对象,它有自己的属性和方法闲话说多了,谈游戏。

第一步:我们不考虑怎么让
head走,而是想怎么生成一个地图,贪吃蛇是一个区块游戏,所以我们把地图方到外部的文件的二维数组里,方便维护和修改,根据数组来attach库里的tile,这个数组里不同的flag值,代表不同的东西,比如:0代表空,1代表head2代表body3代表food4代表wall。而库里的tile里,不同帧里有不同的东西,我们只要根据flag跳到相应的帧里就可以了,然后执行相关的加分,gameOver等操作,当蛇移动的时候,我们只需要修改目标坐标的flag值就可以了。
   
首先、新建地图,我们用一个
Map类来完成,它应该有这样的功能:
        1根据mymap数组新建地图,createMap(mymap);
        2建立地图的过程中,应该能根据flagtile跳到相应的帧,setObjflag);
        3当蛇吃到food后,能随机的生成下一个foodrandomFood();
   
然后、我们新建一个
Body类,他的功能如下:
        1跟这上自己的上一节(father),往前走,gofather);
   
最后、我们新建一个
Head类,他是Body的子类,功能大致如下:
        1自动的往前走,并返回下一目标位置的flag,以便游戏根据flag进行相应的操作,goNext();
        2根据键盘按下的key来设置速度stepsetStepkey);
   
到这里,我们需要的类都建好了,下一步,就是在
fla文件里,将他们连起来了。

第二步:

首先、我们新建一个
map类,用map类的createMap方法来新建一个地图。

然后、再新建一个蛇头
head,接着是一个body数组,用来存放蛇关节,数组的每个元素都是一个body类。

最后、我们就是用一个
setInterval,让蛇头和body不断的移动,然后,我们就开始游戏了。

附件: oop贪吃蛇.rar
文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:flash里键盘控制人物行走的另个做法
下一篇:Flash Player10功能SaveBitmap直接输出图像,保存到本机
Tags:    
>>> 最新评论:(共有 0 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  教程分类
  基础操作   动画特效
  应用开发   组件学习
  As程序   动画教程
  Flash cs3   AS 3.0
  FCS/FMS教程   Loading教程
  Flash与Web   Flash教程连载
  相关文章
·Rectangle对象在flash游戏开发中
·Flash的Socket和AMF3的研究心得
·Flash的Socket和AMF3来开发web游
·制作有视角的迷宫游戏+碰撞
·项目外包, 诚要天下FLASH有能之
·flash小游戏制作:月饼消消看
·Flash Player10功能SaveBitmap直
·面向对象法制作贪吃蛇小游戏
·flash里键盘控制人物行走的另个
·flash中图形位置的半像素渲染问
  热门文章
·Flash进度条的制作详细讲解(组图)
·flash幻灯片网页效果
·Flex 3 AdvancedDataGrid的使用(第二
·全Flash动画网站实现的基础教学
·flash水影效果字
·Flash打造简单的飘雪动画视觉特效
·FLASH+XML相册(附源码)
·超酷flash光晕移动效果
·Flash旋转拖尾文字效果的制作教程
·Flash制作大雪纷飞效果动画
·flash春雷闪电效果
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号