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

📄 bulletssprite.java

📁 tank游戏
💻 JAVA
字号:
package src;import javax.microedition.lcdui.Image;import javax.microedition.lcdui.game.Sprite;public class BulletsSprite extends Sprite implements Runnable {	private int fx;// 子弹方向	private int sd;// 子弹速度	public int user;	private boolean lift = false;	int row, column;	// Sprite sprite;	public BulletsSprite(Image image, int frameWidth, int frameHeight) {		super(image, frameWidth, frameHeight);	}	public void start(int mx, int my, int mfx, int msd, int master) {// 坦克坐标(mx,my)定位子弹坐标,mfx为子弹方向,msd为子弹速度		if (!lift) {			setPosition(mx + 6, my + 6);			fx = mfx;			sd = msd;			user = master;			lift = true;			setVisible(lift);			Thread thread = new Thread(this);			thread.start();		}	}	public void run() {		while (lift) {			// long times_s = System.currentTimeMillis();			forward(sd, fx);			// 检测子弹碰撞!			bullettick();			// long times_e = System.currentTimeMillis();			// long times = times_e - times_s;			// if (times > 20) {			// times = 20;			// }			try {				Thread.sleep(20);			} catch (InterruptedException ie) {				ie.printStackTrace();			}		}	}	public void forward(int b_sd, int b_fx) {		if (b_fx == 1) {			bulletsMove(b_sd, 0);		} else if (b_fx == 2) {			bulletsMove(b_sd, 0);		} else if (b_fx == 3) {			bulletsMove(0, b_sd);		} else if (b_fx == 4) {			bulletsMove(0, b_sd);		}	}	public void bullettick() {		if (this.collidesWith(TankCanvas.groundBoard, true)) {			row = (this.getX() + 1) / 15; // 15是每张贴图(小砖块)的像素(长=宽=14)			column = (this.getY() + 1) / 15;			// MicroTankCanvas.explosion.start(this.getX(),this.getY());//调用爆炸方法			try {				TankCanvas.groundBoard.setCell(row, column, 0);				// TankCanvas.groundBoard.setCell(column + 1, row, 0);				// TankCanvas.groundBoard.setCell(column + 1, row + 1, 0);				// TankCanvas.groundBoard.setCell(column - 1, row - 1, 0);				// TankCanvas.groundBoard.setCell(column - 1, row, 0);				// TankCanvas.groundBoard.setCell(column, row + 1, 0);				// TankCanvas.groundBoard.setCell(column, row + -1, 0);			} catch (Exception e) {				// TODO: handle exception			}			setVisible(false);			this.lift = false;			// Thread.yield();		}else if ( (this.collidesWith(TankCanvas.enemytanksprite, true)) && (user==1))		 {			//TankCanvas.explosion.start(getX(),getY());//调用爆炸方法		 TankCanvas.enemytanksprite.elift=false;		 TankCanvas.enemytanksprite.setVisible(false);		 TankCanvas.tankLayermanager.remove(TankCanvas.enemytanksprite);		 		  TankCanvas.enemytanksprite.stop();		 this.setVisible(false);		 this.lift=false;		  TankCanvas.enum=TankCanvas.enum-1;		  Thread.yield();		 		 if (TankCanvas.enum>0)		{ TankCanvas.createEnemyTank();		}else{//		进入下一关		}		} else if ((collidesWith(TankCanvas.playerTank, true)) && (user == 0)) {// MicroTankCanvas.explosion.start(getX(),getY());//调用爆炸方法			TankCanvas.enemytanksprite.setVisible(false);			TankCanvas.tankLayermanager.remove(TankCanvas.enemytanksprite);			this.setVisible(false);			this.lift = false;			TankCanvas.num = TankCanvas.num - 1;			Thread.yield();			if (TankCanvas.num > 0) {				TankCanvas.createTank();					} else {			// 结束游戏			TankCanvas.gameover = true;		}	}	}	public void stop() {		Thread.yield();	}	private void bulletsMove(int kx, int ky) {		int bx = getX();		int by = getY();		bx += kx;		by += ky;		if (by < 0 || by > TankCanvas.canvasWidth) {			this.setVisible(false);			lift = false;			Thread.yield();		}		if (bx < 0 || bx > TankCanvas.canvasWidth) {			this.setVisible(false);			lift = false;			Thread.yield();		}		setPosition(bx, by);	}}

⌨️ 快捷键说明

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