⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bombcanvas.java

📁 炸弹游戏是很多游戏的焦点
💻 JAVA
字号:


import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class BombCanvas extends GameCanvas implements Runnable {


	private Image bkgImage,planeImage_1,planeImage_2,bombImage;

	private Graphics g;
	private TiledLayer background;
	private LayerManager layManager;
	
	private int screenWidth = 0; //屏幕宽度

	private int screenHeight = 0; //屏幕高度
	private int drawX = 0; //要绘制的X坐标
	private int drawY = 0; //要绘制的Y坐标
	
	private int dx = 0;

	private Sprite plane_1,plane_2,bomb;
	
	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();	
		
		//绘画图层1,共6行6列
		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();
		//图层2现在在最前面
		layManager.append(plane_1);
		//大飞机在第2层
		layManager.append(plane_2);		
		//爆炸在第3层
		layManager.append(bomb);
		//没有发生碰撞,所以不可视
		bomb.setVisible(false);
		//添加背景图层
		layManager.append(background);		

		plane_1.setPosition(60,180);
		plane_2.setPosition(80,0);
		
		//绘制在屏幕撒上
		layManager.paint(g,0,0);		
		flushGraphics();
		
		Thread thread = new Thread(this);
		thread.start();

	}

	public void keyPressed() {		
		int x, y;
		int keyState = 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 ;
			}

		}
		
	}
   
	public void run() {
		//无限循环检测键盘的输入
		while (true) {
			keyPressed();
			draw();
			try {
				Thread.sleep(50);
			} catch (InterruptedException ie) {
			}
		}
	}
	public void draw(){	
		//移动背景
		layManager.setViewWindow(drawX,drawY,screenWidth,screenHeight);
		plane_2.setPosition(drawX+60,drawY+0+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);
		}
		
		//绘制在屏幕撒上
		layManager.paint(g,0,0);		
		flushGraphics();
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -