一直想重构下手机游戏客户端的引擎
主要思路:
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;
}
}
}
有时间这两天再完善,加油
分享到:
相关推荐
本篇文章将深入探讨如何设计一个并行化的游戏引擎框架,以充分利用现代计算机的多核性能,提升游戏运行效率。 并行化的基本概念是将任务分解为多个可同时执行的部分,以便在多个处理器核心上并发处理。在游戏引擎中...
【标题】"手机游戏开发框架源码EasyMF"是一个专为Java手机游戏开发设计的框架,由技术高手精心编写的代码库,具有很高的学习和应用价值。它旨在简化游戏开发过程,提供一套高效且易用的工具集,帮助开发者快速构建高...
分布式游戏服务器引擎框架是现代游戏开发中的核心技术之一,它为构建大规模、高并发的游戏环境提供了强有力的支持。在本文中,我们将深入探讨一个基于Lua的分布式游戏服务器引擎框架,该框架以其轻量级、简单易用、...
《基于ORGE所实现的高层游戏引擎框架》是一本深入探讨ORGE技术在游戏开发中的应用的专业书籍。ORGE(Object-Relational Game Engine)是一个专门为游戏开发设计的高级框架,它结合了对象关系映射(ORM)的概念,旨在...
本次分享的压缩包文件“Unity游戏开发引擎框架.zip”中包含了两个关键性的文件夹:“TaurenEngine-main”和“Unity游戏开发引擎框架_TaurenEngine”,这两个文件夹共同构成了一个完整的游戏开发框架。 ...
并行化游戏引擎框架.doc
《纯Java实现的游戏引擎框架开发详解》 游戏引擎是游戏开发的核心,它为开发者提供了创建游戏所需的工具和组件,使得游戏开发更为高效便捷。本文将深入探讨一个纯Java实现的游戏引擎框架,它适用于毕业设计、课程...
通过对Java+ME平台上2D手机游戏引擎的设计与实现进行深入研究,本文提出了一个高效的游戏引擎框架。该框架不仅能够有效解决手机硬件资源限制带来的问题,还能提高游戏的开发效率和质量。特别是对于动画管理和碰撞...
游戏引擎是开发游戏的核心工具,它为创建交互式3D或2D游戏提供了一整套功能。"GameEngine"是一个专为此目的设计的框架,它特别强调了对DirectX(DX)技术的集成。DirectX是由微软开发的一系列应用程序接口(API),...
ogre编程方面的实例指导 内容丰富 通过几个实例能够对入门者进行指导
本项目是一个游戏服务端引擎框架的源码实现,其核心架构基于Java语言,是一个精心设计的代码集合,旨在为游戏开发者提供一套完备的游戏服务器端解决方案。整个项目包含了416个文件,其中有400个是Java源代码文件,...
通过学习和实践这个"ET6框架放置游戏Demo",开发者可以了解到如何利用ET6框架来构建游戏,理解其核心架构,学习如何整合Unity引擎,并掌握资源管理、数据驱动开发、AI设计、网络通信等方面的知识。同时,良好的代码...
游戏引擎架构是开发游戏的核心技术,它为游戏开发者提供了创建互动体验所需的各种工具、系统和框架。《Game Engine Architecture》是一本深入探讨这个主题的专业书籍,由Jason Gregory撰写,中文高清印影版则是该书...
### 基于J2ME的手机游戏框架设计与优化 #### 核心知识点解析: 在探讨《基于J2ME的手机游戏框架设计与优化》这一主题时,我们需聚焦于J2ME(Java 2 Platform, Micro Edition)平台下的手机游戏开发技术,及其框架...
这是一个基于PenJS引擎的游戏开发框架。PenJS是一个HTML5游戏引擎,提供了丰富的API和功能,方便开发者快速构建出高质量的游戏。通过此框架,你可以轻松地创建出各种类型的游戏,例如动作、冒险、角色扮演等。我们...
mir2 引擎框架 051213,窗口引擎。
空战游戏通常需要处理复杂的图形渲染、物理模拟以及实时交互,因此选择一个强大的游戏引擎或框架至关重要。 首先,我们来谈谈Android游戏框架。Android游戏框架提供了一套工具和库,简化了游戏开发过程,允许开发者...
首先,dotnet-Knight框架是针对Unity5.x引擎设计的游戏GamePlay框架,它的主要目标是简化游戏开发过程,使开发者能够将精力集中在游戏内容创新上,而非底层架构的搭建。框架提供了丰富的游戏接口,这些接口经过精心...
1. **图形渲染**:游戏框架通常包含一个图形渲染引擎,负责将游戏场景以2D图像的形式显示在屏幕上。这涉及到纹理贴图、精灵(Sprite)管理、图层混合以及动画序列的支持。 2. **物理引擎**:用于模拟游戏对象的物理...