`
wangxiaohigh
  • 浏览: 1426063 次
文章分类
社区版块
存档分类
最新评论

LGame(Android及J2SE游戏引擎)入门示例——如何构建一个游戏

 
阅读更多

较早前LGame示例下载地址:http://loon-simple.googlecode.com/files/LGame-Simple-0.2.5.7z

最新版LGame(0.2.6)下载地址:http://loon-simple.googlecode.com/files/LGame-0.2.6.rar

1、如何启动LGame

目前的LGame提供有J2SE以及Android两个开发版本,两版的主要类及函数虽然相同,但由于Android版对应于手机环境,而J2SE版对应于PC环境,所以依旧有少许的差别。

J2SE版:

在J2SE环境下,只需要在Main函数中构造如下内容即可。

Android版:

而在Android版中,我们则需要分两步走,一是需要配置相关的AndroidManifest.xml 文档。

如下所示:

而调用的方法如下:

这时LGame框架就会根据我们所实现的不同Screen,来展示我们的游戏了(很简单吧)。

2、如何构建Screen类

Screen是一个抽象类,也是LGame框架所提供的游戏界面展示器,其中封装了基本的图形接口与相关的操作设备交互函数,在LGame框架中,可以直接作为游戏界面进行展示的Screen共有三种。

一、Screen

即最基本的Screen,包含了最基本的Screen函数,默认自动刷新游戏画面(根据FPS所设定的速度),不提供repaint以及getLGraphics方法,是提供LGame框架调用的最基本Screen形态。

J2SE版使用方式如下:

另外,在 Screen 中还有一个重要的 alter 函数,我们可以通过重载 alter 函数实现最简单的定时操作,譬如 :

// 设定计时器,每隔 1 秒允许执行一次

LTimer timer = new LTimer(LSystem. SECOND );

// 重载 alter 函数

public void alter(LTimerContext context){

if ( timer .action(context.getTimeSinceLastUpdate())){

}

}

Android版使用方式如下:

Android Screen API 与使用方法基本等价于 J2SE 版,但由于手机与 PC 间功能有所差别,所以具体的 API 名及函数有所不同。

关于 alter 函数部分完全一致。

二、ThreadScreen

J2SE版:

ThreadScreen 是一个实现了 Runnable 接口的 Screen ,它采用 double buffer 方式将绘图与业务线程分离, gameLoop 函数中即是一个独立的线程。

与标准 Screen 的其它区别在于, ThreadScreen 可以通过 getLGraphics getDraw Draw 类为 LGraphics 的简化封装)函数直接获得对 LGraphics 的操作权,并非一定要通过 drawScreen 函数绘图。

Android版:

J2SE Android 版的差别仅仅在于鼠标、键盘等设备函数上,其它细节相同。

三、CanvasScreen

CanvasScreen 0.2.6 版中最新提供的 Screen 实现,模拟 J2ME Canvas 而成(也混合了 GameCanvas API ),相关函数在 J2SE Android 版中完全一致。

与标准 Screen 的其它区别在于, CanvasScreen 可以通过 getLGraphics 函数直接获得对 LGraphics 的操作权,并非一定要通过 paint 函数绘图。另外,由于 CanvasScreen Paint 函数并不直接关联父类的 draw 函数,所以 LGame 中提供的精灵或组件无法直接通过 add 函数加载显示,而是只能在 paint 中手动调用相应组件的绘图器进行绘制(关于这点,用惯 J2ME 的朋友应该没什么不习惯的。另外 LGame 提供有配套的 j2me 精灵类包可供使用,为 1 1 仿 J2ME 原有 API 实现)。

以下是一个CanvasScreen的使用示例:

//初始化时的精灵动画

01

//移动时的精灵动画

02

//背景图片

03

请注意,为了演示图像扩大机制,示例所用的精灵以及游戏背景图像都非常之小,而实际开发中并非一定要使用图像扩充,更不是只能使用此比例的图像。


下面我制作一个 Sword.java ,这是一个自定义的精灵类,用以显示上图所示的“骷髅剑士”。(在不重新实现 ISprite 的基础上,我们也可以直接使用现成的 Sprite 类来完成此例。但是,关于动作细节部分就只能在精类外部设定或者重载 Sprite update 函数来实现(和实现 ISprite 没什么区别了 ||| ))。

设定一个 CanvasScreenExample.java ,用以继承 CanvasScreen

此时,我们只需要根据需要实例化相关的Screen(也就是setScreen),就会得到如下效果:

实际运行效果如下( Android 版效果与此相同, PC 版中窗体实际大小被设定为 480x320

03

PS: CanvasScreen 中也允许完全照搬 J2ME Canvas(GameCanvas) 与相关精灵(内置有 API 1:1 的精灵类相关实现)的构建方式,可以将任何 J2ME 游戏代码平移其中。简单的讲,您在只掌握 J2ME 技术的情况下也可以使用 LGame ,而无需单独学习任何 LGame 框架本身的构建方式。

较早前LGame示例(仅PC版)下载地址:http://loon-simple.googlecode.com/files/LGame-Simple-0.2.5.7z

最新版LGame(0.2.6)下载地址:http://loon-simple.googlecode.com/files/LGame-0.2.6.rar

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics