网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > JSP > 正文
J2ME手机游戏引擎程序架构
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/11/29
下载{$ArticleTitle}原创论文样式

  在游戏开发以及任何软件的设计都需要建立一个稳定的引擎结构体,来作为软件设计的基本架构,是软件体系结构的核心支撑框架,一切功能的实现以及扩展都在这个基础架构之上来完成。一个游戏的设计涉及到游戏控制、角色、游戏场景、道具、游戏声效以及游戏过程事件监听机制等元素,因此建立良好的游戏引擎能对以上各元素进行有效的控制。本文介绍在J2ME游戏设计中游戏引擎的基本程序架构。

  游戏引擎可以建立不同的结构体来实现,但是任何游戏的设计都离不开通过设计一个主循环loop来重复控制整个游戏过程,当然整个游戏的核心结构(背景幻化控制、精灵坐标变化、动作帧画面变化等)都包含在该循环中。在J2ME游戏设计中,程序架构一般需要建立两个核心类,即是MIDlet跟Displayable两类。

  1、其中MIDlet是J2ME的主类,任何程序主类都需要继承MIDlet来控制整个游戏的生命周期,需要覆盖MIDlet中的三个周期方法startApp、pauseApp跟destoryApp,分别为执行开始、暂停、结束等动作的操作体。

public classGameTest extends MIDlet implements CommandListener{
/**
 * 游戏引擎介绍
 */
private Command exitCommand;
private GameCanvasTest gameCanvas;
public GameTest () {
 exitCommand=new Command(" exit?,command.exit,1);
 GameCanvasTest gameCanvas=new GameCanvasTest (this);
 sfcan.addCommand(exitCommand);
 sfcan.setCommandListener(this);
 Display.getDisplay(this).setCurrent(gameCanvas);
 // TODO 自动生成构造函数存根
}
protected void startApp() throws MIDletStateChangeException {
 // TODO 自动生成方法存根
 //gameCanvas.thread.start();
}
protected void pauseApp() {
 // TODO 自动生成方法存根
 try{
 gameCanvas.thread.wait();
 }catch(Exception e){}
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
 // TODO 自动生成方法存根
 gameCanvas=null;
}
public void commandAction(Command c,Displayable d){
 if(c==exitCommand){ 
 notifyDestroyed();
 }
}
//实现游戏过程界面跟不同操作变化的调度
public void changeTale(int taleIndex)
{
 具体代码实现.......
 Display.getDisplay(this).setCurrent(....);
}
}

  GameTest类继承了MIDlet类,实现游戏生命周期的控制,而且也仅仅对游戏生命周期的控制跟游戏过程中的UI调度工作,而把具体的游戏核心模块放到GameCanvasTest类中去实现。

  2、Displayable是游戏的显示效果核心,在J2ME游戏设计中使用GameCanvas类完成游戏画布工作,设计类继承GameCanvas来实现游戏核心模块,通常将游戏主循环放置于该类中实现整个游戏的控制,因此在继承GameCanvas的同时还需要实现循环Runnable接口。
 public class GameCanvasTest extends GameCanvas implements Runnable {
   //声明变量.......
 public GameCanvasTest(MIDlet midlet)
 {
   super(true);
   //初始化变量.......
 }
  public void run(){
   keyPressed(getKeyStates());
   spritePixel();
   drawCanvas();
   //其他方法以及处理.......
  }
  protected void keyPressed(int keyCode){
  //按键处理.......
}
 public void spritePixel(){
 //精灵以及地图坐标变幻控制......
}
 public void drawCanvas(){
 //根据坐标变化重绘画面处理........
}
}
 GameCanvasTest类中完成了游戏主干部分,包括键盘按键事件处理、坐标变化、画面重绘,当然游戏精灵跟地图背景也在该类中定义,并使用LayerManager进行管理。

  以上是一般的游戏架构,当然,在较复杂的游戏设计里面,使用以上架构将会较麻烦,使得程序不清晰。因此在程序设计中可以采用MVC模式来构建游戏引擎,将各部分抽象出来不同的层(分别为UI显示、线程控制以及输入监控等调度、精灵等游戏具体模型)去完成各自的功能,从而提高软件的可读性跟可维护性。

(责任编辑:admin)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号