拙作练习--泡泡堂
实在是做不下去了,开始的时候没有构思好,就着手写代码,结果实在做的过程中,发现好多东西都没考虑进去,但是框架都已经定好了,改起来容易牵一发动全身,总之封装没搞好,类之间太过于耦合(也不知道”耦合”这词儿用的对不对),不往下做了,一个很失败的练习。这里简单的讲下思路,跟兄弟们交流一下。
游戏主要包括这么几个类:
GameDisplay
创建所有的可视元素,比如箱子,树,石头,人物等等,并将他们显示在舞台上。
Elem
所有显示元素的基类,它的子类有: Fire,Person,PoPo,Stone,Tree,WallStone
Control
类里包含几个静态属性,分别表示方向键的状态,我们可以通过监视这几个属性值,来判定键盘的状态。
MapData
类里的属性都是静态的,包括地图data,关数等等,方便我们在各个类内这些属性对其进行访问,而不用一一声明。
BombArea
这是PoPo类最核心的属性,它定义了泡泡爆炸的区域。后面在舞台上添加Fire的时候也要用到他。
Person
主人公了,这里我们监视control对象里相应的键值的状态,并调用相应的moveLeft,moveUP等方法,实现人物的行走和放泡泡等动作。
最后就是文档类Main了:
有了上面几个类,这里的代码写起来就简单多了。
首先,新建一个Control对象,对键盘进行监视
ctrl = new Control(38,40,37,39);//这里的38,39等是方向键的ASC值,也就是自定义方向键
第二,是建立一个人物对象,并通过Person类的构造函数,将person对象跟MapData和Conrol绑定到一起。
person = new Person(new Child(), MapData.data[MapData.gameLevel],ctrl);
第三,创建GameDisplay对象,并通过起构造函数,将这个对象跟MapData绑定到一起,进而遍历并根据MapData布局显示Elem。
gd = new GameDisplay(MapData.data[MapData.gameLevel]);
第四,对放置泡泡的事件进行监视,之前没有构思框架的时候,忽略了这一点,所以之后改起来很麻烦,就给放到这里了
person.addEventListener(Event.CHANGE, addPopo);
在Display对象里添加person
gd.addPerson(person, 1, 1);
Control对象开始对键盘进行监视
ctrl.startListen();
Bug:
还存在很多的BUG和不足
1,人物放出泡泡后,站在泡泡上不会被炸死
2,加分机制没有做,开始,结束界面也都是空的,所以根本算不上一个游戏,只能说是一个练习,有兴趣的兄弟,可以继续完善,期待楼下出完整版哦!!
源文件下载地址:
http://www.brsbox.com/filebox/down/fc/1452c06a0d5a4471c2cb9f7f17df1c52
浙公网安备 33010602011771号