坦克大战鼻祖,用一个坦克大战项目讲透23种设计模式

2023-11-02 13:10

本文主要是介绍坦克大战鼻祖,用一个坦克大战项目讲透23种设计模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

坦克大战项目

由于坦 克大战具有较强数学性、逻辑性等,同时又富有趣味性,开发起来乐趣无穷。因此,经常用来当做开发题材。并且该项目设计到网络,更能锻炼开发者的数据封包,规划等能力;卓越教育安卓课程第

二阶段项目

  1. 基于javaSE高级的坦克大战
  2. 复习Java编程基础
  3. 熟练使用GUI
  4. 熟练使用多线程
  5. 熟练使用I0流
  6. 熟练使用网络开发.
  7. 锻炼逻辑思维能力
  8. 掌握MVC的开发模式
  9. 学会bug的定位,查找,纠正

坦克大战项目路线展示

01 坦克大战第一节

new 出一个窗口

设定标题栏内容

TankFrame从Frame继承+显示

认识paint方法,重写

02坦克大战第二节

学习graphics类,画图

学习repaint方法

实现MyKeyListener,对键盘作出响应

MyKeyListener从KeyAdapter继承

03 坦克大战第三节

取得具体按键信息

根据具体按键调整坦克位置,持有对方引用

抽象出坦克类,学习使用枚举类型

04坦克大战第四节

把监听处理类MyKeyListener放到TankFrame内

用匿名内部类处理窗口关闭

根据按键状态,改变坦克方向

05坦克大战第五节

根据坦克方向移动位置

能停,能动

test包,关于classloader的知识

06坦克大战第六节

将坦克换成图片版

画出一颗子弹,让子弹飞一会儿

按下ctrl键,主战坦克打出一发炮弹

07坦克大战第七节

打出多发子弹

子弹从坦克中心位置打出

子弹消亡(飞出游戏区)

08坦克大战第八节

定义rectangle属性,不用每次都new

炮弹new出来自动加入容器,死掉后自动去除

分离玩家和机器人,对边界进行不同的处理

09坦克大战第九节

用双缓冲消除闪烁

加一堆敌人坦克

做碰撞检测

10 坦克大战第十节

显示爆炸

加入声音

让敌人坦克更加智能

11坦克大战第十一节

对坦克和子弹加入 Group属性

测试Properties类的使用

建立PropertyMgr类

12坦克大战第十二节

MV分开 Model View分离

GameModel 改成单例模式

对于碰撞的处理

13坦克大战第十三节

Class.forName().newInstance()

抽象出游戏物体的父类

合成GameModel中的各种不同物体

14坦克大战第十四节

完善责任链模式

加入墙

按键切换发射策略

15坦克大战第十五节

实现暂停功能

实现存盘功能

使用Junit测试服务器loop

16坦克大战第十六节

去掉敌人的坦克(机器控制的坦克)

处理接收到的消息

player新的构造方法

17坦克大战第十七节

让后来人能看到先加入者

加入坦克方向改变的消息

重构代码

18坦克大战十八节

处理改变坦克方向的消息

发送主战坦克停止的消息

发送主战坦克开始移动的消息(方向没变)

19坦克大战第十九节

加入子弹和Player的撞击逻辑

把主战坦克也加入到List中

完成坦克大战网络版

坦克大战项目视频

坦克大战视频教程笔记

从上面可以很清晰的看到坦克大战和23种设计模式的文档与视频,小编都为大家准备好了,如果大家伙需要的话,可以关注公众号:JavaAC,获取

23种设计模式目录及文档目录

创建型

1. Factory Method(工厂方法)

2. Abstract Factory(抽象工厂)

3. Builder(建造者)

4. Prototype(原型)

5. Singleton(单例)

结构型

6. Adapter Class/Object(适配器)

7. Bridge(桥接)

8. Composite(组合)

9. Decorator(装饰)

10. Facade(外观)

11. Flyweight(享元)

12. Proxy(代理)

行为型

13. Interpreter(解释器)

14. Template Method(模板方法)

15. Chain of Responsibility(责任链)

16. Command(命令)

17. Iterator(迭代器)

18. Mediator(中介者)

19. Memento(备忘录)

20. Observer(观察者)

21. State(状态)

22. Strategy(策略)

23. Visitor(访问者)

23种设计模式视频

这篇关于坦克大战鼻祖,用一个坦克大战项目讲透23种设计模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330824

相关文章

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C