一、项目前期准备
V4 版本在 V3'双向对抗'基础上,新增定点任务处理、鼠标交互、多线程协作、状态机管理四大核心功能,新手需在 V3 基础(集合、线程通信、扫描攻击)上,额外掌握以下知识点:
1. 鼠标事件监听(MouseListener)
- 作用:捕捉鼠标操作(点击、按压、释放等),实现'鼠标点击生成任务'的交互;
- 核心接口:
MouseListener,需重写 5 个方法(重点用mousePressed:鼠标按压时触发); - 关键步骤:给窗口注册鼠标监听器→重写
mousePressed方法→获取鼠标点击坐标。
2. 距离计算(勾股定理)
- 作用:找到'离任务点最近的无人机',实现任务分配逻辑;
代码实现:
(int) Math.sqrt((t.x - d.x)*(t.x - d.x) + (t.y - d.y)*(t.y - d.y));
公式:两点(无人机坐标(x1,y1)、任务坐标(x2,y2))距离 dis =
3. 多线程协作
- 新增
TaskProThread(任务处理线程),与原有DroneThread(无人机线程)协同工作; - 核心:通过共享
droneList和taskList,实现'任务生成→分配→执行→完成'的闭环。
4. 状态机管理
- 无人机新增 3 种状态:
0(巡逻)、1(跟随入侵者)、2(处理任务); - 核心:状态决定行为(如巡逻时随机运动,处理任务时飞向任务点),状态切换通过修改
state属性实现。
5. 坐标与速度适配
- 任务点导向速度:通过计算无人机与任务点的坐标差,调整
runSpeedx和runSpeedy,让无人机飞向任务点。
二、项目结构解析
V4 版本的核心变化是新增'任务体系',实现'鼠标点击生成任务→系统分配给最近无人机→无人机完成任务后回归巡逻'的完整流程,同时保留 V3 的双向对抗功能,形成'任务处理 + 敌对对抗'的复合场景。
1. 项目结构分析
| 类名 | 作用 | 核心新增技术点 |
|---|---|---|
Task | 任务实体类(存储任务坐标、状态、生命值) | 任务可视化绘制、状态管理(未分配 / 已分配 / 完成) |
TaskProThread | 任务处理线程(分配任务、监控任务进度) | 距离计算、最近无人机匹配、速度调整 |


