一直想重构下手机游戏客户端的引擎
主要思路:
1. Main.java 入口类,集成mildet, 负责初始化engine对象,启动线程
2. Engine.java 核心
主要方法就是 run(), 线程体,负责调用logic()方法和draw(g)方法,来分别处理逻辑和界面更新
构造方法,引入view.java 对象,后者负责接收按键输入和paint的分发
状态切换函数,因为引擎基于state机来处理,需要切换不同的状态
后续考虑如何将网络的数据接口整合进来
3. MyGameEngine.java
引擎的子类,来实现具体某个场景的界面和逻辑处理
重点在于flow(). draw(g)
下面是基本代码
package com.nbgame.engine;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Main extends MIDlet {
static Display display = null;
protected void destroyApp(boolean flag) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
static Engine engine;
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
display = Display.getDisplay(this);
// engine = Engine.createEngine();
// engine = new Engine();
engine = new MyGameEngine();
new Thread(engine).start();
}
public static Display getDisplay(){
return display;
}
}
package com.nbgame.engine;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import com.nbgame.ui.core.View;
public class Engine extends View implements Runnable {
protected int mainState;
protected final static int LOGIN=0;
private static long sleepTime=100;
static Display display = null;
Main midlet = null;
static View view = null;
Engine engine = this;
private long startTime;
private boolean isRunning;
public Engine() {
view = new View(this);
view.setFullScreenMode(true);
display = Main.getDisplay();
display.setCurrent(view);
isRunning = true;
}
public void run() {
// TODO Auto-generated method stub
mainState = LOGIN;
while (isRunning) {
// long start = System.currentTimeMillis();
flow();
View.key = View.NOKEY;
view.repaint();
// long end = System.currentTimeMillis();
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
void flow() {
;
}
public void draw(Graphics g) {
;
}
protected void nextMainState(int mainState) {
// TODO Auto-generated method stub
startTime = System.currentTimeMillis();
this.mainState = mainState;
}
protected void stop() {
isRunning = false;
System.gc();
}
}
package com.nbgame.engine;
import javax.microedition.lcdui.Graphics;
import com.nbgame.ui.core.Dialog;
import com.nbgame.ui.core.Menu;
import com.nbgame.ui.core.View;
public class MyGameEngine extends Engine {
private static final int HALL = 1;
Menu menu = null;
String[] menuItems = {
"菜单1","菜单2","菜单3"
};
private Dialog dlg;
public void flow() {
// TODO Auto-generated method stub
System.out.println("key" + key);
switch (mainState) {
case LOGIN:
menu = new Menu(menuItems, 0);
if(view.key == View.VKEY_UP){
menu.selectUp();
return;
}else if(view.key == View.VKEY_DOWN){
menu.selectDown();
return;
}else if(view.key == View.VKEY_FIRE){
nextMainState(HALL);
return;
}
break;
case HALL:{
if(dlg ==null){
dlg = new Dialog("dlg content", "ttitle", 0);
}
if(view.key == View.VKEY_LEFT){
dlg.confirm();
return;
}else if(view.key == View.VKEY_RIGHT){
dlg.cancel();
return;
}
};break;
}
}
public void draw(Graphics g) {
// TODO Auto-generated method stub
// System.out.println("draw");
switch (mainState) {
case LOGIN:
if(menu!=null){
menu.paint(g);
}
break;
case HALL:{
if(dlg != null){
dlg.paint(g);
}
}
default:
break;
}
}
}
有时间这两天再完善,加油
分享到:
相关推荐
AS3游戏引擎框架大全,介绍开发AS3游戏引擎的文档,可供参考。
AS3游戏引擎框架大全.docxAS3游戏引擎框架大全.docxAS3游戏引擎框架大全.docxAS3游戏引擎框架大全.docxAS3游戏引擎框架大全.docxAS3游戏引擎框架大全.docxAS3游戏引擎框架大全.docxAS3游戏引擎框架大全.docxAS3游戏...
AS3游戏引擎框架大全.pdfAS3游戏引擎框架大全.pdfAS3游戏引擎框架大全.pdfAS3游戏引擎框架大全.pdfAS3游戏引擎框架大全.pdfAS3游戏引擎框架大全.pdfAS3游戏引擎框架大全.pdfAS3游戏引擎框架大全.pdfAS3游戏引擎框架...
设计并行化游戏引擎的框架 作者:Jeff Andrews
phaser HTML5 2D游戏引擎框架
游戏引擎框架,包含win32,ios,android,展示了如何实现跨平台
牛人写的java手机游戏开发使用的框架代码,很有参考价值!
游戏引擎架构 ,中文高清PDF电子书带书签目录完整版下载
3d 游戏开发 引擎架构 场景管理 碰撞检测 物理系统
基于ORGE所实现的高层游戏引擎框架pdf格式电子书,很小,主要讲的是框架,教你如何开始应用ORGE
并行化游戏引擎框架.doc
Visual C++游戏编程框架/引擎的测试 出自Michael Morrison 游戏编程入门
本文介绍了一款基于JAVA基于J2ME的手机游戏的开发设计。该游戏采用了J2ME的游戏框架,使用了J2ME的游戏引擎,实现了游戏的基本功能,包括游戏场景的切换、游戏角色的控制、游戏物品的收集、游戏敌人的攻击等。 游戏...
j2me 手机游戏 通用框架(非常强大).rar
AS3游戏引擎框架大全.doc
游戏开发热更新框架,目前公司项目使用的unity3d框架,具体可查看下面的教程: https://blog.csdn.net/yxriyin/article/details/78413057
本人总结出的手机游戏开发框架好用,其清晰,明了,给所有手机游戏开发人员一个思路。。。
基于Lucene的搜索引擎框架Compass教程
AR(增强现实)框架支持Unity3D游戏引擎2
一个不错的游戏引擎框架 实现了DX的界面 摄像机 场景管理 声音等等 学习用不错