图片版坦克大战其他相关的 类(三)

来源:互联网 发布:mindjet mac 破解 编辑:程序博客网 时间:2024/05/17 11:06
package imageban;
/**
 * 该枚举类定义了坦克,子弹运动的方向
 * @author dell
 *
 */
public enum Direction {
/*
* 从左到右一次是
* 左 ,上,,右,,下,,停止
*/
L,  U, R, D,  STOP    

}

***************************************************************

package imageban;
import java.util.ArrayList;
/**
 * 这是敌方坦克基地,里面有有五个坦克
 * 
 * @author dell
 * 
 */
public class EnemysBase {
// 装有五个坦克的链表
ArrayList<Enemy> enemy = new ArrayList<Enemy>();
// 提供一个坦克基地
public static EnemysBase enemyBase = new EnemysBase();
/**
* 往链表里添加五个坦克
*/
public void addEnemy() {
for (int i = 0; i < 4; i++) {
enemy.add(new Enemy("images/enemy0.gif",50 + 350*i , 10));
}


}


/**
* 根据索引获得坦克

* @param i要获得的那个坦克
* @return Enemy 坦克
*/
public Enemy getEnemy(int i) {


return enemy.get(i);
}


/*
* 在初始化的时候就添加了五个坦克
*/
private EnemysBase() {
addEnemy();
}


/***
* 获得坦克基地里坦克的数量

* @return int
*/
public int size() {
return enemy.size();
}


/*
* 获得坦克基地
*/
public static EnemysBase getEnemyBase() {
return enemyBase;
}


/*
* 如果坦克死了,就删除该坦克
*/
public void remove(int i) {
enemy.remove(i);
}


}

***************************************************************

package imageban;


import java.awt.Color;
import java.awt.Graphics;
import java.io.IOException;


import tankImage.Explosion;

/**
 * 此类的作用是当坦克被击中时发生爆炸的效果
 * 
 * @author Arthur
 * 
 */
public class Explode extends Tank{
Explosion explosion = new Explosion("images/blast",4);
    public Explode(String imagePath,int x,int y,int n){
     super(imagePath,x,y);
    }


    
public Explosion getExplosion() {
return explosion;
}


public void setExplosion(Explosion explosion) {
this.explosion = explosion;
}

int step = 0;// 储存数组的下标


// 画爆炸的园
public void draw(Graphics g) {


if (step == explosion.size()) {
this.setAlive(false);
step = 0;
return;
}
Color c = g.getColor();
g.setColor(Color.yellow);
g.drawImage(explosion.getImage(step), this.getX(), this.getY(), null);
g.setColor(c);
step++;
}




@Override
public void fire(Graphics g) {
// TODO Auto-generated method stub

}




@Override
public void loadMissiles() {
// TODO Auto-generated method stub

}




@Override
public void locateDirection() throws IOException {
// TODO Auto-generated method stub

}
}

******************************************************************************

package imageban;


import java.awt.Graphics;
import java.awt.Rectangle;


/**
 * 定义了绘画矩形的方法接口和获得矩形的方法接口
 * @author dell
 *
 */
public interface RectangleInter {
public Rectangle getRect(); 
public void draw(Graphics g);
public void move();
}

**********************************************************

package imageban;


import java.awt.*;
import java.awt.event.*;
import music.Music;


/**
 * 战场类
 * @author dell
 *
 */
public class WarField extends Frame {
/**
* T
*/
public static final int  WIDTH =1200,HEIGHT=720;//战场的高度和宽度
private static final long serialVersionUID = 1L;
Image offScreenImage = null;
EnemysBase enemybase = EnemysBase.getEnemyBase();//坦克基地
Music music = new Music();
public void init() {
this.setTitle("TankWar");
this.setSize(WIDTH, HEIGHT);
this.setResizable(false);//设置为不可改变大小
this.setVisible(true);
music.playSound("images/start.wav",3) ;//播放背景音乐
/**
* 定义一个关闭窗口的方法
*/
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}


});
this.addKeyListener(new Key());//谈价键盘监听器
this.setBackground(Color.GREEN);
new Thread(new PaintThread()).start();
}


public void update(Graphics g) {
if (offScreenImage == null) {
offScreenImage = this.createImage(WIDTH, HEIGHT);
}
Graphics gOffScreen = offScreenImage.getGraphics();
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.black);
gOffScreen.fillRect(0, 0, WIDTH, HEIGHT);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(offScreenImage, 0, 0, null);
}


/*
* 绘画坦克的最主要的方法(non-Javadoc)
* @see java.awt.Container#paint(java.awt.Graphics)
*/
@Override
public void paint(Graphics g) {
Color color = g.getColor();
MyTank.myTank.draw(g);//绘画我方坦克,即为我方坦克登陆战场
g.setColor(color);
//敌方军团来啦
for(int i=0;i<enemybase.size();i++){
Enemy e = enemybase.getEnemy(i);
e.draw(g);//敌方坦克登陆战场
}

}


public WarField() {
this.init();


}


/**
* 键盘监听内部类,用来控制炮弹的方向
* @author dell
*
*/
private class Key extends KeyAdapter {


@Override
public void keyPressed(KeyEvent e) {
MyTank.myTank.keyPressed(e);
}


@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
MyTank.myTank.keyReleased(e);
}




}


/**
* 线程内部类
* @author dell
*
*/
private class PaintThread implements Runnable {


public void run() {
while (true) {
repaint();//这个方法自动调用上面的paint方法
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}


}



}

原创粉丝点击