J2ME手机游戏引擎程序架构

开发 前端
你对J2ME手机游戏引擎程序架构是否了解,这里和大家分享一下,游戏引擎可以建立不同的结构体来实现,但是任何游戏的设计都离不开通过设计一个主循环loop来重复控制整个游戏过程。

本文向大家简单介绍一下J2ME手机游戏引擎程序架构,在游戏开发以及任何软件的设计都需要建立一个稳定的引擎结构体,来作为软件设计的基本架构,是软件体系结构的核心支撑框架。

J2ME手机游戏引擎程序架构

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

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

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

  1. public class Game Testextends MIDlet
  2. implements CommandListener{  
  3. /**  
  4. *游戏引擎介绍  
  5. */  
  6. privateCommandexitCommand;  
  7. privateGameCanvasTestgameCanvas;  
  8. publicGameTest(){  
  9. exitCommand=newCommand("exit?,command.exit,1);  
  10. GameCanvasTestgameCanvas=newGameCanvasTest(this);  
  11. sfcan.addCommand(exitCommand);  
  12. sfcan.setCommandListener(this);  
  13. Display.getDisplay(this).setCurrent(gameCanvas);  
  14. //TODO自动生成构造函数存根  
  15. }  
  16. protectedvoidstartApp()  
  17. throwsMIDletStateChangeException{  
  18. //TODO自动生成方法存根  
  19. //gameCanvas.thread.start();  
  20. }  
  21. protectedvoidpauseApp(){  
  22. //TODO自动生成方法存根  
  23. try{  
  24. gameCanvas.thread.wait();  
  25. }catch(Exceptione){}  
  26. }  
  27. protectedvoiddestroyApp(booleanarg0)  
  28. throwsMIDletStateChangeException{  
  29. //TODO自动生成方法存根  
  30. gameCanvas=null;  
  31. }  
  32. publicvoidcommandAction(Commandc,Displayabled){  
  33. if(c==exitCommand){  
  34. notifyDestroyed();  
  35. }  
  36. }  
  37. //实现游戏过程界面跟不同操作变化的调度  
  38. publicvoidchangeTale(inttaleIndex)  
  39. {  
  40. 具体代码实现.......  
  41. Display.getDisplay(this).setCurrent(....);  
  42. }  
  43. }  

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

2、Displayable是游戏的显示效果核心,在J2ME游戏设计中使用GameCanvas类完成游戏画布工作,设计类继承GameCanvas来实现游戏核心模块,通常将游戏主循环放置于该类中实现整个游戏的控制,因此在继承GameCanvas的同时还需要实现循环Runnable接口。

  1. public class Game Canvas Test extends Game   
  2. Canvas implements Runnable{  
  3. //声明变量.......  
  4. publicGameCanvasTest(MIDletmidlet)  
  5. {  
  6. super(true);  
  7. //初始化变量.......  
  8. }  
  9. publicvoidrun(){  
  10. keyPressed(getKeyStates());  
  11. spritePixel();  
  12. drawCanvas();  
  13. //其他方法以及处理.......  
  14. }  
  15. protectedvoidkeyPressed(intkeyCode){  
  16. //按键处理.......  
  17. }  
  18. publicvoidspritePixel(){  
  19. //精灵以及地图坐标变幻控制......  
  20. }  
  21. publicvoiddrawCanvas(){  
  22. //根据坐标变化重绘画面处理........  
  23. }  
  24. }  

GameCanvasTest类中完成了游戏主干部分,包括键盘按键事件处理、坐标变化、画面重绘,当然游戏精灵跟地图背景也在该类中定义,并使用LayerManager进行管理。

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

【编辑推荐】

  1. J2ME应用程序架构模型详解
  2. 深入了解J2ME Polish+Eclipse配置过程
  3. J2ME中调用Canvas制作游戏菜单
  4. Eclipse中进行JVM内存设置
  5. 解析Linux下如何用eclipse搭建J2ME开发环境
责任编辑:佚名 来源: hi.baidu.com
相关推荐

2010-09-29 08:57:04

J2ME前景

2010-09-30 11:16:53

J2ME Snake脚

2009-03-12 10:22:27

EclipseJ2MEJDT

2010-09-30 13:39:52

2010-09-29 13:09:48

OTAJ2ME程序

2009-06-15 15:35:00

netbeansj2me

2010-09-30 13:11:59

J2MECanvas

2010-02-04 13:15:59

Android J2M

2010-09-29 13:16:01

OTAJ2ME

2009-06-11 09:19:38

netbeans实例J2ME游戏

2010-10-09 15:00:22

SnakeJ2ME

2010-09-29 09:19:39

J2ME开发工具

2010-10-09 16:13:10

J2ME应用程序

2010-09-29 09:54:09

J2ME应用程序

2010-09-30 11:11:07

J2ME

2010-09-29 13:50:31

J2MEJ2SE

2010-09-30 13:28:55

J2ME图形

2009-03-22 09:38:03

Android移植J2ME

2010-09-30 09:56:26

J2ME Polish

2009-06-23 11:30:16

RMSJ2ME
点赞
收藏

51CTO技术栈公众号