⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 movegamedemo.java

📁 J2ME MIDP 2.0 无线设备编程的一些源码
💻 JAVA
字号:
//moveGameDemo.java file
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.game.*;
import java.util.*;

public class moveGameDemo extends MIDlet implements CommandListener
{
    private Command exitCommand;
    private DemoCanvas canvas;
    private DemoTask task ;
    private Timer timer;
    public moveGameDemo()
    {//创建命令,画布和定时器
        exitCommand =new Command("Exit",Command.EXIT,1);
        canvas =new DemoCanvas();
        canvas.addCommand(exitCommand);
        canvas.setCommandListener(this);
        timer = new Timer();
        task = new DemoTask(canvas);
    }
    protected void startApp(  ) 
    {//显示画布并开始游戏执行
        Display.getDisplay(this).setCurrent(canvas);
        timer.schedule(task, 0,10);
    }

    protected void pauseApp(  )
    {//暂停游戏执行
        timer.cancel();
    }

    protected void destroyApp( boolean p1 )
    {
    }

    public void commandAction(Command c,Displayable d)
    {
        if (c ==exitCommand)
        {
            destroyApp(false);
            notifyDestroyed();
        }
    }
    public class DemoCanvas extends GameCanvas
    {
        private Graphics g;
        private int[ ] clrs={0X0000FFFF,0x00FF0000,0x0000FF00,0x000000FF};
        private int curColor=0X0000FFFF;
        private int[ ]  rgb;
        private int curX=0,curY=0;
        private int maxX, maxY;
        public DemoCanvas() 
        {
            super(true);
            //初始化用于Alpha 绘图的象素数组
            rgb = new int[81];
            for(int i=0;i<81;i++)
                rgb[i]=0x88FFFFFF;
            g = getGraphics();
            //计算方块移动范围
            maxX = getWidth() -9;
            maxY = getHeight() -9;
        }
        //执行游戏功能        
        public void Action()
        {
            //通过Alpha混合使原来的方块颜色变浅
            g.drawRGB(rgb,0,9,curX,curY,9,9,true);
            int keyState = getKeyStates();
            //判断ABCD键是否被按下
            if((keyState & GAME_A_PRESSED) !=0)
                curColor=clrs[0];
            else if((keyState & GAME_B_PRESSED) !=0)
                curColor=clrs[1];
            else if((keyState & GAME_C_PRESSED) !=0)
                curColor=clrs[2];
            else if((keyState & GAME_D_PRESSED) !=0)
                curColor=clrs[3];
            //判断上下左右键是否被按下
            if((keyState & UP_PRESSED) !=0 && curY>0)
                curY --;
            if((keyState & DOWN_PRESSED) !=0 && curY<maxY)
                curY ++;
            if((keyState & LEFT_PRESSED) !=0 && curX>0)
                curX --;
            if((keyState & RIGHT_PRESSED) !=0 && curX<maxX)
                curX ++;
            //绘制新的方块
            g.setColor(curColor);
            g.fillRect(curX,curY,9,9);
            flushGraphics();
        }
        public void sizeChanged(int w, int h)
        {//屏幕大小改变时重新计算方块移动范围
            maxX = w-9;
            maxY = h-9;
        }
    }
    public class DemoTask extends TimerTask
    {
        private DemoCanvas canvas;
        public DemoTask(DemoCanvas can)
        {
            canvas = can;
        }
        public void run()
        {
            canvas.Action();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -