📄 democanvas.java
字号:
package com.j2medev.chapter5;
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;
import java.io.*;
public class DemoCanvas
extends GameCanvas
implements CommandListener, Runnable {
private Image imgA,imgB;
private Image mapImg0,mapImg1;
private TiledLayer tiledLayer0;
private TiledLayer tiledLayer1;
private LayerManager layers;
private Sprite spriteA,spriteB;
private int keyState;
private boolean collideSta;
private Graphics g;
private int Ypos0;
private int Ypos1;
public DemoCanvas() {
super(false);
this.setFullScreenMode(true);
try {
imgA = Image.createImage("/img0.png");
imgB = Image.createImage("/img1.png");
mapImg0 = Image.createImage("/map0.png");
mapImg1 = Image.createImage("/map1.png");
} catch (IOException ex) {
ex.printStackTrace();
}
tiledLayer0 = new TiledLayer(9,20,mapImg0,28,28);
tiledLayer1 = new TiledLayer(12,11,mapImg1,21,40);
tiledLayer1.setPosition(-6,0);
// int[][] map0 = {
// { 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},
// { 1,1,1,1,1,1,1,1,1}
//
// };
int[][] map0 = {
{ 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},
{ 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}
};
int[][] map1 = {
{ 1,0,0,0,0,0,0,0,0,0,0,2},
{ 1,0,0,0,0,0,0,0,0,0,0,2},
{ 1,0,0,0,0,0,0,0,0,0,0,2},
{ 1,0,0,0,0,0,0,0,0,0,0,2},
{ 1,0,0,0,0,0,0,0,0,0,0,2},
{ 1,0,0,0,0,0,0,0,0,0,0,2},
{ 1,0,0,0,0,0,0,0,0,0,0,2},
{ 1,0,0,0,0,0,0,0,0,0,0,2},
{ 1,0,0,0,0,0,0,0,0,0,0,2},
{ 1,0,0,0,0,0,0,0,0,0,0,2},
{ 1,0,0,0,0,0,0,0,0,0,0,2},
};
tiledLayer0.createAnimatedTile(2);
for (int i = 0; i < map0.length; i++)
for(int j = 0;j<map0[i].length;j++)
tiledLayer0.setCell(j, i, map0[i][j]);
// for (int i = 0; i < map1.length; i++)
// for(int j = 0;j<map1[i].length;j++)
// tiledLayer1.setCell(j, i, map1[i][j]);
//System.out.println(this.getWidth()+" "+this.getHeight());
spriteA = new Sprite(imgA,110,89);
spriteB = new Sprite(imgB,80,80);
spriteA.setPosition(50,100);
spriteB.setPosition(50,0);
layers= new LayerManager();
// layers.append(tiledLayer1);
// layers.append(spriteA);
// layers.append(spriteB);
layers.append(tiledLayer0);
// tiledLayer1.setPosition(0,50);
Ypos0 = tiledLayer0.getHeight() - this.getHeight();
// Ypos1 = tiledLayer1.getHeight() - this.getHeight();
// System.out.println(Ypos1);
// spriteA.defineCollisionRectangle(0,0,110,67);
this.setFullScreenMode(true);
setCommandListener(this);
addCommand(new Command("Exit", Command.EXIT, 1));
new Thread(this).start();
}
public void check(){
if(spriteA.collidesWith(spriteB,true)) collideSta = true;
else collideSta = false;
}
public void run() {
while (true) {
// repaint();
this.g = getGraphics();
keyState = getKeyStates();
if((keyState & this.LEFT_PRESSED)!=0){
spriteA.move(-3,0);
}
if((keyState & this.RIGHT_PRESSED)!=0){
spriteA.move(3,0);
}
if((keyState & this.UP_PRESSED)!=0){
spriteA.move(0,-3);
}
if((keyState & this.DOWN_PRESSED)!=0){
spriteA.move(0,3);
}
check();
if(tiledLayer0.getAnimatedTile(-1)==2)
tiledLayer0.setAnimatedTile(-1,1);
else
tiledLayer0.setAnimatedTile(-1,2);
this.draw(g);
try {
Thread.sleep(33);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void draw(Graphics g) {
g.setColor(0);
g.fillRect(0,0,this.getWidth(),this.getHeight());
// g.setColor(0);
// if(collideSta == false) g.drawString("未相撞",100,190,0);
// else g.drawString("相撞!",100,190,0);
// tiledLayer0.paint(g);
// tiledLayer1.paint(g);
//spriteB.paint(g);
// spriteB.nextFrame();
spriteA.nextFrame();
if(Ypos0<=0) Ypos0 = tiledLayer0.getHeight() - this.getHeight();
layers.setViewWindow(0,Ypos0,this.getWidth(),this.getHeight());
Ypos0 = Ypos0-2;
layers.paint(g,0,0);
spriteA.paint(g);
flushGraphics();
}
public void keyPressed(int keyCode) {
}
public void commandAction(Command command, Displayable displayable) {
if (command.getCommandType() == Command.EXIT) {
GameDemo.quitApp();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -