|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。计划择要
本文给出了一个飞机射击类(潜艇)游戏的计划历程和响应的流程图,并供应了Demo版源代码下载地点,游戏在sunwtkv2.2下调试经由过程。
声明:本游戏所用的资本年夜多不属于作者,代码仅供非贸易用处的进修参考。
以下为游戏的几张截图
<br>
游戏计划
1游戏操纵流程:
游戏的初始画面是一个implusive的List列表格局,选择newgame今后就能够启动游戏,游戏是以全屏体例开启,但仍有效于停息/入手下手和加入的命令呼应功效键。在游戏傍边启动停息,海水和陆地生物仍将持续举动,但敌方潜艇和一切鱼雷都将运动上去,玩家的把持也将不起感化,直到游戏被再次启动为止。从游戏形态加入将回到菜单界面,再次选择加入将加入程序。
以下是游戏的整体流程图:
<br>
2算法处置
游戏本身是一个单态布局(singletone),由一个Controller来处置今朝应当展现的屏幕和形态。次要的显现类包含主画面,游戏画布,匡助画面和一些帮助的Alert,个中最主要是游戏画面。游戏是在MIDP2的形态下运转的,以是画面承继了GameCanvas。游戏中的脚色图层全体加载在一个宏大于手机屏幕巨细的图层办理器上。当玩家地位挪动时,图层办理器同步盘算出玩家的绝对地位,挪动以后图层的显现地位。
这个游戏的实质就是在midlet启动后把全部画布作为一个线程,每隔25ms扫描一下用户按键操纵,每隔50ms扫描一次仇人和鱼雷等物体的活动形态,关于对照苛求的枪弹射出及时呼应,则承继了keyPressed办法。
在扫描玩家挪动操纵时,按键编码被传进到玩家潜艇的呼应办法。在扫描仇人和鱼雷活动时,分两步完成。
第一步,实行各个物体画面的挪动办法。程序其实不为每一个新增鱼雷大概仇人开启一个新线程,太多线程会形成程序的功能直线下落;而是为每个物体范例保存一个Vector数组,每当一个新物体发生,他将起首被到场改范例所属的数组中,然后才在图层上画出;当物体打消时,除在图层上被打消,也必要从呼应数组中删除。如许就构成一种注册机制,一切游戏物体的发生和打消都必要向画布注册,画布具有分歧范例物体的一切“名单”,以是,当实行挪动命令时,只必要遍历各个范例数组,顺次实行个中每一个元素的挪动办法便可。
第二步,就是一样平常意义上重画,这里利用flushGraphics()替换了传统的repaint(),因为本游戏是以导进图片为操纵对象,图片地位的变动已在第一步被实行,以是没有怎样触及到象素级的重画,只是在游戏初始化形态时必要加载各个物体数组所对应的图层到新的图层办理器。
画布触发流程简图:
(因为手上没有rose,只要临时用EclipseUML的流程丹青出草图,多少有成绩的中央必要商讨,也但愿善于此到的伴侣不惜斧正)
<br>
3类布局
以以下出了次要构成类的寄义布局,并以游戏画布为中央列出一个类联系关系图。
Controller:把持类,用以把持以后屏幕显现哪个Displayable类。
SubObject:接口范例。玩家潜艇,仇人潜艇和鱼雷等可挪动图层范例皆扩大于此接口。
Sub:玩家潜艇。包括了地位,性命值等成员变量和挪动,开仗等办法。
EnemySub,MoveableSprite,Tinfish:仇人潜艇,陆地生物,鱼雷。都是可挪动图层范例,一旦发生就在画布中注册,由工夫触发器保护其活动和性命形态。
SubCanvas:游戏主画布。存储着游戏舆图信息,游戏形态,玩家书息,同步保护着仇人潜艇,鱼雷,陆地生物的活动和保存形态。
SubCanvas联系关系类图:
<br>
4源代码
本程序的源代码,包含jad,搅浑过的jar和一个rar文件,全体能够在http://www.hyweb.net/BrowseFiles.aspx?Folder=Public/My%20Project高低载到,代码中包括了较为具体的正文。这份程序只是一个demo版本,有一些遗留成绩(玩家性命值显现,功能优化)还必要进一步完美,有任何好的倡议,请必定接洽我.^_^
JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。 |
|