首页 > 代码库 > Swing动画之敌机工厂
Swing动画之敌机工厂
一、游戏效果图:敌军飞机向我方袭来
二、实现原理:在窗体的最上方,沿着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 { @Override public <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 EnemyManager instance; public static Map<Integer, IPlan> enemyMap = new HashMap<Integer, IPlan>(); public static final int limtNum = 3; private int enemyID = 0; public EnemyFactory factory = 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; } }
四、源码: 点击打开链接
Swing动画之敌机工厂
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。