快速业务通道

J2ME手机游戏引擎程序架构 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

J2ME手机游戏引擎程序架构

时间:2011-02-08 BlogJava 即兴诗人

在游戏开发以及任何软件的设计都需要建立一个稳定的引擎结构体,来作为软件设计的基本架构,是软件体系结构的核心支撑框架,一切功能的实现以及扩展都在这个基础架构之上来完成。一个游戏的设计涉及到游戏控制、角色、游戏场景、道具、游戏声效以及游戏过程事件监听机制等元素,因此建立良好的游戏引擎能对以上各元素进行有效的控制。本文介绍在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显示、线程控制以及输入监控等调度、精灵等游戏具体模型)去完成各自的功能,从而提高软件的可读性跟可维护性。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号