📄 examplegamecanvas.java
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;
import java.lang.Math;
public class ExampleGameCanvas extends GameCanvas implements Runnable
{
private Display display;
private Command exitCommand = new Command("EXIT",Command.EXIT,1);
private Command restartCommand = new Command("RESTART",Command.OK,2);
//private boolean lock=false;
private boolean isPlay;//true就循环游戏
private long delay;
public int currentX,currentY;
private int width;//宽度
private int height;//高度
private long startTime= System.currentTimeMillis();
//layer manager
private LayerManager layerManager;
//tiledlayer
private TiledLayer tiledBackground;
//bomb baoxian;
Plane plane;
Bullets bullet;
Graphics g;
public ExampleGameCanvas()
{
super(true);
try
{
width= getWidth();
height=getHeight();
currentX=width/2;
currentY=height/2;
plane = new Plane();//g,currentX,currentY,height,width
bullet=new Bullets(width,height);
//baoxian=new bomb(currentX,currentY);
delay=20;
tiledBackground=initBackground();
layerManager = new LayerManager();
layerManager.append(tiledBackground);
initBackground();
}
catch(Exception ex)
{
System.out.println(ex);
}
}
public void initBackground() throws Exception
{
Image tileImages = Image.createImage("/icon/back_water.png");
TiledLayer tiledLayer= new TiledLayer(10,9,tileImages,32,32);
int[] map=
{1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
};
for(int i=0;i<map.length;i++)
{
int column = i%10;
int row=(i-column)/10;
tiledLayer.setCell(column,row,map[i]);
}
return tiledLayer;
}
public void drawScreen(Graphics g)
{
//plane.input(g);
layerManager.paint(g,0,0);
plane.SpriteUse().setPosition(currentX,currentY);
plane.SpriteUse().paint(g);
bullet.drawBullets(g);
// bomb.setPosition(1,1);
// bomb.paint(g);
// b_number.setPosition(18,1);
// b_number.setFrame(num);
// b_number.paint(g);
//initBullets(g);
//if(life==false)
// g.drawString("游戏结束!请按开始或退出",50,100,Graphics.TOP|Graphics.LEFT);
//时间显示
g.drawString(""+(int)((System.currentTimeMillis()-startTime)/1000)+"秒",210,5,Graphics.TOP|Graphics.LEFT);
//放保险
flushGraphics();
}
public void run()
{
g= getGraphics();
while (isPlay==true)
{
drawScreen(g);
input(g);
try
{
Thread.sleep(delay);
}
catch(Exception ex)
{
System.out.println(ex);
}
}
}
public void start()
{
isPlay=true;
Thread t=new Thread(this);
t.start();
}
public void stop()
{
isPlay =false;
}
public void input(Graphics g)//输入决定飞机走向
{
if(plane.lifeplane()==true)//如果飞机life
{
int keyStates=getKeyStates();//声明keystates接受键盘输入
plane.SpriteUse().setFrame(0);//显示正常状态的飞机
if((keyStates&LEFT_PRESSED)!=0)//左键按下
{
currentX=Math.max(0,currentX-2);//向左移动
plane.SpriteUse().setFrame(1);//向左飞的飞机图像
}
if((keyStates&RIGHT_PRESSED)!=0)//右键按下
if(currentX+24<width)//留出右边框距离
{
currentX=Math.min(width,currentX+2);//向右移动
plane.SpriteUse().setFrame(2);//向右飞的飞机图像
}
if((keyStates&UP_PRESSED)!=0)//上键按下
{
currentY=Math.max(0,currentY-2);//向上移动
plane.SpriteUse().setFrame(0);//显示正常状态的飞机
}
if((keyStates&DOWN_PRESSED)!=0)//下键按下
if(currentY+20<height)//留出下边框
{
currentY=Math.min(height,currentY+2);//向下移动
plane.SpriteUse().setFrame(0);//显示正常状态的飞机
}
}
drawScreen(g);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -