📄 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 + -