1、手机端页面文档仅支持阅读 15 页,超过 15 页的文档需使用电脑才能全文阅读。
2、下载的内容跟在线预览是一致的,下载后除PDF外均可任意编辑、修改。
3、所有文档均不包含其他附件,文中所提的附件、附录,在线看不到的下载也不会有。
所以还要在判断游戏结束后将该僵尸掉。
说到这里就不得不说个很重要的问题,重新开始游戏后画面必然还有上次游戏添加的植物等,也就是说还处于上次游戏的状态,所以这里要初始化游戏,由于游戏所有操作都是在类中进行的,因此只需要重新个对象就行,但是考虑到中已经有个函数,其中就是对游戏进行初始化的,这里调用该函数后把游戏状态赋值为。
只是要把修改为。
异常添加夜晚模式背景图片,在类中设置如果游戏模式为夜晚模式则加载夜晚背景,运行游戏后发现异常,上网搜索说系统限制,只给图片分配兆的内存,超过就崩,在设置的时候,在选项中,有项,将该项的值增大为,运行后还是不行,查看夜晚模式背景图片达到之大,将其压缩到后运行程序,首次运行程序正常,在点击模拟器屏幕返回按钮后再次运行程序继续报相同异常,估计是内存不够使用。
发现只要是退出系统执行了第二次游戏后就不会出现异常,所以在所有界面还需增加函数对用户点击返回键进行处理。
用户触发事件后如果游戏处于以下状态时,对游戏初始化后游戏状态转到。
如果在时,调用退出程序以释放资源。
但是方法不起作用,原来监听函数并没有在监听,原因在于没有设置当前获取焦点。
所谓给当前设置焦点,其实就是告诉系统,现在这个视图需要与用户交互,让系统来监听此视图。
在当前自定义的类构造函数中调用来监听按键事件,用来监听触屏事件。
不显示奖励第二关后如果玩家退出游戏到主菜单然后接着点击常规模式游戏,仍然在第二关,这不是,因为游戏就是这么设置的,但是第二关的奖励并没有显示到种子栏目之中,当玩家接着通过第二关进入第三关后第三关奖励显示,第二关奖励仍然没有显示。
原来把判断是否给出奖励代码紧挨着这导致若果没有到达下关则不能把奖励属性赋值为真,当然就看不到奖励。
如果玩家在第三关或者第四关退出到主菜单然后接着游戏,这要把之前得到的奖励显示,因此在类中的方法中判断现在所在的关卡之后还要把之前得到的奖励并显示。
总结毕业设计经过这么长的时间终于要完成了,虽然这个过程中有过茫然甚至不知所措,但还是通过各种方式解决掉了其中的难题,从中学到的专业知识让我成长不少。
这次毕业设计我选的题目是版植物大战僵尸,近来移动终端设备已经成了人们生活的部分,而系统的手机几乎可以说和每个人形影不离。
在上学期末选择了这个题目之后,我开始整理思路并做了充分的准备,比如收集毕业设计要使用到图片素材,收集相关资料,学习相关技术等。
在设计初期,设计了很多方案,却无从下手,咎其原因还是技术不够,在图书馆找到很多书籍,作者都会有自己独到的见解,这也给了我灵感。
从处理图片到编写代码,过程中遇到不少问题,虽然有个个直接或间接解决了,但是从运行效率来看还是有些问题,比如在设计中为了方便调试,很多需要修改的变量都设成了全局变量,这就占用了定内存,造成内存的浪费,考虑到现在手机设备硬件条件较好,没有对其进行处理。
但运行时程序不需要的元素还是及时的释放掉,以免运行时间稍长后死机。
还有软件的适应性不够强,这与找到图片素材有关,我只对手机屏幕进行了将游戏初始化,当这两种模式之通关之后要对玩家开放无尽模式,同时,常规模式和夜晚模式将不对玩家开放。
无尽模式通过判断,不成立点击无尽模式不能进入游戏。
在无尽模式中没有关卡概念,只有玩家得分,分数根据消灭僵尸而增加。
定义全局变量,在类函数中当游戏状态为无尽模式时显示得分,将游戏胜利条件改为在常规模式或者在夜晚模式时僵尸碰到植物停止当吃掉植物后继续前进实现僵尸碰到植物停止前进,当吃掉植物后继续前进功能。
在类中定义布尔变量表示僵尸是否移动并初始化为长整型变量记录僵尸碰撞植物瞬间系统时间戳,并设置两个成员变量,属性。
在僵尸横向移动代码上添加条件语句只有为真时僵尸向左移动。
在类中碰撞函数检测到僵尸与植物相遇时,如果僵尸处于移动状态,使其停止前进,将这刻系统时间戳使用记录。
当僵尸处于静止状态并且该僵尸停留时间超过时,将植物赋值为假,并且把僵尸移动状态改为真。
调试吃掉植物后僵尸不前进运行游戏发现僵尸遇到植物后停下,之后植物消失,但此时僵尸同样停止不动。
在代码中添加检测,代码根本不按照预想路线走。
在个地方执行很多遍,这段代码预计只有碰撞之后才执行遍,但实际情况是碰撞之后多次执行碰撞函数,碰撞条件自身是不可能错的,那么只能是其他隐藏条件的问题。
僵尸停止超过将植物赋值为假,植物从屏幕消失,紧接着僵尸移动状态被赋值为真这里使用检测到已被赋值为真,但是僵尸并没有移动,说明又被赋值为假,也就是说已经从屏幕消失的植物又和僵尸发生碰撞,那么该植物根本就没有消失,它还在原地,只是处于隐身状态,想到这里真相大白,在将其从屏幕移除时应该紧接着将该植物掉这里是调用函数,这样调用会造成程序异常。
碰撞超过植物消失,僵尸继续前进。
该问题解决。
僵尸生命值丢失异常将僵尸生命值设置为,每次被炮弹击中次生命减少,当生命减少到时,僵尸死亡,将其设置为,在碰撞检测函数中当碰撞次时通过但是运行效果是僵尸碰到发炮弹后直接消失,根本就没有出现被发炮弹命中之后才消失的效果。
经过分析,肯定是判断碰撞之后对僵尸生命值进行了大于或者等于次的减操作,但为什么执行了这么多次减操作开始没有想明白,无计可施之下只好把僵尸的生命值设为,看是否还会出现这种情况,果然,在僵尸被炮弹击中次并且吃了豌豆射手之后都没有被消灭。
在将其生命值设置为时,有的僵尸被击中次死亡,有的僵尸被击中次以上都没有死亡。
最后想明白这个问题与僵尸吃掉植物不前进及其相似,甚至是同个。
按照同样方法处理该消失。
异常添加植物当鼠标左键时出现异常,初步分析为时程序正在执行函数,因为不能在对个进行遍历的时候将其中的元素删除掉。
在碰撞函数中将只必要的碰撞对象,不需要对所有进行遍历就是对所有遍历以掉不需要的对象。
将每层与独立出来新的方法,在需要对象的地方分别调用上述方法。
游戏正常结束后重新进入游戏直接失败游戏失败能正常结束,在结束状态点击屏幕能够出现预期效果并且转换到主菜单,但是当再次点击常规模式重新开始游戏后游戏直接进入失败状态,这里是因为僵尸超过屏幕左边界后并没有将其掉而导致处理行结果。
对于需要人工干预的微控制器系统,键盘就成为人机联系的必要手段,此时需要配置适当的键盘输入设备。
键盘电路的设计应使不仅能识别是否有键按下,还要能识别是哪个键按下,而且能把此键所代表的信息翻译成计算机所能接受的形式,计算机所用的键盘有编码键盘和非编码键盘两种。
编码键盘能够由硬件逻辑自动提供与按键对应的编码。
在微控制器试验系统中,键盘接口分为两种接口方式,即独立式和矩阵式按键。
本设计系统相对来说较为复杂,按键要求较多,方便起见,选择的矩阵式键盘,该键盘部分为数字按键,另部分为功能按键。
为了识别键盘上的闭合键,常用的键码识别方法有行扫描法行反转法及行列扫描法等。
本设计对键盘没做太多要求,所以,采用行扫描方法。
行扫描法又称为逐行或列扫描查询法,是种最常用的按键识别方法,行扫描法识别按键的基本原理是先将所有的行线置,读列线的值,若此时列线上的值全为,说明无键按下。
若有位为,则说明对应这列上有键按下,这时改变行扫描码,使行线逐行为,依次扫描。
当读到列线的值为时,就可根据此时的行扫描码和列线的值唯地确定按键的位置,同时也就确定了该键的扫描码。
本设计系统就用到了行扫描法。
键盘电路设计在键盘中按键数量较多时,为了减少口的占用,通常将按键排列成矩阵形式,如图所示。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过个按键加以连接。
这样,个端口就可以构成个按键。
并且列线通过电阻接正电源,并将行线所接的单片机的口作为输出端,而列线所接的口则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
图矩阵式键盘此矩阵式键盘根据设计要求,设置了功能键与数字键。
功能键主要是启动键手动按键自动按键。
启动按键要单片机处于待命状态手动按键要人自己控制时间,计算出误差值自动按键在设定时间内完成误差计算。
数字键用于所测电能表型号选择。
各按键所代表的具体功能如下数字键启动测量键停止测量键电能表盘转数输入确认键参数查看见测量转数输入。
电源电路设计我们本次的系统设计中使用的直流电源是正直流电源,供及其外围电路电能计量芯片光电采样器显示器键盘接口电路使用。
如图所示电路为输出电压的稳压电源。
它由电源变压器,桥式整流电路,滤波电容,防止自激电容和只固定式三端稳压器极为简捷方便地搭成的。
交流市电通过电源变压器变换成交流低压,再经过桥式整流电路和滤波电容的整流和滤波,在固定式三端稳压器的和两端形成个并不十分稳定的直流电压该电压常会因为市电电压的波动或负载的变化等原因而发生变化。
此直流电压经过的稳压和的滤波便在稳压电源的输出端产生了精度高稳定度好的直流输出电压。
本稳压电源可作为电路或单片机电路的电源。
三端稳压器是种标准化系列化的通用线性稳压电源集成电路,以其体积小成本低性能好工作可靠性高使用简捷方便等特点,是目前稳压电源中应用最为广泛的种单片式集成稳压器件。
图电源电路图软件设计软这种情况。
所以还要在判断游戏结束后将该僵尸掉。
说到这里就不得不说个很重要的问题,重新开始游戏后画面必然还有上次游戏添加的植物等,也就是说还处于上次游戏的状态,所以这里要初始化游戏,由于游戏所有操作都是在类中进行的,因此只需要重新个对象就行,但是考虑到中已经有个函数,其中就是对游戏进行初始化的,这里调用该函数后把游戏状态赋值为。
只是要把修改为。
异常添加夜晚模式背景图片,在类中设置如果游戏模式为夜晚模式则加载夜晚背景,运行游戏后发现异常,上网搜索说系统限制,只给图片分配兆的内存,超过就崩,在设置的时候,在选项中,有项,将该项的值增大为,运行后还是不行,查看夜晚模式背景图片达到之大,将其压缩到后运行程序,首次运行程序正常,在点击模拟器屏幕返回按钮后再次运行程序继续报相同异常,估计是内存不够使用。
发现只要是退出系统执行了第二次游戏后就不会出现异常,所以在所有界面还需增加函数对用户点击返回键进行处理。
用户触发事件后如果游戏处于以下状态时,对游戏初始化后游戏状态转到。
如果在时,调用退出程序以释放资源。
但是方法不起作用,原来监听函数并没有在监听,原因在于没有设置当前获取焦点。
所谓给当前设置焦点,其实就是告诉系统,现在这个视图需要与用户交互,让系统来监听此视图。
在当前自定义的类构造函数中调用来监听按键事件,用来监听触屏事件。
不显示奖励第二关后如果玩家退出游戏到主菜单然后接着点击常规模式游戏,仍然在第二关,这不是,因为游戏就是这么设置的,但是第二关的奖励并没有显示到种子栏目之中,当玩家接着通过第二关进入第三关后第三关奖励显示,第二关奖励仍然没有显示。
原来把判断是否给出奖励代码紧挨着这导致若果没有到达下关则不能把奖励属性赋值为真,当然就看不到奖励。
如果玩家在第三关或者第四关退出到主菜单然后接着游戏,这要把之前得到的奖励显示,因此在类中的方法中判断现在所在的关卡之后还要把之前得到的奖励并显示。
总结毕业设计经过这么长的时间终于要完成了,虽然这个过程中有过茫然甚至不知所措,但还是通过各种方式解决掉了其中的难题,从中学到的专业知识让我成长不少。
这次毕业设计我选的题目是版植物大战僵尸,近来移动终端设备已经成了人们生活的部分,而系统的手机几乎可以说和每个人形影不离。
在上学期末选择了这个题目之后,我开始整理思路并做了充分的准备,比如收集毕业设计要使用到图片素材,收集相关资料,学习相关技术等。
在设计初期,设计了很多方案,却无从下手,咎其原因还是技术不够,在图书馆找到很多书籍,作者都会有自己独到的见解,这也给了我灵感。
从处理图片到编写代码,过程中遇到不少问题,虽然有个个直接或间接解决了,但是从运行效率来看还是有些问题,比如在设计中为了方便调试,很多需要修改的变量都设成了全局变量,这就占用了定内存,造成内存的浪费,考虑到现在手机设备硬件条件较好,没有对其进行处理。
但运行时程序不需要的元素还是及时的释放掉,以免运行时间稍长后死机。
还有软件的适应性不够强,这与找到图片素材有关,我只对手机屏幕进行了
