`
nbtlxx
  • 浏览: 253258 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

手机游戏引擎框架的初步想法

阅读更多
一直想重构下手机游戏客户端的引擎
主要思路:
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;
		}
	}
}




有时间这两天再完善,加油
分享到:
评论

相关推荐

    游戏引擎框架 高清完整版

    《游戏引擎框架》是一本深度探讨游戏开发核心技术的专业书籍,主要针对希望深入理解游戏引擎架构的读者,包括程序员、游戏开发者以及对游戏技术有热情的学习者。这本书采用中文语言,内容高清,带有书签和目录,方便...

    3D手机游戏引擎的研发和实现

    本节详细介绍了一款3D手机游戏引擎的基本框架结构及其各个模块的设计与实现过程。该引擎被划分为九大模块,分别为: 1. **地图模块**:负责处理游戏世界的构建与展示,包括地形的生成、纹理映射等。 2. **网络模块*...

    基于JAVA基于J2ME的手机游戏开发的毕业设计,游戏采用了J2ME的游戏框架MIDP2.0,使用了J2ME的游戏引擎LWJGL

    本文介绍了一款基于JAVA基于J2ME的手机游戏的开发设计。该游戏采用了J2ME的游戏框架,使用了J2ME的游戏引擎,实现了游戏的基本功能,包括游戏场景的切换、游戏角色的控制、游戏物品的收集、游戏敌人的攻击等。 游戏...

    Unity游戏开发引擎框架.zip

    Unity游戏开发引擎框架

    基于Java+ME平台2D手机游戏引擎设计与实现.pdf

    通过对Java+ME平台上2D手机游戏引擎的设计与实现进行深入研究,本文提出了一个高效的游戏引擎框架。该框架不仅能够有效解决手机硬件资源限制带来的问题,还能提高游戏的开发效率和质量。特别是对于动画管理和碰撞...

    设计并行化游戏引擎的框架.doc

    ### 设计并行化游戏引擎框架的关键知识点 #### 一、引言 随着多核心处理器技术的发展,游戏引擎的设计也开始转向充分利用多线程优势的方向。并行化游戏引擎能够显著提高游戏性能,尤其是在多核心处理器的支持下。...

    GameEngine一个游戏引擎的框架DX的很不错

    游戏引擎是开发游戏的核心工具,它为创建交互式3D或2D游戏提供了一整套功能。"GameEngine"是一个专为此目的设计的框架,它特别强调了对DirectX(DX)技术的集成。DirectX是由微软开发的一系列应用程序接口(API),...

    基于Android平台手机游戏引擎的设计与实现.pdf

    《基于Android平台手机游戏引擎的设计与实现》这篇文章探讨了如何在Android平台上构建一款高效、智能的游戏引擎,并通过实例展示了其应用。文章的核心内容包括游戏引擎的基本原理、相关人工智能技术的应用,以及具体...

    基于J2ME的手机游戏框架设计与优化.pdf

    ### 基于J2ME的手机游戏框架设计与优化 #### 核心知识点解析: 在探讨《基于J2ME的手机游戏框架设计与优化》这一主题时,我们需聚焦于J2ME(Java 2 Platform, Micro Edition)平台下的手机游戏开发技术,及其框架...

    mir2 引擎框架 051213 (窗口引擎)

    mir2 引擎框架 051213,窗口引擎。

    api游戏框架小游戏

    3. **游戏引擎源文件 GameEngine.cpp.txt** - 游戏引擎是游戏框架的核心,负责处理游戏循环、渲染、物理模拟等关键任务。这个文件包含了游戏引擎的源代码,是整个项目的技术基础。 4. **头文件 有三个分开放.txt** -...

    自己实现的通用游戏辅助框架源码

    游戏辅助框架是为游戏开发提供便利的工具集,它通常包含了一系列模块,如自动化任务执行、数据抓取、游戏逻辑处理等,旨在提高游戏开发效率或玩家的游戏体验。本资源提供的"自己实现的通用游戏辅助框架源码"可能包含...

    小小android游戏框架

    游戏引擎是游戏框架的核心,它负责处理游戏的渲染、物理模拟、碰撞检测和游戏逻辑。小小Android游戏框架的引擎部分可能包括以下几个关键模块: - **渲染引擎**:处理2D图形的绘制,包括蛇、食物和游戏背景。 - **...

    白鹭H5游戏框架

    白鹭引擎(Egret Engine)是这套框架的核心,它提供了一整套解决方案,包括游戏开发、调试、预览、优化等多个环节,使得开发者能够快速构建高质量的H5游戏。 一、白鹭引擎 白鹭引擎是基于TypeScript语言开发的开源...

    C#游戏框架.rar

    首先,C#游戏框架是基于.NET Framework或.NET Core的一种开发工具,它提供了游戏开发所需的基础结构,包括渲染引擎、物理系统、音频处理、输入管理等模块。C#的面向对象特性使得框架设计更加灵活,代码复用性更强,...

    CocosCreator开源游戏开发框架

    CocosCreator开源游戏开发框架,附文档说明。包含GameMain、AudioManager、ConfigManager、GameController、GameDataManager、ListenerManager、TimeManager、UIManager、ShaderManager、MathExtension、String...

    Egret是一个全新的开放手机游戏和应用程序引擎

    Egret引擎将JavaScript与自身的框架相结合,为游戏和应用的构建提供了高效、便捷的解决方案。 Egret引擎的主要特点包括: 1. **跨平台兼容性**:Egret支持多种操作系统,使开发者能够编写一次代码,然后在多个平台...

    ET6框架放置游戏Demo

    通过学习和实践这个"ET6框架放置游戏Demo",开发者可以了解到如何利用ET6框架来构建游戏,理解其核心架构,学习如何整合Unity引擎,并掌握资源管理、数据驱动开发、AI设计、网络通信等方面的知识。同时,良好的代码...

    OGRE 3D 游戏开发框架指南+光盘源码

    《OGRE 3D游戏开发框架指南(含CD光盘1张)》主要用来帮助读者从一个引擎研究者成为一个游戏开发人员,《OGRE 3D游戏开发框架指南(含CD光盘1张)》的最大特点是依靠代码来推进进度,以三周21天的时间顺序来编排主体内容...

    PHP框架对比,TP框架初步认识

    几种PHP框架之间的对比以及对TP框架的安装下载方法,对TP框架目录进行介绍。

Global site tag (gtag.js) - Google Analytics