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

来源:互联网 发布:淘宝七色谷 编辑:程序博客网 时间:2024/04/30 23:22

较早前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版使用方式如下:

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

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

二、ThreadScreen

J2SE版:

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

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

Android版:

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

三、CanvasScreen

CanvasScreen0.2.6版中最新提供的Screen实现,模拟J2MECanvas而成(也混合了GameCanvasAPI),相关函数在J2SEAndroid版中完全一致。

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

 

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

 

//初始化时的精灵动画

01

//移动时的精灵动画

02

//背景图片

03

 

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


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

 

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

 

 

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

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

 

 

03

 

PS:CanvasScreen中也允许完全照搬J2MECanvas(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