基于android超级玛丽制作毕业论文(编辑修改稿)内容摘要:

坐标与地图块的坐标有相同的时,则马里奥与地图块相碰撞,马里奥则停止运动。 具体实现代码在之前的马里奥控制实现模块中。 蘑菇和花运动控制的实现 蘑菇是能够移动的单位,它是按照 一定移动规律来移动的,当马里奥与蘑菇碰撞之后马里奥生命值会增加并且变大,所以制作蘑菇先要设置蘑菇的属性,然后给他设置移动方法,最后再检测与马里奥是否碰撞;花是不能移动的单位,当马里奥与花碰撞之后,马里奥能够释放子弹,花的制作方法与蘑菇类似,只不过不用设置花的移动方法。 碰撞检测的实现和马里奥与地图块的碰撞检测类似。 26 新建一个 mushroom 类来实现蘑菇,新建一个 flower 类来实现花。 蘑菇移动实现方法如下: public void Move() { if(count 16) { =2。 count+=2。 =。 } else { if(count18) count++。 //左走 if(dir == 1) { =2。 } //右走 else { +=2。 } } 蘑菇的碰撞检测代码如下 : public void Logic(MarioView mv) { if( 18) return。 = false。 //背景碰撞检测 for(int i=0。 i().getB_tile().size()。 i++) { Tile t = ().getB_tile().get(i)。 if( ()*2 amp。 amp。 + ()*2) { if(() == 133 || () == 134 || () == 135) { if((t)) 27 { //是否处于障碍物上 if( 16 amp。 amp。 + 16 amp。 amp。 ) { = ()。 = true。 = 0。 } } } } } //前景碰撞检测 for(int i=0。 i().getQ_tile().size()。 i++) { Tile t = ().getQ_tile().get(i)。 if( ()*2 amp。 amp。 + ()*2 ) { if((t)) { //是否处于障碍物上 if( 16 amp。 amp。 + 16 amp。 amp。 ) { = ()。 = true。 = 0。 } //右边是否碰到障碍物了 if( () amp。 amp。 ) { = 1。 } //左边是否碰到障碍物了 else if( () amp。 amp。 ) { = 2。 } 28 } } } //下降 if(!onLand) { +=[index]。 if(index 1) index++。 } } 花的实现方法与蘑菇类似,就不在这写出代码了。 马里奥的进化与发射子弹的实现 马里奥与蘑菇碰撞以后会变大,马里奥类有个代表马里奥当前状态的变量level 用于记录马里奥是否变大,该值默认为 0,当碰撞蘑菇以后,该值变 1,马里奥的图片切换成大图片,并且马里奥能跳的更高。 马里奥变大以后再吃了花的花,马里奥就可以释放子弹, level 值变成 2。 具体实现代码: public void ChangeRectSize() { if( == 1) { if((蹲 )!= 1) { = 0。 = 17。 = 16。 = 31。 } else { = 0。 = 11。 = 16。 = 31。 } } else if( == 2 || == 3) { if((蹲 )!= 1) { = 0。 29 = 16。 = 16。 = 31。 } else { = 0。 = 3。 = 16。 = 31。 } } 新建一个 bullet 类,这 个类就是用来实现马里奥吃了花之后发射子弹的效果,这个类包含子弹的速度、出境状态、旋转角度等属性,还包括子弹的运动方法,子弹的碰撞检测和前面的蘑菇碰撞检测类似,这里就只写出子弹的移动控制具体代码: public void DegreesPlus()//角度增加 { +=60。 if(=360) { =0。 } } public void Jump()//跳跃方法 { if((跳 )==1 amp。 amp。 onLand) { =5。 =5。 =跳。 } } public void Move()//左右移动方法 { +=。 //判断是否越屏 if( + () 0 || || ) { 30 = 0。 } } //上下移动方法 public void UpDownMove() { if(0) { =ySpeed。 if(ySpeed0)ySpeed。 =跳。 } else if(=0 amp。 amp。 !onLand) { +=ySpeed。 if(ySpeed5) ySpeed++。 =跳。 } } 金币和敌人的实现 游戏里的金币分为两种,一种是需要马里奥碰撞特定的地图块才会出现的,这种金币出现之后不需要马里奥再去碰撞它就可以直接加分,另一种类似与地图块一样显示在地图上的,马里奥碰撞以后就会消失,并加分。 第一种的实现比较简单,只需在马里奥与地图块碰撞的方法中加入加分的代码即可,第二种与花的实现方法类似,只不过碰撞到花是改变马里奥的 level 属性值,碰撞到 金币则是改变游戏分数值。 游戏里的敌人一共有四种,分别是三角,背刺怪,乌龟和食人花。 背刺怪和食人花只有通过子弹可以消灭,马里奥本身不管从哪个角度碰撞,都会减少马里奥本身的生命属性值,三角和乌龟都可以通过除了子弹意外的马里奥本省从上往下的碰撞将其消灭,不过乌龟被消灭后会生成一个左右活动的龟壳,马里奥与之碰撞会减少生命属性值,其他怪物碰到龟壳也会减少生命属性值。 龟壳可以通过从上往下碰撞和子弹消灭。 这四种怪物分别通过 triangle 类、 thron 类、 tortoise 类和 piranha 类来实现。 碰撞检测方法和马里 奥的碰撞检测类似,但是每种怪物的移动方法有不同,这里写出它们的移动控制的具体实现代码: 31 ○ 1 三角怪: public void run() { while( 0) {。 if( = 0) { = 0。 } try { (25)。 } catch (InterruptedException e) { ()。 } } } ○ 2 背刺怪: public void Back() { = startX。 = startY。 = 3。 = 2。 = 4。 = 2。 = 1。 = 0。 = false。 = 0。 } ○ 3 乌龟: public void CollisionWithEnemy(MarioView mv) { for(int i=0。 i().getEnemy().size()。 i++) { Enemy e = ().getEnemy().get(i)。 32 if((食人花 )) continue。 if(this != e) { if((e)) { if( == 0) { ().score+=10。 if( == 2) { = 2。 } else { = 1。 } = true。 (2)。 } } } } ○ 4 食人花: public void Move() { +=[count]。 count++。 if(count 1) { count = 0。 } } 怪物的碰撞检测 怪物的碰撞包括马里奥与怪物的碰撞、怪物与子弹的碰撞、龟壳与怪物的碰撞。 马里奥与怪物的碰撞和马里奥与地图块的碰撞类似,不过碰撞之后情况分为几种,当从上往下碰撞三角和乌龟时,怪物死亡,其他情况都是马里奥生命属性值减少。 33 怪物与子弹的碰撞以及龟壳与怪物的碰撞和马里奥与地图块的碰撞类似,当怪物与子弹的碰撞有、龟壳与怪物碰撞,都是 怪物死亡。 具体实现的主要代码在之前的马里奥的实现模块中。 第四章 完成效果图 完成效果图 效果图一 菜单界面 34 效果图二 游戏界面 效果图三 结束界面 效果图四 发射子弹 35 效果图五 蘑菇 36 总结 在本次课题中,主要完成了以下几个方面的事: 对 Android 开发平台的 Eclipse 的搭建; 对游戏程序的设计,包括界面设计,流程设计和功能模块设计等; 在开发平台上编码实现游戏; 调试程序和完善程序功能。 本次课题,使我 对 Android 和 Android 应用程序开发有了粗略的了解: 要利用 PC 开发 Android 应用程序时需要搭建开发环境 Eclipse。 此外,还需要安装 java、 Android SDK,并且还要安装 ADT 并设置在线更新,然后根据需要创建 AVD(模拟器 )。 利用 Eclipse 开发 Android 应用程序时,所创建的工程通常包括这几个部分: src 目录,源码存放的地方; gen 目录,这个文件夹存放资源的 ID; :创建工程时,选择平台的版本; assets 目录:存放应用程序资源的目录,和 res目录 作用相同; bin 目录:暂时没用; res 目录:作用同 assets; :清单文件;还有 和。 此课题的关键部分在于游戏数据的设计,数据的意义和数据的使用应当要简明和方便,且易于控制,数据设计巧妙,程序能够很容易的实现功能,否则,不仅工作量大,程序效率也不高。 虽然马里奥只是一款很久以前的小游戏,然而我在做的过程中却充满坎坷,从开发环境的搭建到程序的调试过程中,问题连连,比如 JDK 版本问题,或者创建 AVD 失败,又或者 R 文件的读取错误 „„。 在不断地解决问题中,自己对Android 和 Android 应用程序的理解也不断加深。 本次课题切实提供了一此很好的实践机会,通过本次实践,不仅使我对开发当前主流智能手机操作系统应用程序有了一定了解,而且也使我编程能力有了进一步提高。 但是,作为一款常见的小游戏,我不仅见过,还玩过各种版本的马里奥游戏,在那些版本的游戏中,不。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。