用 Java 实现坦克大战,这个有点强了!

基于JAVA开发的在线双人联机坦克大战小游戏 这个项目是我大学完成的第一个最自豪的大项目个人项目,纯独立原创完成,工作量可想而知遇到过很多坑,但在自己的摸索中也一个个地解决了,积累了很多经验,也自学了很多东西虽然网上有很多现成的轮子可以直接CV,但当时的自己还有着坚定的多造轮子,少CV的信念。因此这个大项目的完成经历,为我后面代码编写规范、新语言(C++、Python、Html等)的学习都打下了坚实的基础(虽然很多都没学精)。... 阅读详情

在Java开发中,坦克大战项目和23种设计模式无疑是经典中的经典,就算是开发5年甚至是10年以上的开发者,都不敢说自己真真实实掌握了23种设计模式,希望大家能够好好学习,并且能够掌握这些细节性的东西。

坦克大战项目

坦克大战项目通过一个联机对战游戏的手把手,一行一行的开发过程,让你精准的理解和运用JavaSE,DesignPatterns , TCP/IP, 多线程, NIO等基础知识。真正理解项目的开发过程,并体会项目开发的难点和痛点。 请记住,只有做项目,才是对所学的真正检验。

坦克大战项目目录

  1. new出一个窗口

  2. 设定标题栏内容

  3. TankFrame从Frame继承+显示

  4. 认识paint方法重写

  5. 学习graphics 类画图

  6. 学习repaint 方法

  7. 实现MyKeyListener对键盘作出响应

  8. MyKeyListener从KeyAdapter继承

  9. 取得具体按键信息

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

  11. 抽象出坦克类学习使用枚举类型记录键盘状态

  12. 把监听处理类MyKeyListener放到TankFrame内部

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

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

  15. 根据坦克方向移动位置

  16. 能停能动

  17. test包关于classloader的知识

  18. 将坦克换成图片版

  19. 画出一颗子弹让子弹飞- -会儿

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

  21. 打出多发子弹

  22. 子弹从坦克中心位置打出

  23. 子弹消亡(飞出游戏区)

  24. 定义rectangle属性不用每次都new

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

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

  27. 用双缓冲消除闪烁

  28. 加一堆敌人坦克

  29. 做碰撞检测

  30. 显示爆炸

  31. 加入声音

  32. 让敌人坦克更加智能

  33. 对坦克和子弹加入Group属性,

  34. 不同的Group可以互相撞击

  35. 测试Properties类的使用

  36. 建立PropertyMgr类

  37. MV分开Model View分离

  38. GameModel改成单例模式

  39. 对于碰撞的处理

  40. Class. forName().newInstance()

  41. 抽象出游戏物体的父类

  42. 把GameModel中的各种不同物体的List合成为一个

  43. List <GameObject>

  44. 完善责任链模式

  45. 加入墙

  46. 按键切换发射策略

  47. 实现暂停功能

  48. 实现存盘功能

  49. 使用Junit测试服务器loop

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

  51. 处理接收到的消息

  52. player新的构造方法

  53. 让后来人能看到先加入者

  54. 加入坦克方向改变的消息

  55. 重构代码

  56. 收到改变坦克方向消息时让player的moving为true

  57. 发送主战坦克停止的消息

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

  59. 加入子弹和Player的撞击逻辑

  60. 把主战坦克也加入到List中

  61. 完成网络版

坦克大战项目——架构视频

坦克大战项目教程笔记

由于内容实在是太多了,小编就不多做介绍了,点赞此文后看文末免费获取

23种设计模式

目录 创建型 

Factory Method(工厂方法)

Abstract Factory(抽象工厂)

Builder(建造者)

Prototype(原型)

Singleton(单例) 结构型 

Adapter Class/Object(适配器)

Bridge(桥接) 

Composite(组合) 

Decorator(装饰) 

Facade(外观) 

Flyweight(享元)

Proxy(代理) 行为型 

Interpreter(解释器) 

Template Method(模板方法) 

Chain of Responsibility(责任链)

Command(命令)

Iterator(迭代器) 

Mediator(中介者)

Memento(备忘录)

Observer(观察者)

State(状态)

Strategy(策略) 

Visitor(访问者)

下面的是23种设计模式的文档和视频

在Java开发中,坦克大战项目和23种设计模式无疑是经典中的经典,就算是开发5年甚至是10年以上的开发者,都不敢说自己真真实实掌握了23种设计模式,希望大家能够好好学习,并且能够掌握这些细节性的东西。这些视频、笔记免费分享,可以 点击此处 凭截图免费获取

《Java小游戏实现》:坦克大战 《Java小游戏实现》:坦克大战前面写了一个简单的聊天小程序,今天开始就写一个坦克大战的游戏,算是对Java相关小知识点的一个应用。这个游戏的完成,我们也是分步完成,逐步累加,一个一个小功能的添加,最后直至完成整个游戏的开发。第一步:写一个界面 public class TankClient extends JFrame{ public static void main(Stri 阅读详情

相关推荐

JAVA 实现《坦克大战联机版》游戏

坦克大战联机版

毅慎的博客 3万+

射击类小游戏——坦克大战(java实现)

项目名称:坦克大战 项目分工:游戏开发

Janice的专栏 9680

《Java小游戏实现》:坦克大战(续三)

《Java小游戏实现》:坦克大战(续三)相关博文:《Java小游戏实现》:坦克大战http://blog.youkuaiyun.com/u010412719/article/details/51712663《Java小游戏实现》:坦克大战(续一):http://blog.youkuaiyun.com/u010412719/article/details/51723570《Java小游戏实现》:坦克大战(续二):http:/

wojiushimogui的博客 5970

Java多线程+IO流+网络编程+MySQL+JDBC编程实现多人联机版坦克大战

Java多线程+IO流+网络编程+MySQL+JDBC编程实现多人联机版坦克大战

如风暖阳的博客 2931

《Java小游戏实现》:坦克大战(续一)

《Java小游戏实现》:坦克大战(续一)上篇博文(http://blog.youkuaiyun.com/u010412719/article/details/51712663)只介绍到了能够控制一个坦克在4个方向上移动就结束了,今天就在此基础上继续完成一个一个的小功能。完成的功能:根据键盘的按键控制一个坦克在8个方向上移动要完成这个功能,我们要做一下几个事情1、记录下键盘的按键情况,即要重写键盘按下和抬起的监听

wojiushimogui的博客 7872

Java坦克大战简易版1.0

java 编写的简易坦克大战,由键盘控制坦克移动,和子弹发射。控制坦克不能跑出游戏界面以外,以及删除飞出界面外的无效子弹。

weixin_42172720的博客 2218

教你如何制作Java小游戏——坦克大战

Java呐是一门面向对象的编程语言,它里面不仅涵盖了C++语言的各种优点,而且啊还没有C++的多继承和指针的概念。因此Java语言具有功能强大和简单易用两个特征。但是你知道Java还可以用来做游戏吗,没错你没看错,学会Java你还可以设计游戏,就连零基础小白也是可以的,不用担心自己什么都不会,都是从一点点练习起来的。 任何一个人生下来都不是什么都会的,都是需要通过不断练习的。而且今天为大家带来的这款也是非常适合小白还有刚入行Java的包括准备转行的其他专业人员。都是可以拿来不断练习的。精通Java的也是可

jsqzy的博客 510

SOI技术实战:从晶圆结构到芯片性能提升的完整解析

本文深入解析SOI(Silicon on Insulator)技术如何通过独特的三明治晶圆结构提升芯片性能,涵盖从220nm SOI层设计到7nm节点的工艺挑战。详细探讨了埋氧层的绝缘优势、性能提升的物理机制,以及AMD处理器和5G射频中的实战应用,为半导体行业提供关键技术洞见。

wdx0123456的博客 960

基于Netty的联机版坦克大战

基于Netty的联机版坦克大战 项目介绍 项目github地址:基于Netty的联机版坦克大战 该项目实现了联机版坦克大战,项目包括客户端与服务端 项目使用技术: 使用Netty实现客户端和服务端之间的通讯 使用Marshalling作为编解码技术 游戏界面使用java自带的swing与awt进行编写 使用Spring的依赖注入与java的反射机制简化了消息类型的判定 使用Mysql数据库 使用...

红雨瓢泼的博客 1045

从Palantir到AI时代:Forward Deployed Engineer模式的深度解析

《从Palantir到AI时代:FDE模式的创新与挑战》摘要:Palantir开创的前置部署工程师(FDE)模式正在成为AI创业公司的标配。该模式通过现场工程师深入了解客户需求,填补产品与实际应用间的鸿沟,颠覆了传统SaaS规模化路径。核心优势在于将定制化服务转化为产品发现机制,特别适合高度异质化的AI市场。成功关键在于平衡定制与标准化,通过合同价值增长、产品杠杆效应等独特指标衡量成效。FDE人才需要兼具领域洞察力与快速原型能力。这一模式表明,在AI等新兴领域,深入客户现场可能比单纯追求技术突破更能创造商业

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 4526

立创开源Link Hub多功能USB扩展坞:CH339F主控+4层板设计,实测网口/存储性能

本文深度评测了立创开源Link Hub多功能USB扩展坞,其采用CH339F主控芯片与4层PCB板设计,并严格进行阻抗匹配。实测表明,该扩展坞的USB接口与microSD读卡器性能均接近USB 2.0理论极限,百兆以太网口转换效率高,性能损失极小。设计上注重电源保护与信号完整性,是一个兼顾稳定性与成本的高完成度开源硬件项目。

weixin_36173034的博客 155

Java实现坦克大战小游戏

Java实现坦克大战 主要内容 使用Java面向对象思想设计并开发一个有GUI界面的小游戏坦克大战,允许玩家与电脑玩家进行对战,玩家使用键盘操控坦克,人机具有一定的移动和开火逻辑。 实现功能 1.有游戏图像界面,让玩家能看到游戏给出反馈; 2.有人机交互功能,完成能操控指定游戏元素; 3.不同阵营的坦克,具备不同外观,可分别敌我; 4.敌我坦克皆能移动和开关。 游戏界面 主菜单 游戏界面 项目结构 app包下的GameMain类是游戏的入口函数。img目录下存放游戏的静态资源。 tank包 该包下的类

Java是最好喝的咖啡的博客 8559

华为手机连接Win11失败?内核隔离与驱动签名冲突的终极解决指南

在Windows操作系统中,驱动程序是硬件与系统通信的桥梁,其数字签名机制是保障系统内核安全的核心防线。基于虚拟化的安全技术通过强制验证驱动签名,能有效隔离恶意代码,提升系统抵御高级威胁的能力。然而,严格的签名策略有时会与部分硬件驱动产生兼容性问题,导致设备无法识别,直接影响文件传输、应用调试等核心工作流。本文聚焦于华为手机在开启Windows 11内核隔离功能时出现的连接故障,深入剖析驱动签名验证与Hypervisor保护的代码完整性原理,并提供从驱动更新、策略调整到无线替代方案的完整解决路径,帮助用户在

weixin_31309419的博客 348

韩顺平--Java坦克大战

韩顺平坦克大战

闲言 1万+

峰值电流模式CCM BUCK的传递函数推导

电流内环闭环传递函数: Gci(s)=i^L(s)v^comp(s)=FmGid(s)1+KRiHe(s)FmGid(s)=1Ri11+s[mcL+(0.5VIN−Vo)RiVINRifSW]+s21(πfSW)2 G_{ci}(s)=\frac{\hat i_{L}(s)}{\hat v_{comp}(s)}=\frac {F_mG_{id}(s)}{1+KR_iH_e(s)F_mG_{id}(s)}=\frac{1}{R_i}\frac{1}{1+s[\frac{m_cL+(0.5V_{IN}-V_o)

c007106333的博客 2353

Python爬虫深度对抗:拼多多与得物价格监控系统中的设备指纹模拟与SkyWalking风控绕过实战

在电商数据采集领域,拼多多和得物(毒)APP堪称国产风控系统的“双子星”。前者依托于拼多多集团强大的安全团队,后者则以其独特的“潮流单品”数据价值和高昂的爬取成本闻名。对于任何一名爬虫工程师而言,能够稳定、高效地获取这两大平台的价格、库存、销量等动态信息,都是一项极具挑战性的技术试金石。传统的基于requests库的简单HTTP请求,在面对这两款应用时几乎寸步难行。你会发现,无论怎样伪造User-Agent、怎样轮换代理IP,返回的永远是状态码412403,或者是一个包含验证滑块设备异常的JSON错误。

2201_76125261的博客 864

java实现坦克大战

话不多说,直接上思维导图(比较粗略) 目录 ​窗口初始化 游戏父类的编写 添加坦克类 初始化子弹类 添加围墙、基地 添加游戏规则 窗口初始化 准备工作 首先创建一个TankWar项目,在scr相同路径下创建images、music文件夹,将需要使用的图片、音乐分别放在images、music中。创建一个com.tankwar(包),注意命名规范 窗口初始化 在com.tankwar中创建GamePanel类 import javax.swing.JFrame; public

小熙的博客 2万+

Python FastAPI 面试题及参考答案

FastAPI 的路由机制是其核心功能之一,用于将不同的 URL 路径映射到相应的处理函数。通过定义路由,可以构建出功能丰富的 API。在 FastAPI 中,使用装饰器来定义路由。在这个示例中,是一个装饰器,它将根路径"/"的 GET 请求映射到read_root函数。当客户端发送一个 GET 请求到根路径时,FastAPI 会调用read_root函数并返回结果。

大模型大数据攻城狮的专栏 2243

Java游戏开发 —— 坦克大战

坦克大战,所有坦克、砖墙等效果都是用Java自己画的,当然各种图片素材也包含在里面,但没用。

小木鱼的博客 1万+

HyperLynx中层叠设计实例

这两种方式有点区别,前一种方式只是增加层,需要自行修改层的类型,后一种方式可以选定为某一种类型,如果是增加信号层,软件会默认同时增加一层介质层。层叠已经有8层,按照示例的层叠有4个信号层、3个地平面层和1个电源平面层,对照进行层名称(LayerName)、介质类型(Type)及用途(Usage)设置。在这列中,有的是白色,有的是淡蓝色。白色的说明可以修改,如第一行是介质,通常在最外层的介质有两个用途,阻焊层和介质,单击该行会出现一个下拉菜单,选择SolderMask,即为阻焊层。...

小幽余生不加糖 5874

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java实现的坦克大战(整理代码)

本科做的小项目,现在整理一下: package T1; import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; import java.util.Vector; //1 public class Tank1 extends JFrame implements ActionList...

weixin_39338645的博客 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java坦克大战

通过Java程序编写实现经典游戏坦克大战的运行一、通过这次课程设计,感觉收获颇多,团队内两个人通过不断地学习查找,修改,更新,完成了最终的确定的代码。也切实感受到了自己不会的东西还有太多,思路的设计上反映出学习需要自己长期积累。由于能力有限,所以在整个课程设计的底层逻辑上对他人有所借鉴,最后才让整个程序完全运行起来。

m0_74099509的博客 1868

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

《Java小游戏实现》:坦克大战(续2)

《Java小游戏实现》:坦克大战(续2)相关博文:《Java小游戏实现》:坦克大战http://blog.youkuaiyun.com/u010412719/article/details/51712663《Java小游戏实现》:坦克大战(续一):http://blog.youkuaiyun.com/u010412719/article/details/51723570博文《Java小游戏实现》:坦克大战(续1)中已经实现

wojiushimogui的博客 5939

基于java swing的坦克大战游戏

一.功能描述 java坦克大战主要功能: 1. 图形用户界面; 2. 有坦克、森林、河流、墙体等元素; 3. 界面中有一个我方大本营,我方大本营被敌方攻击则输游戏; 4. 墙体分为普通墙体和金属墙体两种,普通墙体可以被子弹射穿,金属墙体不能被子弹射穿; 5. 坦克可以通过森林,不能通过河流、墙体; 6. 坦克可以发射子弹,敌我双方的坦克属性相同; 7. 敌方坦克之间不能互相攻击

江江的博客 1万+
上一篇: 为什么5、6月会空缺出大量技术岗?跳槽注意事项+面试官关心什么
下一篇: 阿里面试题:MySQL 磁盘满了,怎么办?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值