一个最最简单的飞行射击游戏(J2ME)的大体框架介绍

注:网上一个竖版射击游戏画面,借来用用

 

 

 

1 没有很多时间排错润色,将就一下

2 非从事游戏开发,水平有限,不求闪光,但求无错。

3 权当笔记,理清思路

 

一 主要类介绍

1 ModelMIDlet.java :程序入口

2 ModelCanvas.java :画布类,最主要的类,整个游戏状态流程,画面都在此类里

3 MyShip.java :自己的灰机

4 MyMissile.java :自己灰机发出的子弹

5 UFO.java :敌机

6 UfoMissile.java :敌机发出的子弹

7 Sprite.java :精灵类,上面的灰机子弹都是继承自这个类

 

二 稍微详细点的流程

 

此类游戏基本的流程就是执行MIDlet开始游戏,然后New一个Canvas画布对象,负责显示,开一个线程,里面是一个基于状态机的大循环。循环的时候处理按键,简单的逻辑判断后将结果画在屏幕上,再循环。

1) 程序以ModelMIDlet.java的 StartApp()为入口方法,New一个Canvas对象,调用Canvas的开始方法。

 

2) ModelCanvas类因为要处理按键,所以实现CommandListener接口,因为要使用线程所以实现Runnable 接口。

  主要方法:

  game_init()初始化

  start()方法,由MIDlet调用启动线程。

  public void commandAction(Command c, Displayable d) 里面处理按键信息,按了左键就让MyShip向左走走,

  protected final void paint(Graphics g) Canvas的需要重写的方法,里面根据状态的判断来画图贴图,如游戏未开始,就贴个logo图,游戏进行中,就把那些小飞机子弹什么的画出来。

  public final void run() 线程启动后调用,和paint方法一样,也是根据状态来处理,不同的是run里面主要是逻辑处理。 比如遍历下UFO的实例数组,哪个UFO还活着就移动下位置,或发个子弹,遍历子弹数组,哪个子弹超出屏幕了,就把它灭掉。所有逻辑处理完后,调用repaint();下让屏幕更新下。

 

3)Sprite.java 是所有画面活动的东西的基类。里面有一些比较固定的属性方法。

  如:位置,是否被击中,是否是活的,doMove移动自己的方法,doDraw画出自己的方法,供画布类的paint方法调用。其中有个比较特别的方法,boolean isOverlaps(Sprite otherSprite),是否和其他sprite碰撞,在run的逻辑判断时使用的。还有些get set 方法,

 

 

三 粗略的流程

 

启动程序后,MIDlet的startApp()方法被调用,然后new一个canvas,并调用其开始方法。

canvas的开始方法里进行初始化,此时状态为初始化等待开始,此时显示LOGO,

按键也一直被监听者。按键后开始游戏,此时状态为游戏中。然后启动进程的主循环,

主循环里进行一些逻辑判断和操作,如子弹移动,主角飞机是否中弹,一个循环后,刷新屏幕。

主循环过程监听着按键,移动或射击。

主循环逻辑判断时若中弹之生命结束,状态为失败结束,绘制结束画面,若消灭敌机,状态为胜利结束,绘制胜利画面。

 

 

一坨乱糟糟的文字,思路不是很清晰,将就下。

要展开写太复杂了,大体就这么个流程。

 

 

你可能感兴趣的:(5-J2ME手游)