基于安卓平台上的猴王争霸游戏设计与开发(编辑修改稿)内容摘要:
的 SurfaceView 的刷新线程、碰撞检测和物理效果线程、计时器线程、 AI 线程需要自己编写。 这些线程都是要经历线程的创建、运行、结束三个阶段。 当游戏主界面开始时,线程开始创建并运行,游戏结束并跳转到游戏结果页面时,线程应当被关闭。 但是,在通常的情况下,如果采用 stop()或者 destroy()方法来完成线程的停止可能会引发异常或者错误,同时也不利于实现游 戏的暂停功能。 那么,既然不能用强制关闭线程的方式来结束线程,不妨设置标志位来控制线程的运行。 如采用 while( live) {/*线程内容 */; sleep( time) }的方式,当游戏主界面开始时,将线程启动,设置 live 变量为 true,然后重载游戏主界面的 destroy()方法;当游戏主界面销毁时,设置 live 变量为 false,这样线程就可以正常结束运行而不会发生任何异常和错误。 当进程中存在线程并发执行时,手机的硬件性能会得到很大的利用,但是线程之间的同步互斥则是程序面临的另一个问题。 在 java 中对于对象之间 加锁可以采用 synchronized实现。 对于一些变量的互斥访问,可以采用 lock()来进行加锁实现。 本游戏中也有需要互斥访问的变量,比如 SurfaceView 的刷新线程正在对游戏画面进行重新绘制时,如果此时游戏的碰撞检测和物理效果线程对玩家人物进行了位置上的移动,那么势必会造成游戏中玩家角色前后绘制的数据不一致造成位置上的差别。 诸如此类需要同步的地方还有很多,但是纵观这些需要并发的地方,假如没有采用 lock()锁来保持同步,所造成的影响并不是十分恶劣。 但是如果采用了 lock()锁,那么会导致游戏线程之间的 并发量大大下降,从而使游戏画面异常卡顿,用户体验极其糟糕。 因此,对于游戏中需要并发处理的地方,大多采取鸵鸟算法,也就是视而不见或者尽可能采用别的方式让用户无法觉察。 比如玩家角色的移动数据问题,本游戏所采取的方式就是使游戏画面的刷新频率较低,处于 3540 次左右,然后将游戏中碰撞检测和物理效果线程的运行周期缩短,这样每次刷新屏幕的移动距离就不会十分明显。 虽然没有解决同步问题,但是用户在视觉上已无法觉察。 碰撞检测和物理效果线程和 AI 线程在后续的两节介绍,这里先说 SurfaceView 刷新线程。 这个线程的主要功 能在上一节游戏绘图技术里面已经讲了,其主要作用就是对游戏主界面进行绘制且绘制的频率要适当。 线程依然是采用判断 live 标志位来决定是否结束,当游戏主界面退出时, live 被置为 false,此时 SurfaceView 线程将在运行完最后一遍时退出,如图 所示。 河北工业大学 20xx 届本科优秀毕业设计论文 7 游戏中的计时器计时线程的主要作用是对游戏中蓄力条的计时,包括玩家或者 AI 的跳跃蓄力和开火蓄力。 一般来说,玩家或者 AI 并不是每时每刻都在进行跳跃或者开火的蓄力,也就意味着计时器计时线程可能会在一段时间里空转。 另外,启动一个线程和一个销毁线程都需要不小的开销,并且计时线程在时间上需要一致,所以采取仅用一个计时线程的方式更有利于提高游戏的效率。 计时线程中利用 LinkedListFJTimeThread申明一个链表,这个链表的节点是FJTimeThread 类对象。 当玩家或者 AI 需要蓄力计时,就创建一个计时 FJTimeThread 类的对象作为计时链表节点加入到计时链表中。 只要 live 变量是 true,计时线程就会对每一个计时节点进行一次计时操作,这样就完成了玩家和 AI 共用一个计时线程完成所有的计时的 SurfaceView 刷新线程 河北工业大学 20xx 届本科优秀毕业设计论文 8 效果,如图 所示。 游戏中的碰撞技术与其他物理效果 游戏中玩家角色能够停留在地图中的树枝上,需要用到碰撞检测技术;玩家角色之间的不可重叠也用到了碰撞检测技术;子弹击中人物的效果也应用到碰撞检测技术。 故本游戏中一共有三种碰撞方式,人物角色与可停留物之间的碰 撞、子弹与人物角色之间的碰撞和人物角色之间的碰撞。 由于在安卓游戏中,大部分机器的内存运行速度都十分有限,游戏的碰撞检测往往偏重于效率所以往往采取比较简单的碰撞检测方式。 在游戏中人物角色与可停留物之间的碰撞检测采取矩形。 也就是用一个个矩形框来标志地图中的碰撞域。 这样,当玩家角色的坐标与这个矩形的范围发生重合时,则发生碰撞,从而进行相应的碰撞处理。 假如玩家角色与矩形碰撞域碰撞,玩家角色在矩形上方且玩家的Y 轴速度为正,那么玩家角色应该停在矩形碰撞域的上方;假如玩家角色从下方与矩形碰撞图 计时线程 河北工业大学 20xx 届本科优秀毕业设计论文 9 域发生碰撞,且玩家 Y 轴方向速 度为负,那么玩家的速度应该立刻取其绝对值并改 Y 轴的方向为正,这样就实现了角色从下方撞到碰撞域上并被反弹下去的效果;如果玩家角色从左边或者右边与碰撞域发生碰撞,那么不管其速度为多少,将其速度置为零,这样就可实现了角色在空中左右晃动时撞上碰撞域而不会陷入的效果。 对于碰撞域的获取,采用将碰撞域用文件的形式记录下来的方式,放在用户手机的 sd卡中,这样当用户进入游戏时就开始加载游戏地图和地图碰撞域。 由于矩形的碰撞域只需要确定其左上角。基于安卓平台上的猴王争霸游戏设计与开发(编辑修改稿)
相关推荐
说明: *全部竣工文件及图收集编制 2 份,其中移交路局 档案史志室1 份正本,移交 接管 维修单位 1 份第一副本。 *收集编制 3 公里和三线以上隧道总平面图、横纵断面图和主要结构图竣工底图 1 份,由局代部接收后统一向部馆移交 *城市规划区内隧道,由建设单位(或委托施工单位)负责向地方城建档案馆移交 1 份兰图及说明,并将移交清册复印 1 份报局档案史志室备查 站场专业
5. 11 项目经理应搞好现场管理,创造文明施工环境,确保产品质量不受影响。 5. 12 项目经理应组织安装队对成品质量采取防护措施,确保以形成的产品质量。 5. 13 现场安装的检验控制 12 a.安装过程检验主要包括分项工程检验、分部工程检验、阶段验收三部分。 b.分项工程检验以层为单位,分隐蔽施工、窗框施工、固定玻璃及窗扇施工等三个分部进行。 每个分项工程施工结束,由操作者
能 : SCI 接收中断处理函数 ,接收 3 个字节数据作为基准时分秒的值 ,放入 // time[02] //参 数 : 无 //返 回 : 无 //说 明 : 调用了 SCIReN 函数 //* interrupt void isrSCIre(void) { uint8 temp。 DisableInterrupt()。 //禁止总中断 temp=SCIReN(1, 6,time)。
、停靠、左转和右转等状态。 操作 输出信号 左转弯灯 右转弯灯 左头灯 右头灯 左尾灯 右尾灯 左转弯(闭合左转弯开关) 闪烁 灭 闪烁 灭 闪烁 灭 右转弯(闭合右转弯开关) 灭 闪烁 灭 闪烁 灭 闪烁 闭合紧急开关 闪烁 闪烁 闪烁 闪烁 闪烁 闪烁 刹车(闭合刹车开关) 灭 灭 灭 灭 亮 亮 左转弯时刹车 闪烁 灭 闪烁 灭 闪烁 亮 右转弯时刹车 灭 闪烁 灭 闪烁 亮 闪烁
到,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应短些。 ,两车道应采用的措施,比如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。 基于传统信号灯控制系统的设计过于死板,红绿灯交替时间过于程式化的缺点,智能交通灯控制系统的设计就更显示出它的研究意义,它能根据道路交通拥挤,交叉路口经常出现的情况。 利用单片机控制技术,
显示流程图如图 所示: 开始 初始化 输出测 量命令 等待读取数据 读取数据 低 字节 读取数据 高 字节 Y 复位 N 返回 13 图 LCD 显示流程图 电机控制处理程序 图 为电机控制处理流程图,电机控制子程序根据温度检测程序所得到的数据与预设值进行比较,再根据的比较结果将执行命令发送到外部设备。 当温度高于设定温度的上限 值时,控制电机反转;当温度低于设定温度值的下限值时,控制电机正转。