J2ME游戏开发笔记整编版

-------------一般类问题--------------

1 J2ME中查表法使用三角函数

CLDC和MIDP都没有提供三角函数,而且CLDC1.0中也没有浮点数,所以我们的选择是查表。使用8位定点数的sin和cos表。下面是wtk自带demo中的代码,只提供了有限的几个角度,实际使用时根据需要细化角度值。

// sines of angles 0, 10, 20, 30, 40, 50, 60, 70, 80, 90,all *256

   private static final int[] SINES =

   { 0, 44, 88, 128, 165, 196, 222, 241, 252, 256 };

   // angle is in degrees/10, i.e. 0..36 for full circle

   private static int sineTimes256(int angle)

   {

   angle %= 36;  // 360 degrees

   if (angle <= 9)  // 0..90 degrees

   {

   return SINES[angle];

   }

   else if (angle <= 18)  // 90..180 degrees

   {

   return SINES[18-angle];

   }

   else if (angle <= 27)  // 180..270 degrees

   {

   return -SINES[angle-18];

   }

   else   // 270..360 degrees

   {

   return -SINES[36-angle];

   }

   }

   // angle is in degrees/10, i.e. 0..36 for full circle

   private static int cosineTimes256(int angle)

   {

   return sineTimes256(angle + 9);   // i.e. add 90 degrees

   }

   (2006.5 注:有一些算法可以生成三角函数值,这样只要在游戏载入时生成一下函数表即可,节省一些数据)

   2 J2ME中使用随机数

   产生0~n之间的随机数:

   (ran.nextInt()>>>1)%n

   或

   (ran.nextInt()&0x7FFFFFFF)%n

   产生-n~0之间的随机数:

   (ran.nextInt() | 0x80000000 )%n

时间: 2024-10-31 09:02:12

J2ME游戏开发笔记整编版的相关文章

J2ME游戏开发中时钟的简单实现

时钟 在游戏开发中,有时候我们需要一个时钟来记录游戏的时间,如果时间结束则结束游戏.本文介绍如何在J2ME中使用Timer和TimerTask来实现这样一个时钟,并给出具体代码实例. 在java.util包中有一个TimerTask类,你可以扩展这个类并且实现他的run()方法,在run()方法中编写我们的逻辑代码.如果我们想制作一个游戏时钟,那么非常简单我们编写一个GameClock类扩展TimerTask,GameClock需要维持一个实例变量timeLeft,这样我们就可以记录游戏剩余的时

J2ME游戏开发技巧

不久前我曾用J2ME开发了一个MotoT720下的彩色游戏-宝石方块(GridOne).开发过程中积累了一些经验,现在写出来与大家分享. 使用双缓冲避免屏幕闪烁 双缓冲技术是编写J2ME游戏程序的关键技术之一.实际上,双缓冲技术是计算机动画的一项传统技术.造成屏幕闪烁的主要原因在于,画面在显示的同时,程序又在改变它,于是画面闪烁.解决办法就是在内存中开辟一片区域作为后台画面,程序对它更新,修改,完成后再显示它.这样被显示的图像永远是已经完全画好的图像,程序修改的将不是正在被显示的图像.当然还有其

【J2ME 2D 游戏开发系列】◣HIMI游戏开发启蒙教程◢JAVA零基础学习J2ME游戏开发全过程!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/j2me-2/774.html Himi从写博客的最早开始就是Android游戏开发相关的,其实那么很多童鞋也知道Himi是做Java-J2me/Kjava出身,所以不少童鞋还在问我是否可以写一些J2me的相关游戏开发博文.虽然j2me趋势随着Nokia的没落和Android的崛起已经慢慢被弱化掉,但是J2me也是早些年非常火的平台不是么!

J2ME游戏开发学习之用setClip分割图片

游戏开发中我们往往需要把一些列零碎的小图片合成一幅比较大的图片,需要用到这些图片时可以通过setClip画这张大图的一小部分,也可以预先通过setClip把大图分割成小图然后直接调用小图.下面通过例子来说明如何分割图片. 建立一个Image数组:Image[ ] imgNumbers = new Image[10]; private void initImgNumbers() throws Exception {Image imgTotal = Image.createImage(-);Grap

J2ME游戏开发中的地图设计与绘制

设计 在开发很多类型的游戏中,地图系统都需要良好的设计,直观的说,我们需要的地图系统仅仅是一个2D数组,然后用最快的方式将数组影射到屏幕上.       游戏中的地图通常不是由程序员用键盘输入到程序里然后再在程序中修改然后再修改的狂乱过程,而是一般先由程序员做一个地图编辑器,在这个地图编辑器中用鼠标点点点,再保存的过程,或者是从网络上下载的一些成熟编辑器比如:mappy这样的工具生成地图,再用脚本语言为mappy写一个应该保存成什么样格式的程序.通常地图分为45度角,侧视角和俯视角等等,45度角

J2ME游戏开发学习之高效漂亮显示积分

显示 游戏中能漂亮地显示积分是很重要的,手机自带的字体无疑太难看了,所以我们需要用图片来代替数字.开发学习之高效漂亮显示积分-"> 这个是图片资源, 新建一个图片数组:Image[] imgNumbers = new Image[10];然后读入即可 把这个函数加入到你的游戏画积分部分就可以了 /**    * 画得到的总分数    * @param g Graphics * @param totalScore    */   private void drawTotalScore(Gra

J2ME游戏开发学习之高效&amp;amp;漂亮显示积分

游戏中能漂亮地显示积分是很重要的,手机自带的字体无疑太难看了,所以我们需要用图片来代替数字.这个是图片资源, 新建一个图片数组:Image[] imgNumbers = new Image[10];然后读入即可 把这个函数加入到你的游戏画积分部分就可以了 /**    * 画得到的总分数    * @param g Graphics * @param totalScore    */   private void drawTotalScore(Graphics g) {     //把当前的总经

使用J2ME技术开发RPG游戏之按键处理机制

在游戏中,按键处理机制也需要小心的实现,这里就介绍一种实用的按键处理机制. 在实际的游戏中,一般为了按键灵敏,我们一般不会直接在keyPressed或keyReleased方法内部书写逻辑的代码,而只是在这些方法内部记录或清除按键的记录,而把实际的处理放在线程中进行.这个是本机制中采用的方式. 而且不同手机的按键键值存在不同,为了方便移植,我们把按键转换成自己定义的数值,然后在程序中使用自定义的值进行处理. 该机制中最核心的变量为: private int keyStates; 用该变量中的一个

J2ME程序开发新手入门九大要点

程序     一.J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明. J2ME中使用到的Java基础知识: 1.Java语法基础:包括基本数据类型.关键字.运算符等等     2.面向对象的思想:类和对象的概念,继承和多态等等. 3.异常处理 4.多线程 J2ME中没有用