`
sharong
  • 浏览: 492442 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
D1667ae2-8cfc-3b68-ac7c-5e282789fa4a
论开源
浏览量:8695
7eb53364-fe48-371c-9623-887640be0185
Spring-data-j...
浏览量:13025
社区版块
存档分类
最新评论

第一次亲密接触J2ME游戏

阅读更多
以前从未接触和开发过J2ME游戏方面的东东,此次从6月下旬开始,先学习了半个月,不过这半个月也基本没顾上学,公司总是今天做同级生游戏,明天又节奏巨星游戏,天天尽折腾这些游戏的设计了,真正学J2ME估计只有4,5天的时间。
之后就开始开发和修改一款麻将游戏,通过开发这个游戏,学到了很多游戏开发的方法和经验,体会到一个J2ME程序,想要在小小的手机上运行,优化工作是多么的重要。
1.开发J2ME游戏一个首要的条件就是,从一开始开发,就一定的有几款测试用真机,一款显然是不够的。而且测试用真机理论上应该找性能非常差的老旧机器(当然是曾经非常畅销的机型);屏幕分辨率相当重要,否则你在模拟器上跑的非常欢实的程序,放到真机上,那简直就是噩梦。
2.本次开发在一穷二白的空白基础上,竟然自己想到了开发无数多屏幕效果,例如小鸟飞,云彩飘动,字体垂直下落,字体递推向上,打字机效果等等,现在回想起来,其实这些效果都很好实现,下面是小鸟从屏幕右边水平飞到左边的部分代码:
	private void birdFly(Graphics g,int beiHeight) {
		birdCount++;
		int bottom = screenHeight - beiHeight - ban1Img.getHeight();
				
		//换图片,bird1Img,bird2Img,bird3Img已经实例化过,最好是一张大图包含若干小鸟状态
		Image birdImg = null;
		if (birdCount % 3 == 0) {
			birdImg = bird1Img;
		} else if (birdCount % 3 == 1) {
			birdImg = bird2Img;
		} else if (birdCount % 3 == 2) {
			birdImg = bird3Img;
		}
		//birdAppearX, birdAppearY等是成员变量,自己设置需要的初始值
		birdAppearX -= 10;
		
		//如果右边到达了左边界
		if( birdAppearX < 0){
			birdAppearX=screenWidth-birdImg.getWidth();
			birdAppearY = GameUtils.getRandomByRate(beiHeight + 5, bottom, bottom - gate1Img.getHeight()/2, "90%");	
		}
		
		g.drawImage(birdImg, birdAppearX, birdAppearY, 0);		
	}

3.在J2ME游戏中切忌,千万不能使用多个Canvas类。本次开发一开始就是使用了好几个Canvas类,在Nokia N95上,每次切换到下一个Canvas,都会有白屏闪动一下,后来总算解决了这个问题,就是在开发中只使用一个真正的Canvas,其他的都仅仅是类和对象而已,构成实例后,放到Canvas中运行即可。
此方法对任何真机都可奏效,不会出现白屏,黑屏一闪而过的问题。
4.随机数的生成和使用。本次开发中,发现SUN的WTK中的CLDC1.0的jar包中竟然不支持nextInt(int n)这个方法,于是寻找了若干随机数生成方法。由于java程序生成的仅仅是伪随机数,因此在循环中生成随机数时,几乎所有的方法都有问题,今后仍然需要寻找一个真正好用的随机数算法。或者说,在程序里尽量少用随机数算法。
下面是我的一些随机数算法例程:
public class GameUtils {
	private static long lRandomSeed = 0;
	private static Random random = new Random();

	public static int nextInt(int limit){		        
        random.setSeed(lRandomSeed++);
        int absVar = Math.abs(random.nextInt());
        if (limit == 0){
            limit = 1;
        }
        return (absVar % limit);
    }
	
	public static int nextInt(int limit){		                
        return Math.abs(random.nextInt()) % limit + 1;
    }

	public static int nextInt(int n,long lseed) {
		if (n <= 0)
			throw new IllegalArgumentException("n must be positive");
		
		//Random random = new  Random();
		random.setSeed(lseed);
		if ((n & -n) == n) // i.e., n is a power of 2
			return Math.abs((int) ((n * (long) random.nextInt()) >> 31));
		int bits, val;
		do {
			bits = random.nextInt();
			val = bits % n;
		} while (bits - val + (n - 1) < 0);
	
		return Math.abs(val);
	}
}


由于这是我第一次近距离接触J2ME游戏,文章里肯定有错误和不足的地方,请行家高手指正。
分享到:
评论
1 楼 whaosoft 2009-09-16  
j2me 没接触过,现在主要从事 j2ee

相关推荐

    我的第一个j2me游戏代码

    我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我...

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏下,上为另一部分

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏

    J2ME游戏开发(第一版)

    《J2ME游戏开发(第一版)》是针对Java Micro Edition(J2ME)平台进行游戏编程的专业指导书籍。J2ME是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和平板电脑。这本书的焦点在于教导开发者...

    J2ME小游戏J2ME小游戏J2ME小游戏上,下为另一部分

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏

    j2me游戏引擎详解

    总之,J2ME游戏引擎是构建移动平台上游戏的关键工具,它们通过提供一系列预封装的功能和优化,帮助开发者克服硬件限制,创造出引人入胜的游戏体验。随着技术的发展,虽然现在更多高级平台如Unity和Unreal Engine占据...

    j2me游戏开发 经典教程

    j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发

    j2ME游戏开发详解

    总之,j2ME游戏开发涉及到多方面的技术和技巧,从基础的MIDP API学习,到游戏设计、图形动画和音频处理,再到性能优化和分发部署,每一个环节都是成功开发游戏的关键。通过深入理解和实践,开发者可以创造出丰富的...

    J2me 游戏原代码

    Java 2 Micro Edition (J2ME) 是一种用于开发小型设备和嵌入式系统的 Java 平台,尤其在早期智能手机和功能手机上广泛应用于游戏开发。"J2ME 游戏原代码" 提供的资源可能是一个包含 J2ME 游戏完整源代码的压缩包,名...

    J2ME 游戏开发资源

    J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于移动设备、嵌入式设备上的应用程序开发,尤其是手机游戏。这个压缩包包含的“J2ME游戏开发资源”是一份宝贵的资料库,对于想要学习或从事J2ME游戏...

    经典j2me游戏实例

    Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门用于开发在移动设备和嵌入式系统上运行的应用程序,其中包括许多经典的游戏。本篇将通过分析提供的文件名来探讨J2ME游戏开发的基础知识。 1. **NewGame....

    J2ME游戏源代码

    J2ME应用的数据存储一般采用RecordStore系统,这是一个简单的键值对数据库,用于保存用户数据和游戏进度。 8. **优化技巧** 由于资源限制,J2ME游戏需要进行性能优化。例如,减少绘图调用、使用位图操作而非颜色...

    J2ME游戏的基本结构

    J2ME 游戏开发通常需要一个集成开发环境(IDE),如 NetBeans 或 Eclipse,以及相应的 J2ME 插件。这些工具提供代码编辑、编译、模拟器测试等功能,帮助开发者构建和调试应用程序。 二、配置文件 J2ME 游戏的核心...

    j2me游戏中文教程

    《J2ME游戏开发中文教程》是一本专为Java ME(J2ME)平台上的游戏开发而设计的详细指南。J2ME,全称为Java 2 Micro Edition,是Java技术的一个分支,主要用于移动设备和嵌入式系统的应用程序开发,包括手机、智能...

    j2me游戏开发实例

    本资源包含多个J2ME游戏的源代码,对于学习J2ME游戏开发的初学者来说,是一个极其宝贵的实践参考。 首先,我们要理解J2ME的游戏开发基础。J2ME使用MIDP(Mobile Information Device Profile)和CLDC(Connected ...

    J2ME游戏开发J2ME游戏开发

    J2ME游戏的发布通常涉及将游戏打包成JAR(Java Archive)文件,然后通过运营商的网络服务或第三方应用商店分发。用户可以通过设备的内置浏览器或应用商店下载并安装。 **总结** J2ME游戏开发是一个涵盖多方面技术...

    J2ME 游戏

    J2ME 游戏

    J2ME游戏开发(第一版)无打印限制版

    《J2ME游戏开发》是一本专注于Java 2 Micro Edition (J2ME) 平台上游戏开发的专业书籍。该书由Jason Lam编写,Deaboway Chou翻译成中文版本。本书旨在教授读者如何利用J2ME的技术栈来开发适用于移动设备的游戏。 ##...

    一个简单的j2me游戏源码.rar

    【标题】"一个简单的j2ME游戏源码"揭示了我们正在探讨的是一个基于Java Micro Edition(J2ME)平台开发的小型游戏项目。J2ME是Java平台的一个子集,专为资源有限的移动设备如早期的智能手机、功能手机以及嵌入式系统...

    j2me游戏.rar

    Java 2 Micro Edition(J2ME)是一种针对嵌入式设备和移动设备的Java平台,主要用于开发手机游戏、应用程序和服务。"j2me游戏.rar"很可能是包含了一系列使用J2ME技术开发的游戏资源包。在本文中,我们将深入探讨J2ME...

Global site tag (gtag.js) - Google Analytics