这个Java的项目实战案例就是我们熟悉的、经典游戏:坦克大战
实现的功能
1、单人模式
2、双人模式
3、通过广度优先算法实现坦克寻路功能
我们要让敌方坦克动起来,不仅要移动,还要打出炮弹,
实现思路
数据存储表示:在JPanel绘制图像,统一规定各个方块的大小为同一大小(如墙壁,坦克之类,子弹除外),从而方便使用二维数组存储地图的各个元素。
关于检测物体碰撞,这里使用了一个MyImage的父类,将坦克,墙壁定义为继承这个父类的一个类。、
图像打印则借助遍历两个ConcurrentHashMap分别储存坦克和其他类型的方块。将这些方块使用Map而不是使用数组是因为管理起来比较方便,而二维数组则是为了寻路算法而准备的,防止了频繁使用上面的两个Map而导致线程锁的问题。
设计模式
结构型:
适配器模式(Adapter Pattern);
桥接模式(Bridge Pattern);
外观模式(Facade Pattern);
享元模式(Flyweight Pattern);
代理模式(Proxy Pattern);
装饰模式(Decorator Pattern);
组合模式(Composite Pattern);
创建型:
单件模式(Singleton Pattern);
抽象工厂(Abstract Factory);
建造者模式(Builder);
工厂方法模式(Factory Method);
原型模式(Prototype);
行为型:
模板方法(Template Method);
解释器模式(Interpreter Pattern);
中介者模式(Mediator Pattern);
命令模式(Command Pattern);
迭代器模式(Iterator Pattern);
观察者模式(Observer Pattern)
职责链模式(Chain of Responsibility Pattern);
备忘录模式(Memento Pattern);
策略模式(Strategy Pattern);
访问者模式(Visitor Pattern);
状态模式(State Pattern)-坦克大战实例
最后,小编整理了以上 坦克大战项目实战、设计模式 和一些Java的资料
关注 转发文章 ;++我威信 bmaaa01 (记得备注来源)。 先到先得
网友评论