📄 bombcanvas.java
字号:
import java.io.InputStream;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;
import javax.microedition.media.Manager;
import javax.microedition.media.Player;
public class BombCanvas extends GameCanvas implements Runnable {
private Image bkgImage,planeImage_1,planeImage_2,bombImage;
private Graphics g;
private LayerManager layManager;
private int screenWidth=0,screenHeight=0,drawx=0,drawy=0,dx=0;
private Sprite plane_1,plane_2,bomb;
private TiledLayer background;
private PlayMusic pm;
private byte[][] backgroundMap = { {1,2,3,4,5,6},
{7,8,9,10,11,12},
{13,14,15,16,17,18},
{19,20,21,22,23,24},
{25,26,27,28,29,30},
{31,32,33,34,35,36},
{1,2,3,4,5,6},
{7,8,9,10,11,12},
{13,14,15,16,17,18},
{19,20,21,22,23,24},
{25,26,27,28,29,30},
{31,32,33,34,35,36}};
protected BombCanvas() {
super(true);
screenHeight = getHeight();
screenWidth = getWidth();
try {
//图片大小为360*360,为了简单没有设置自己的地图格式
bkgImage = Image.createImage("/game/backg.png");
//图片大小为80*64
planeImage_1 = Image.createImage("/game/plane1.png");
//图片大小为144*144
planeImage_2 = Image.createImage("/game/plane2.png");
bombImage = Image.createImage("/game/bomb.png");
} catch (Exception e) {
}
int i,j;
g = this.getGraphics();
background = new TiledLayer(6,12,bkgImage,60,60);
for(i=0;i<12;i++){
for(j=0;j<6;j++){
background.setCell(j,i,backgroundMap[i][j]);
}
}
plane_1 = new Sprite(planeImage_1,80,64);
plane_2 = new Sprite(planeImage_2,144,144);
bomb = new Sprite(bombImage,256,128);
layManager = new LayerManager();
layManager.append(plane_1);
layManager.append(plane_2);
layManager.append(bomb);
bomb.setVisible(false);
layManager.append(background);
plane_1.setPosition(60,180);
plane_1.setPosition(80,10);
layManager.paint(g,0,0);
flushGraphics();
Thread t = new Thread(this);
t.start();
}
public void keyPressed(){
int x,y;
int keyState = this.getKeyStates();
if ((keyState & UP_PRESSED) != 0) {
if (drawy - 2 > screenHeight){
drawy= drawy - 2;
dx = dx +1;
}
else{
drawy = 720-screenHeight;
dx = dx +1;
}
}
if ((keyState & DOWN_PRESSED) != 0) {
if (drawy + 2 < 720 - screenHeight){
drawy = drawy + 2;
dx = dx - 1;
}
else{
drawy = screenHeight;
dx = dx -1 ;
}
}
if ((keyState & RIGHT_PRESSED) != 0) {
if (drawx + 2 < screenWidth){
drawx = drawx + 2;
}
else{
drawx = 0;
}
}
if ((keyState & LEFT_PRESSED) != 0) {
if (drawx - 2 > 0){
drawx = drawx - 2;
}
else{
drawx = screenWidth;
}
}
}
public void run(){
Thread d = new Thread(){
public void run(){
pm = new PlayMusic();
if(pm!=null)
pm.playwavfile();
}
};
d.start();
try {
d.sleep(5000);
} catch (InterruptedException ie) {
}
while(true){
//d.start();
keyPressed();
draw();
try {
Thread.sleep(50);
} catch (InterruptedException ie) {
}
}
}
public void draw(){
layManager.setViewWindow(drawx,drawy,screenWidth,screenHeight);
plane_2.setPosition(drawx+60,drawy+dx);
plane_1.setPosition(drawx+80,drawy+180);
if(plane_1.collidesWith(plane_2,true)){
bomb.setPosition(drawx+10,drawy+180);
bomb.setVisible(true);
plane_1.setVisible(false);
plane_2.setVisible(false);
pm.playbomb();
}
layManager.paint(g,0,0);
flushGraphics();
}
}
class PlayMusic {
PlayMusic(){
}
public void playwavfile() {
try {
// 从Jar包中读取背景音乐的wav文件
InputStream in = getClass().getResourceAsStream(
"/GamebackgroundSound.wav");
//指定文件类型
Player p = Manager.createPlayer(in, "audio/x-wav");
while(true){
p.start();
}
} catch (Exception e) {
Alert alr = new Alert("错误", "不能够播放 WAV 文件!", null,
AlertType.ERROR);
alr.setTimeout(Alert.FOREVER);
}
}
public void playbomb(){
try {
// 从Jar包中读取爆炸声音的wav文件
InputStream in = getClass().getResourceAsStream(
"/EXPLODE.WAV");
//指定文件类型
Player p;
p = Manager.createPlayer(in, "audio/x-wav");
p.start();
} catch (Exception e) {
Alert alr = new Alert("错误", "不能够播放 WAV 文件!", null,
AlertType.ERROR);
alr.setTimeout(Alert.FOREVER);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -