北京航空航天大学毕业设计(论文) 第 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; }