}
***************************************************************
package imageban; import java.util.ArrayList; /** * 这是敌方坦克基地,里面有有五个坦克 * * @author dell * */ public class EnemysBase { // 装有五个坦克的链表 ArrayList enemy = new ArrayList(); // 提供一个坦克基地 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
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?