头歌-设计模式:Java命令模式实验

任务描述

在植物大战僵尸的游戏设计中,植物战士是兵营生产的,玩家通过点击界面上“图片按钮”向兵营发出生产命令,兵营接受命令后每生产一个植物战士需要冷却一定的时间才能继续生产。

本关任务:本模拟程序中只需要实现一种植物战士的生产,请你用命令模式实现。

实现方式
声明仅有一个执行方法的命令接口;

抽取请求并使之成为实现命令接口的具体命令类。 每个类都必须有一组成员变量来保存请求参数和对于实际接收者对象的引用。 所有这些变量的数值都必须通过命令构造函数进行初始化;

找到担任发送者职责的类。 在这些类中添加保存命令的成员变量。 发送者只能通过命令接口与其命令进行交互。 发送者自身通常并不创建命令对象, 而是通过客户端代码获取;

修改发送者使其执行命令, 而非直接将请求发送给接收者;

客户端必须按照以下顺序来初始化对象:

创建接收者;
创建命令, 如有需要可将其关联至接收者;
创建发送者并将其与特定命令关联。
编程要求
根据提示,在右侧编辑器 Begin-End 内补充 “CampInvokers.java”和 “ProduceCommand.java” 文件代码,其它地方不要修改。

测试说明
平台会对你编写的代码进行测试,请输入发出生产命令的个数和兵营冷却时间(毫秒)。
输入结束后,为了模拟界面操作,系统会在 1000 毫秒内持续监控兵营接到的命令。
测试输入:6 200
预期输出:
豌豆射手生产出来了
豌豆射手生产出来了
豌豆射手生产出来了
豌豆射手生产出来了
豌豆射手生产出来了
 

测试输入:6 500
预期输出:
豌豆射手生产出来了
豌豆射手生产出来了

答案:
ProduceCommand.java

package step1; public class ProduceCommand extends Commands{ @Override public void Execute() { /********** Begin *********/ // 直接创建植物战士 new Peashooter(); /********** End *********/ } }

CampInvokers.java

package step1; import java.util.ArrayList; import java.util.List; public class CampInvokers { private final List<Commands> commands = new ArrayList<>();//命令队列 private final long TrainTimer;//训练冷却时间 private long timer;//当前时间 public CampInvokers(long trainTime){ TrainTimer = trainTime; timer = System.currentTimeMillis() - trainTime; // 确保第一个命令可以立即执行 } public void Train() { /********** Begin *********/ // 将生产命令加入到命令队列 commands.add(new ProduceCommand()); /********** End *********/ } public void ExecuteCommand() { if (commands.size() <= 0) return; if (timer + TrainTimer <= System.currentTimeMillis()) { /********** Begin *********/ // 执行队列里最上面的命令 Commands cmd = commands.get(0); cmd.Execute(); // 移除最上面的命令 commands.remove(0); // 重置冷却时间 timer = System.currentTimeMillis(); /********** End *********/ } } public void CancelTrainCommand() { if (commands.size() > 0) { commands.remove(commands.size() - 1); if (commands.size() == 0) { timer = System.currentTimeMillis(); } } } }

Read more

用 OpenClaw + 微信实现 AI 自动回复(附完整接入流程)

用 OpenClaw + 微信实现 AI 自动回复(附完整接入流程)

SyNodeAi OpenClaw Plugin SyNodeAi OpenClaw Plugin 用于把微信私聊 / 群聊接入 OpenClaw,使每一条消息都能进入 Agent Runtime,触发 Tool / Skill / Workflow 调度。 为什么做这个插件 微信不只是聊天工具。 在 OpenClaw 体系里,微信可以被看作: * 高活跃入口:天然承载真实用户会话 * 事件源:每条消息都可以转换为 Agent Event * 执行环境:每个会话都可以成为独立上下文 Runtime * 能力承载层:可以继续挂载 Tool、Skill、Workflow、ACP 持久会话 你可以把它理解为: WeChat = Event Source OpenClaw = Runtime Agent = Execution Unit Tool / Skill

AI三分钟第1弹|3分钟学会给Cursor配置代理

AI三分钟第1弹|3分钟学会给Cursor配置代理 文章目录 * AI三分钟第1弹|3分钟学会给Cursor配置代理 * 正文 * 拿去用 * 讲清楚 * 记住它 * 结语 * 引用 * 版权信息 什么是AI三分钟? 《AI三分钟》专栏旨在提供短小精悍的AI工具使用技巧或者知识 在这个时间碎片化、知识碎片化的时代 用最精炼的语言和最生动的故事 3分钟完成一项干货的科普 正文 拿去用 方法一:直接用博主的配置文件(推荐) 1. 打开Cursor,按 Cmd + Shift + P(Mac)或 Ctrl + Shift + P(Windows)打开检索框 2. 重启Cursor使代理设置生效 3. 点击下图中的首选项,选择Cursor首选项配置,进入network(网络管理)页面 将HTTP协议改成HTTP1.1 粘贴博主编辑好的配置(全部覆盖,覆盖前请自行备份之前的用户设置)

把 OpenClaw 从局域网“解放”出来:一招实现随时随地访问你的本地 AI

把 OpenClaw 从局域网“解放”出来:一招实现随时随地访问你的本地 AI

文章目录 * 把 OpenClaw 从局域网“解放”出来:一招实现随时随地访问你的本地 AI * 前言 * 1 OpenClaw和cpolar是什么? * 1.1 OpenClaw:能装进自家电脑的 AI 大脑 * 1.2 cpolar:打破局域网限制的“任意门” * 2 下载安装cpolar * 2.1 下载cpolar * 2.3 注册及登录cpolar web ui管理界面 * 3 OpenClaw + cpolar的 N 种打开方式 * 3.1 查看家里Nas中的电影资源 * 3.2 写一个小游戏网站并分享给朋友 * 3.3 在外远程控制家里的电脑 * 4 穿透OpenClaw以支持公网访问 * 5 固定二级子域名方式

AI驱动的图表生成器Next-AI-Draw.io

AI驱动的图表生成器Next-AI-Draw.io

简介 什么是 Next-AI-Draw.io ? Next-AI-Draw.io 是一个开源的、支持自托管的在线绘图应用。它结合了传统绘图工具的灵活性和人工智能的强大能力,让你不仅可以自由创作流程图、线框图、思维导图,还能通过 AI 指令一键生成内容,极大地提升了创作效率。 主要特点 * LLM 驱动的图表创建:利用大型语言模型(LLM)通过自然语言命令直接创建和操作 draw.io 图表。 * 基于图像的图表复制:上传现有图表或图像,让 AI 自动复制并增强它们。 * 图表历史记录:全面的版本控制,跟踪所有更改,允许您查看和恢复图表的先前版本。 * 交互式聊天界面:与 AI 进行交流,实时优化您的图表。 * AWS 架构图支持:专门支持生成 AWS 架构图。 * 动画连接器:在图表元素之间创建动态和动画连接器,以实现更好的可视化效果。 * 多模型支持:支持多个 AI