服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

mophun & j2me 的游戏开发之旅(八)

看来还是更多的网友需要j2me方面的文章,最近我的

学习比较繁忙,所以没有写什么东西过来。呵呵,我

还是从开头开始讲吧。j2me是java平台的最小子集,

各个手机厂商使用相同的sun标准包,并在其上有各

自的实现,就我的过去经验知道siemens是api最开放

的,但nokia手机的运算效率好象很高,可能是我用

过siemens 2128 和 nokia 6108的缘故,我对这两个

手机厂商的手机比较了解。我的第一个游戏,俄罗斯

方块是运行在2128上面,速度我没有进行很好的控制

,尽管网友的反馈很好,但我知道这个我的第一个程

序在2128上不是很爽,后来用nokia 6108感觉好多了

。硬件平台是游戏功能的最主要体现者你需要什么样

的程序必须根据手机特性来选择。
做游戏,可以抛开很多j2me中的标准包,初学者可以

先了解如下一些类的作用:
canvas -> 可以理解成一个画布,你可以在上面绘制

各种元素
vector -> 类似带有索引的链表,是一个很好的线程

安全的东西,你可以在一个循环中剪切里面的元素,

而不会发生错误
random -> 随机数生成,在游戏里很有用
midlet ->象applet一样,被手机调用的入口,
graphics -> 可以理解为画笔
image -> 图片啊!!
thread -> 线程
………………………………
还有一些接口:
runnable -> 线程接口

等等!!
一个最常用的例子
我现在又没编译器,先写写,不行我在改

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.util.*;
class mycanvas extends canvas implements

runnable
{
      //双缓冲
      private image offimage;
      private graphics offgra;
      //线程
      private thread thread;
      //小球的移动控制
      private int x;
      private int y;
      private int vx;
      private int vy;
      public static final int var = 10;
      public mycanvas()
      {
           offimage = image.createimage

(getwidth(), getheight());
    offgra = image.getgraphics();
           x = math.abs((new random

()).nextint() % getwidth());
           y = math.abs((new random

()).nextint() % getheight());
           vx = 1;
           vy = 1;
   
           thread = new thread(this);
           thread.start();
 }
        public void paint(graphics g)
        {
  g.drawimage(offimage, 0, 0,

graphics.left|graphics.top);
        }
        public void run()
 {
  while(true)
  {
   if (x < 0 || x + var >

getwidth())
   {
    vx = -vx;
   }
   if (y < 0 || y + var >

getheight())
   {
    vy = -vy;
   }
   x += vx;
    y += vy;
   offgra.setcolor(0, 0,

0);
                        //黑色背景
   offgra.fillrect(0, 0,

getwidth(), getheight());
   offgra.setcolor(0, 0,

255);
   //兰色,小矩形
   offgra.fillrect(x, y,

var / 2, var / 2, graphics.top|graphics.left);
   //兰色,小圆形忘了api
   //offgra.fillarc(x, y,

var / 2, var / 2, 0,360, graphics.top|graphics.left);
   try
   {
    thread.sleep

(40);
   }
   catch(exception ex)
   {
   }
  }
 }
}


public class mygame extends midlet
{
 public void startapp()
 {
  diaplay.getdisplay(this).setcurrent(new mycanvas);
 }
 public void pauseapp(){}
 public void destroyapp(boolean b){}
}

//你可以以mygame作为名字做一个j2me工程,然后在c:/wtk21/apps/mygame/src 中做一个mygame.java文件,应该可以运行通过了

 

 

 

扫描关注微信公众号