当前位置:首页 > 免费毕业设计

java手机游戏堡垒的设计与开发源代码+LW

java手机游戏堡垒的设计与开发源代码+LW

  • 网站价格: 2
  • 特殊技术: java
  • 作品类型: 免费毕设
  • 售后服务:

联系方式: 微信:biyebang QQ: 629001810

作品详情

java手机游戏堡垒的设计与开发源代码+LW

目录

 


系统设计

4手机游戏(堡垒)的开发

4.1游戏的的思路、构想

4.1.1游戏想法的产生

相信大家一定都在8位机机上玩过《冒险岛》这款游戏,非常有趣味性。

游戏中玩家通过不断的闯关,来解救公主。在每个关都很很多的怪物阻挡着你,所以需要运用各种机关或者秘籍来杀死它们。杀死他们的同时还可以获得各种奖励,加生命,加血等,增加了游戏的趣味性。

如图2所示:

 

 

图2 游戏截图

这款《冒险岛》游戏的实现相对于其他RPG或者网络版手机游戏稍简单一些,适合初学者作为练习,所以我决定编写一款类似的手机游戏。

由于之前对手机游戏的编程知识以及游戏的设计只有初步的了解,因此,我们在游戏的构架和思路上经历了几个阶段。

这款《冒险岛》游戏的实现相对于其他RPG或者网络版手机游戏稍简单一些,适合初学者作为练习,所以我决定编写一款类似的手机游戏。

由于之前对手机游戏的编程知识以及游戏的设计只有初步的了解,因此,我们在游戏的构架和思路上经历了几个阶段。

4.1.2对游戏设计的初步认识

刚开始我们只对J2ME有初步的了解。这时我们只是模仿之前在PC上看到的游戏,用语言把游戏的实现感性的描述为几大部分:

游戏界面系统:包括游戏开始界面;游戏开局界面;游戏运行界面;游戏结束界面。

游戏元素:菜单类;画布类;人物类;排行榜类。

4.1.3模块成型阶段

在进一步熟悉了J2ME知识后,对框架做出了一些修改,逐步把游戏的基本功能确定。游戏依次进入加载界面;主菜单;游戏运行界面;游戏结束界面。

具体实现的功能为:

1.主菜单,有如下选项:

(1)开始游戏——进入游戏界面。

(2)声音——设置声音的有无选项。

(3)帮助——介绍游戏的玩法。

(4)排行榜——玩家所得分数的排行榜。

(5)关于——用来显示说明信息以及背景图片。

2.游戏运行界面,包括:

游戏界面;目前游戏得分;游戏关数;生命次数;

3.游戏结束界面:游戏结束后,显示一行说明信息,然后退回到菜单。

游戏的主要模块为:

1.游戏主MIDlet(GameMIDlet)——对游戏生命周期的判断;对画布类的调用;管理游戏程序中各个屏幕之间的转换。

2.游戏画布(MyGame)——对游戏所用变量,常量的设定;游戏的初始化;游戏中精灵运动轨迹的控制;精灵与砖块的碰撞检测以及砖块状态的控制;游戏中各关卡的基本设定;游戏中对按键状态的处理。

3.菜单类——游戏中菜单事件的处理。

4.GameOgre类——游戏中怪物的类。

5.GamePlayer类——玩家控制的精灵类。

6.GameRMS类——用于实现分数排行榜。

7.PlayMusic类——用于实现音乐的播放。

8.MySet类——声音大小的设置。

4.2 程序的类结构

程序一共有8个主要类,其中菜单类负责各个屏幕的切换。程序的类结构如图3所示:

4.3 游戏的流程图

进入游戏菜单。初始情况下,游戏菜单有5个选项,它们分别是开始游戏、游戏说明和排行榜、设置、关于。选择开始新游戏则进入游戏,在游戏中如果按下非游戏键则中断游戏返回菜单,此时菜单中增加了一个继续游戏的选项,可以返回游戏也可以重新开始新的游戏。在菜单中选择游戏说明或者高分记录,则进入相应的屏幕,他们都能用“后退”软键返回菜单。菜单中的退出选项用于退出程序。游戏的流程如图4所示:

 


系统实现

4.4 游戏的实现

游戏一共实现了几个类,包括用于游戏外部的、菜单类、排行榜屏幕类、声音设置屏幕类、结束屏幕类,以及用于游戏本身的游戏画布类、声音效果类。

4.4.1主类GameMIDlet的实现

MIDlet是最核心的类。MIDlet程序有三种状态:

1.暂停状态

2.运行状态

3.销毁状态

J2ME程序都是从MIDlet类开始执行,系统在执行MIDlet程序时,首先构造一个MIDlet类型的对象,然后使程序进入到暂停状态,按照生命周期的规定,系统会自动调用MIDlet对象的startApp方法使程序进入到运行状态,开始程序的执行。 

下图是运行时显示的画布对象:

 

首先,先要创建MIDlet类型的对象,下面我们来看对象的构造方法:

//主程序构造方法        public GameMIDlet()        {            rs = null;            RecordName = “GameRMS”;            GameMenu.display = Display.getDisplay(this) ;            GameMenu.midlet = this;        }

在这个构造器中,创建了一个Display对象用于显示,然后,把当前程序的引用传给菜单类中的静态变量。

Display类有两个最主要的作用:

1、  获得屏幕的属性。例如屏幕是否是彩色的,以及支持的颜色数量等信息。

2、  控制屏幕的显示。例如使屏幕显示某个指定界面或者获得当前的显示界面等。

其中,特别是第二个作用使用的更加频繁。

当程序启动的时候,则调用了程序的startApp方法,用来显示画面:

  public void startApp()        {          //程序开始,打开数据库,如果数据库没有数据就添加10笔空白数据,最后关闭数据库          try {        rs = RecordStore.openRecordStore(RecordName,true);      } catch (Exception e)       {        System.out.println(“创建数据库失败”);      }      GameRMS rd = new GameRMS(“player”,0);      byte tem[] = rd.encode();      try       {        if(rs.getNumRecords()==0)        {            for(int i=1;i<=11;i++)                 {                   try                {                rs.addRecord(tem,0,tem.length);                }catch(Exception e)                {                  System.out.println(“添加数据失败”);                 }                   }        }        }       catch (Exception e1)       {        System.out.println(“得到数据库大小失败”);      }                   try      {          rs.closeRecordStore();      }catch(Exception e)      {         System.out.println(“关闭数据库失败”);      }             //将画面设为主画面MAIN SCREEN      new Thread(this).start();         }

程序开始,打开数据库,如果数据库没有数据就添加10笔空白数据,最后关闭数据库,然后开始一个新的线程,启动菜单。

MIDP中的存储系统是实际为一个类似于数据库的系统,而并不是简单的文件系统,这个系统称为记录管理系统(Record Management System,RMS)。RMS实现数据的持久性管理,提供了数据存储的功能,可以在程序下次启动是再次使用。

记录存储是面向记录的数据库,可把一个记录存储看作一个数据库文件,由许多记录组合而成,这些记录将持久保存并支持跨多个MIDlet的请求。在系统平台的整个常规应用期间,包括重启,更换电池等,MIDlet的记录存储都由系统平台负责维护,系统会尽可能维持记录的完整性。

当调用destroyApp 这个方法的时候,则退出程序。

public void destroyApp(boolean unconditional) {        exit(); }public void exit() {        System.gc();        notifyDestroyed(); }

退出程序的时候,要实行垃圾回收,释放掉不再使用的内存。

2.屏幕切换,如图6:

菜单的图形切换采用的是流程控制器,非常方便,简洁的实现了屏幕画面的切换,下面是关键实现代码:

//导航器  //设置4个常量分别代表主画面,游戏画面,帮助画面和排行榜画面  final public static int MY_MENU = 1;  final public static int MY_GAME = 2;  final public static int MY_HELP = 3;  final public static int MY_RMS = 4;  final public static int MY_ABOUT = 5;  final public static int MY_SET = 6;采用静态变量来对画面进行标识。//流程执行,获得需要画面的对象,并显示在屏幕上  public static void show(){    switch(current)    {      case MY_MENU:        display.setCurrent(MyMenu.getInstance());        break;      case MY_GAME:        display.setCurrent(MyGame.getInstance());        break;      case MY_SET:        display.setCurrent(MySet.getInstance());        break;      case MY_HELP:        display.setCurrent(MyHelp.getInstance());        break;      case MY_RMS:        display.setCurrent(MyRms.getInstance());        break;      case MY_ABOUT:        display.setCurrent(MyAbout.getInstance());
 

帮我毕业网微信

版权所有© 帮我毕业网 并保留所有权利

QQ 1370405256 微信 biyebang

QQ:629001810微信:biyebang

收缩