Swing动画之敌机工厂

来源:互联网 发布:由于网络原因上传失败 编辑:程序博客网 时间:2024/06/05 19:16

一、游戏效果图:敌军飞机向我方袭来


二、实现原理:在窗体的最上方,沿着X轴按照一定的时间间隔重绘一群敌方飞机,敌方飞机组会沿着Y轴运动,当被我方飞机打中或越界,就定这个敌机已坠毁或与子弹进行了碰撞。代码里创建了一个飞机工厂类与一个飞机管理类,其中飞机管理器中用了Timer ,定时去让飞机工厂去生产飞机,部分代码如下。

三、代码 :

package com.jack;import com.jack.imp.IPlan;/** * 敌机工厂类: 用泛型时行了两层限制:1.必须是CLASS类型,2.必须是IEnemy实现类 *  * @author laughing * @date 2014年11月20日 下午9:46:46 */public abstract class AbstractEnemyFactory {public abstract <T extends IPlan> T createEnemy(Class<T> c);}

package com.jack;import com.jack.imp.IPlan;/** * * @author laughing * @date 2014年11月20日 下午9:50:22 */public class EnemyFactory extends AbstractEnemyFactory {@Overridepublic <T extends IPlan> T createEnemy(Class<T> c) {IPlan enemy = null;try {enemy = (IPlan) Class.forName(c.getName()).newInstance();} catch (Exception e) {System.out.println("敌机生产失败.");}return (T) enemy;}}

package com.jack;import java.util.HashMap;import java.util.Map;import java.util.TimerTask;import com.jack.imp.IPlan;/** * * @author laughing * @email john.cha@qq.com * @date 2014年11月20日 下午10:07:29 */public class EnemyManager {public static EnemyManagerinstance;public static Map<Integer, IPlan>enemyMap= new HashMap<Integer, IPlan>();public static final intlimtNum= 3;private intenemyID= 0;public EnemyFactoryfactory= new EnemyFactory();public EnemyManager() {cratePlan();}/** * @return the enemyMap */public static Map<Integer, IPlan> getEnemyMap() {return enemyMap;}public void cratePlan() {java.util.Timer timer = new java.util.Timer(true);TimerTask task = new TimerTask() {public void run() {for (int i = 0; i < limtNum; i++) {IPlan plan = null;if (i == 0) {plan = factory.createEnemy(Enemy1.class);} else if (i == 1) {plan = factory.createEnemy(Enemy2.class);} else {plan = factory.createEnemy(Enemy3.class);}enemyMap.put(++enemyID, plan);}}};timer.schedule(task, 1000, 2000);}public void clearEnemy(int key) {enemyMap.remove(key);}/** * @return the instance */public static EnemyManager getInstance() {if (instance == null) {instance = new EnemyManager();}return instance;}}

四、源码: 点击打开链接

1 0
原创粉丝点击