J2me手机游戏(寻宝奇兵)设计于实现 下载本文

北京航空航天大学毕业设计(论文) 第 16 页

图3-4-1 主角动作帧

图3-4-2 骷髅兵动作帧

图3-4-3 树怪动作帧

3.5 建筑素材的设计

火炬动画的切片 如图3-5-1 、3-5-2

北京航空航天大学毕业设计(论文) 第 17 页

水柱动画的切片 如图3-5-3

图3-5-1 火炬切片

图3-5-2 火炬切片

图3-5-3 水柱切片

3.6 地表绘制

1..用一个二维数组保存地表数组

2.用for循环创建资源图块数组元素的对象

3.把资源图图块画入相应的图块对象,并释放资源图。 4. 嵌套for 循环行列 G.drawImage()画到手机屏幕上

5.地表的碰撞实现 地表数组为负 表示碰撞块 为正表示一般可通行块

图3-6-1 资源图

北京航空航天大学毕业设计(论文) 第 18 页

图3-6-2 地图

3.7 建筑和人物的绘制

1.一个人物有若干动作, 一个动作有若干帧, 一帧若有干切片。 2.循环切片构成帧, 循环帧构成动画效果 。

3.建筑动画效果是个死循环, 帧与帧之间加个时间间隔使其产生动画不至于是重叠。

4.人物的绘制,动态效果的实现与建筑相似,只不过动画的由键盘响应事件触发,通过重装keyPress(int key)实现键盘响应事件。

3.8 地图的滚动

1.角色的居中显示 以手机屏幕的原点坐标为参照物,地图原点的坐标绝对值+角色相对屏幕的坐标=角色相对地图的坐标,地图的移动表现在地表和建筑物的移动,因此绘制地表个建筑物的时候 把地图原点相对手机屏幕的坐标的绝对值 作为 偏移量 计算在内 就可以实现地图的 人物的居中显示和地图滚动。

2.地图越界约束 左、上越界时 令偏移量=0 右、下越界时 令偏移量=地图的长\\宽-手机屏幕的长\\宽。

3.角色越界约束 当人物坐标要想左、右、上、下移到地图之外时 分别令 人物坐标的等于 地图 最左、最右、最上、最下的坐标。

3.9 脚本事件

游戏事件 非脚本做法 role坐标=指定坐标时 g.drawString()

常规脚本事件做法 二维数组保存脚本触发点 String数组保存 脚本内容 执行脚本 屏蔽按键 run()中添加是否执行脚本判断

定义脚本命令 解析脚本命令方法 命令格式 命令(参数1,参数

北京航空航天大学毕业设计(论文) 第 19 页

2,?.)

多个脚本事件构造剧情线 用二维数组 第一维表示剧情id流线 第二维 表示 {当前id,下个id }

3.10 战斗处理

角色添加攻击矩形

攻击判断 攻击矩形 和 碰撞矩形 碰撞判断 两矩形 相交判断

public static final boolean isInRect(int ax, int ay, int aw, int ah,

int bx, int by, int bw, int bh) {

if (aw <= 0 || ah <= 0 || bw <= 0 || bh <= 0) { //2个矩形的宽高都不能小于或等于0 return false; }

if (by + bh < ay || A在B下 //四种情况只要有一种符合就不相交

ay + ah < by || A在B上 bx + bw < ax || A在B右 ax + aw < bx) A在B左 return false; //没有相交 return true; //相交

3.11 Npc行为模拟

If(主角坐标-npc坐标<追踪范围)追踪 (分xy两方向) Else 一般随机行为

定义一数组保存随机行为 up down left right 用随机函数 获得区间内一个随其数. public int getRnd(int s, int e) {

return Math.abs(rnd.nextInt() % (e - s + 1)) + s; }