以前从未接触和开发过J2ME游戏方面的东东,此次从6月下旬开始,先学习了半个月,不过这半个月也基本没顾上学,公司总是今天做同级生游戏,明天又节奏巨星游戏,天天尽折腾这些游戏的设计了,真正学J2ME估计只有4,5天的时间。
之后就开始开发和修改一款麻将游戏,通过开发这个游戏,学到了很多游戏开发的方法和经验,体会到一个J2ME程序,想要在小小的手机上运行,优化工作是多么的重要。
1.开发J2ME游戏一个首要的条件就是,从一开始开发,就一定的有几款测试用真机,一款显然是不够的。而且测试用真机理论上应该找性能非常差的老旧机器(当然是曾经非常畅销的机型);屏幕分辨率相当重要,否则你在模拟器上跑的非常欢实的程序,放到真机上,那简直就是噩梦。
2.本次开发在一穷二白的空白基础上,竟然自己想到了开发无数多屏幕效果,例如小鸟飞,云彩飘动,字体垂直下落,字体递推向上,打字机效果等等,现在回想起来,其实这些效果都很好实现,下面是小鸟从屏幕右边水平飞到左边的部分代码:
[code]
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);
}
[/code]
3.在J2ME游戏中切忌,千万不能使用多个Canvas类。本次开发一开始就是使用了好几个Canvas类,在Nokia N95上,每次切换到下一个Canvas,都会有白屏闪动一下,后来总算解决了这个问题,就是在开发中只使用一个真正的Canvas,其他的都仅仅是类和对象而已,构成实例后,放到Canvas中运行即可。
此方法对任何真机都可奏效,不会出现白屏,黑屏一闪而过的问题。
4.随机数的生成和使用。本次开发中,发现SUN的WTK中的CLDC1.0的jar包中竟然不支持nextInt(int n)这个方法,于是寻找了若干随机数生成方法。由于java程序生成的仅仅是伪随机数,因此在循环中生成随机数时,几乎所有的方法都有问题,今后仍然需要寻找一个真正好用的随机数算法。或者说,在程序里尽量少用随机数算法。
下面是我的一些随机数算法例程:
[code]
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);
}
}
[/code]

由于这是我第一次近距离接触J2ME游戏,文章里肯定有错误和不足的地方,请行家高手指正。

第一次亲密接触J2ME游戏相关推荐

  1. 小甲鱼python 第001讲:我和Python的第一次亲密接触

    文章目录 第000讲:愉快的开始 第001讲:我和Python的第一次亲密接触 讲课思尻 思尻题 1.python是脚本类型的语言 2.IDLE是什么 3.print()的作用 4.为什么 >& ...

  2. 第一次亲密接触IT技术(第一天)

    第一次亲密接触IT技术(第一天) 心得体会 本人在IT培训行业打拼16年,一直从事市场岗位,第一次亲密接触IT技术,了解计算机的基础原理,通过对于第一个任务的学习.思考.解决过程,主要学习了计算机进制 ...

  3. 跟计算机网络的亲密接触作文,我与网络的第一次亲密接触小学作文

    我与网络的第一次亲密接触小学作文 在学习.工作乃至生活中,大家最不陌生的就是作文了吧,借助作文可以宣泄心中的情感,调节自己的心情.那么一般作文是怎么写的呢?以下是小编为大家整理的我与网络的第一次亲密接 ...

  4. 第一次亲密接触(3)

    1.4 返璞归真的命令行 有一种说法,现代计算机不是靠电力驱动,而是靠"鼠标".多少应用程序的界面需要移动和点击鼠标来执行的.计算机本来的用意是把人类从反复单调的工作中解放出来,但 ...

  5. 与JBuilder2007的第一次亲密接触

    与JBuilder2007的第一次亲密接触 2007.01.10      [收藏到我的网摘] 最新的JBuilder2007一改Borland以往的做法,装上Eclipse的"心" ...

  6. 第一次亲密接触(1)

    原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 .作者信息和本声明.否则将追究法律责任. http://blog.csdn.net/zhangjie875 有一对儿异地的恋人,他们每 ...

  7. 《民富论》之读后感--与创业的第一次亲密接触

    <民富论>之读后感        ――与创业的第一次亲密接触 前一段时间读了一本<穷爸爸,富爸爸>的书,开始对理财有了兴趣,同时也是因为具备了理财的条件――资产已经由负转正,可 ...

  8. 与chatGPT的第一次亲密接触

    最近,chatGPT火了,不管传统媒体,还是各种自媒体平台都在说它.今天我突然也想注册一个玩玩,注册前2步还行,但是等点开邮箱校验时,打开网页显示: 上网查了一下,没向中国开放服务:如要注册除了要邮箱 ...

  9. day01 与MySQL的第一次亲密接触基础查询条件查询

    <尚硅谷>MySQL系统课程一共6天,下面介绍第1天的学习内容,主要涉及MySQL的内容介绍.进阶1基础查询和进阶2条件查询.干货满满,跟着课程的进度来的,可能篇幅略长,但是看完一定会有收 ...

最新文章

  1. 洛谷 P2468 粟粟的书架 二分(主席树+前缀和)
  2. 聚类(1)——混合高斯模型 Gaussian Mixture Model
  3. 数据告诉你史上最年轻35000分先生到底有多强?
  4. 电脑小白学python_零基础的小白怎么学python?
  5. 【生活智慧】005.信守诺言的约束
  6. WTM 构建DotNetCore开源生态,坐而论道不如起而行之
  7. android病毒下载地址,LINE病毒查杀
  8. 为什么计算机语言都是英语,编程为什么都是英语 编程为什么没有汉语
  9. Oracle 实验5 视图与索引
  10. 远程同步修改云服务器上的文件
  11. HTML+CSS制作七夕跳动的红心动画效果
  12. oracle多少钱一套_消防水炮多少钱一套?您真的只需要一套吗
  13. WINDOWS2003超级作用域
  14. oracle ogg下载安装,牛刀小试Oracle GoldenGate--OGG安装(一)
  15. android截屏加水印,Android截图以及加水印Demo
  16. 一起自学SLAM算法:写在前面
  17. Matplotlib系列(三):坐标轴变换及注释
  18. 使用html语言替换字符串中的特殊标点符号
  19. 你永远不知道用户怎么使用你的产品
  20. 每日新闻摘要 每天精选12条新闻简报 每天一分钟 知晓天下事 5月13日

热门文章

  1. Java常用的加密算法
  2. 奥运火炬事件,第二人生(Second Life)调查事件……
  3. Visual Studio 不显示SVN 状态图标解决方法
  4. 如何修复“无法打开应用,因为Apple无法检查其是否包含恶意软件“
  5. LinuxC/C++服务器开发学习路线(已签腾讯sp,附学习资料)
  6. 后门发现(yuange)
  7. 特斯拉正在使用区块链技术,以确保电池生产的原材料来自可持续的来源
  8. 复旦邱锡鹏新作:单机微调650亿参数大模型,业内人士:对大模型普及意义重大...
  9. hdu.3308 LCIS(线段树,区间合并+单点更新)
  10. 银行计算机上岸经验,有银行在职备考上岸的吗?求过来人分享经验~