射击类手机游戏的研究与设计毕业论文(编辑修改稿)内容摘要:

频的路径等。 WinActivity 通关界面的定义类,定义了通关界面的参数,以及界面底部的返回主菜单按钮的操作等。 WinView 通关界面布局文件,定义了界面的布局,以及背景图片、背景音乐等。 界面类表示着在游戏中出现的各个界面,其中也定义了各个实体在游戏界面中的显示方法。 界面类在 MVC 架构中充当着 view 层。 工具类 包 表 34 工具类 DButil 连接数据库的工具类,定义了连接数据库的方法,以及游戏中需要用到的一些数据库的操作等。 RamCheck 碰撞检测的工具类,定义了两个矩形是否碰撞到的方南京工程学院毕业设计说明书(论文) 17 法。 工具类表示着在游戏中一些公用方法的类,单独提取出来便于代码的复用。 程序结构 程序的类文件 图 33 程序类文件 南京工程学院毕业设计说明书(论文) 18 程序的图片资源文件 南京工程学院毕业设计说明书(论文) 19 图 34 程序图片资源文件 南京工程学院毕业设计说明书(论文) 20 图 35 程序图片资源 文件 南京工程学院毕业设计说明书(论文) 21 程序的音频资源文件 图 36 程序音频资源文 南京工程学院毕业设计说明书(论文) 22 如图所示,本程序运行在我的手机的 环境下 图 37 关于手机界面 南京工程学院毕业设计说明书(论文) 23 片头动画实现 设计方法和代码 欢迎动画界面有一个点击检测事件,点击屏幕任意处跳过片头动画进入菜单选择界面。 图 38 片头动画 以下为主要代码:(具体作用已注释) public class VideoActivity extends Activity implements { String path = /sdcard/plane/。 //定义视频在手机里的路径 SurfaceHolder surfaceHolder。 //surface的抽象接口 MediaPlayer mediaPlayer。 //音频,视频播放对象 SurfaceView surfaceView。 //surfaceView绘图容器 int i = 1。 public void onCreate(Bundle savedInstanceState) { requestWindowFeature()。 getWindow().setFlags(, )。 //实现全屏 (savedInstanceState)。 //调用父类的 onCreate方法 setContentView()。 //调用 XML的布局文件 surfaceView = (SurfaceView) findViewById()。 //获得xml文件里的 surfaceView的对象 surfaceHolder = ()。 //SurfaceHolder接口来访Surface (this)。 //添加回调 mediaPlayer = new MediaPlayer()。 //实例化 mediaPlayer (new (){ 南京工程学院毕业设计说明书(论文) 24 @Override public void onCompletion(MediaPlayer mediaPlayer) { Intent intent = new Intent(, )。 //封装跳转 startActivity(intent)。 //跳转 ()。 //结束当前界面 } })。 }//检测视频播放完成 @Override public boolean onTouchEvent(MotionEvent event) { if (() == 1) { Intent intent = new Intent(, )。 startActivity(intent)。 ()。 } return (event)。 }//触摸事件 private void playVideo(String strPath) {// 自定义播放影片函数 ()。 (surfaceHolder)。 // 设置 Video影片以SurfaceHolder播放 try { (strPath)。 //设置视频路径 ()。 //视频准备缓冲 } catch (Exception e) { ()。 } if (!() amp。 amp。 i == 1) { ()。 //视频开始播放 i++。 } } public void surfaceCreated(SurfaceHolder arg0) { playVideo(path)。 //界面生成的时候开始播放 } ...... 南京工程学院毕业设计说明书(论文) 25 主菜单界面 设计方法和代码 主菜单界面有一个动态的飞机效果,下方有四个按钮,分别为,开始游戏,声音开关(当前为开启,则显示关闭声音,反之则相反 ),排行榜按钮,道具商店。 以下为主要代码:(具体作用已注释) public class IndexActivity extends Activity { public static boolean voice = true。 //声音开启 public static int money。 //总金钱数 public static int supernum。 //超级子弹的数量 public static int planelevel。 //飞机等级 public static int bulletlevel。 //子弹等级 public static int level = 1。 //关卡等级 public static int maxlevel = 1。 //已通过最大关卡数 public static int btnpressed_soundid。 //按钮按下的提示音 public static SoundPool mSoundPool。 //声音的 pool public static Vibrator vibrator。 //振动器 public static int score = 0。 //总积分初始为 0 private IndexView indexView。 private int i = 1, x = 0, y = 0。 public DButil dbUtil = null。 //实例化数据库连接对象 南京工程学院毕业设计说明书(论文) 26 图 39 主菜单 @Override protected void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 dbUtil = new DButil(this)。 Cursor cursor = ()。 //获得游标 vibrator = (Vibrator)getSystemService()。 //获得振动器 需在 中配置 while (()) { //游标指针指向下一个 maxlevel = ((maxlevel))。 int sound = ((sound))。 if (sound == 1) { voice = false。 //sound在数据库中 0表示开启 1表示关闭 i = 0。 } else { voice = true。 i = 1。 } money = ((money))。 supernum = ((supernum))。 planelevel = ((planelevel))。 南京工程学院毕业设计说明书(论文) 27 bulletlevel = ((bulletlevel))。 } ()。 //关闭连接 indexView = new IndexView(this)。 mSoundPool = new SoundPool(2, , 100)。 btnpressed_soundid = (this, , 0)。 requestWindowFeature()。 getWindow().setFlags(, )。 //全屏 setContentView(indexView)。 } @Override public boolean onTouchEvent(MotionEvent event) { if (() == 1) {//指代触摸离开时 x = (int) ()。 y = (int) ()。 //获得离开时的坐标 // 开始游戏 if (x = amp。 amp。 x = + () amp。 amp。 y = 650 amp。 amp。 y = 650 + ()) {//如果坐标在开始游戏的按钮内 if () { (btnpressed_soundid, 1, 1, 0, 0, 1)。 //播放按下的提示音 } Intent intent = new Intent(, )。 //封装跳转到游戏界面 startActivity(intent)。 //发起跳转 ()。 //关闭当前界面 } // 声音开关 if (x = amp。 amp。 x = + () amp。 amp。 y = 800 amp。 amp。 y = 800 + ()) {//坐标在声音开关按钮上 i++。 if (i % 2 == 0) { = ( (), )。 = false。 南京工程学院毕业设计说明书(论文) 28 (1)。 //关闭数据库中的 sound为 1 关闭 ()。 //暂停背景声音 } else { = ( (), )。 (btnpressed_soundid, 1, 1, 0, 0, 1)。 = true。 (0)。 //开启数据库中的 sound为 0 开启 ()。 //开启声音 } } // 排行榜 if (x = amp。 amp。 x = + () amp。 amp。 y = 950 amp。 amp。 y = 950 + ()) {//坐标在排行榜上 if () { (btnpressed_soundid, 1, 1, 0, 0, 1)。 } Intent intent = new Intent(, )。 startActivity(intent)。 ()。 } // 道具商店 if (x = amp。 amp。 x = + () amp。 amp。 y = 1100 amp。 amp。 y = 1100 + ()) {//坐标在道具商店上 if () { (btnpressed_soundid, 1, 1, 0, 0, 1)。 } Intent intent = new Intent(, )。 startActivity(intent)。 ()。 } } return (event)。 } } 南京工程学院毕业设计说明书(论文) 29 开始游戏界面 设计方法和代码 本游戏采用的是 2D 图像呈现技术,而且表现形式为纵向的滚屏游戏,且在贴图时采用多层贴图,增加游戏界面的层次感。 选择开始游戏,在运 行的时候,开始游戏就会自动初始化 GameView 开始运行游戏。 在运行之前,先进入关卡选择界面,选择好后,进入对应的关卡界面,加载游戏场景各种图片。 运行效果如下: 图 310 开始游戏 public class GameView1 extends SurfaceView implements , Runnable { public static int bossTime = 10。 //当消灭掉此数量的敌机时出现 boss public static boolean choiceSuccess = false。 //标记是否处于过关后。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。