?? movegamedemo.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 + -