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
- Swing动画之敌机工厂
- Swing动画之子弹
- Swing动画之游戏背景
- Swing动画之游戏角色
- swing生成图片之动画播放
- 飞机大战之五:添加一类敌机
- 飞机大战之六:敌机爆炸(碰撞检测)
- unity3d开发 打飞机小游戏(五)(飞机移动/敌机死亡动画)
- 动画方式弹出Swing窗口
- 用Quick3.3简单开发微信打飞机03 添加爆炸动画和子弹与敌机的碰撞
- 用Quick-Cocos2d-x 3.3简单开发微信打飞机 -03 添加爆炸动画和子弹与敌机的碰撞
- 【cocos2d-x入门实战】微信飞机大战之八:自定义敌机精灵
- Cocos2d-x学习之---模仿微信打飞机游戏敌机层设计初想
- unity学习之飞机大战制作 关键点(六) 子弹与敌机之间的碰撞
- 动画效果解析工厂:Mask 动画
- Swing之EventQueue简介
- java之swing
- Swing-JTree之结点
- table表头列头固定(css实现)
- 快速排序的非递归实现(栈)
- 集合框架篇2 Collection
- Java中的==和equals区别
- 图像像素操作
- Swing动画之敌机工厂
- 《linux命令行大全》读书笔记 第六章 重定向
- iOS开发中不可错过的十大第三方类库
- cocos2d-x环境搭建 window+eclipse+ndk
- UVA - 10057 A mid-summer night's dream.
- 题目1554:区间问题
- 用Python开始机器学习(4:KNN分类算法)
- SharePoint 2013 REST 服务使用简介
- 简单文章发布系统(4)