Claude Code 自然语言编程,设计,开发,升级全过程!

0 阅读10分钟

虽然这篇文章可能没有流量,但是我真的很想写。因为这开发体验实在是太好了。

当你有一个想法,你只要用几十个字去描述想法。然后剩下的全部交给 AI。这并不是痴人说梦,也不是卖课引流,而是我真实的体验。

下面我就完整的分享一下我的实现过程。

只要工具用的好,我觉得人人都能做到。当前这一切也有一些隐形的门槛。

从需求说起

我和我娃最近在玩双人成行和双影奇境。这两个游戏都非常好玩。

视觉效果出众,游戏设计巧妙,玩法众多。而且最主要是可以两个人分屏一起玩,所有关卡都必须双人配合完成。

这游戏实在是太好玩了,能快速增进和小孩子的关系,做到父慈子孝,出口成脏(你个小弱鸡~~卧槽~那么菜么)!

就是因为太好玩了,一开始玩,就停不下来。包括我自己也是这样,很想玩下去。

但是迫于妈妈的威压,我们必须控制好时间。

默认的方式都是开手机闹钟,时间到了我来关闭游戏。但是这种方式,有很大的问题,就是容易拖拖拉拉。

所以,我决定写一个程序,自动帮我倒计时和关闭游戏。一旦时间到了,没有任何拖延的机会,直接关闭。

开始构思方案

需求有了,我们就可以开始想解决方案了。

因为我只是在 Windows 电脑上玩,所以我只要写一个 Windows 平台的程序就可以了,首先可以确定不用多平台开发。然后就要确定在 Windows 上开发,使用什么技术方案最好。综合考虑还是用 C# 比较好。

但是说实话,VS 那个开发界面,以及 C# 的语法我都不熟悉。光把项目给建起来,把 IDE 学明白,就好多天过去了,万一遇到个编译错误,又得整好久。

还好,现在我有强大的能写代码 AI 了。下面直接交给 AI 来完成。其实 AI 能独立完成代码,也就是去年末才发生的事情。

为了实现这一个计划。

需要一些准备条件。比如 Windows 要准备好开发环境,安装好 VS,另外就是要准备 AI 开发工具,我最喜欢用的是 Claude Code。

其实 VS 的安装也可以让 Claude Code 来完成,或者指导你按照步骤完成。

所以,其实只要有了 Claude Code 就可以开始干活了。

前期准备搞定,方案确定就非常简单了。

开始 AI 编程

直接创建一个文件夹,比如叫 StopGame。然后打开文件夹,右键,在终端中运行。

输入 claude 回车,就可以启动编程工具了。

启动之后直接输入需求,然后一个回车:

其实,并不需要你懂任何技术,只要你能把这个问题说清楚,然后让 CC 帮你出技术方案,你选择方案就可以了。

CC 的理解能力非常强,对我们这次的需求,基本上是小菜一碟。

它很快就给出了四种技术方案,然后提供了推荐方案。同时游戏的核心运行逻辑也都写好了。最后它还会问你一些问题,让你选择具体的功能。只要根据自己需求回答就可以了。

我的习惯是会让他把方案保存到文件,然后再开始开发。

有兴趣的可以看一下完整的方案,没兴趣的可以直接跳过。

下面是完整的设计文件中的内容:


项目背景

和小孩子约定每天一起玩游戏,但常常忘了时间,或到时间了拖拖拉拉不肯退出。 需要一个工具:角落显示倒计时 → 时间快到提醒 → 时间到自动退出游戏。

技术栈

C# + WPF + .NET 8

  • WPF 天然支持半透明悬浮窗(Topmost + AllowsTransparency)
  • 动画效果(闪烁、渐变)方便实现
  • 支持单文件发布,部署简单

最终方案(当前实现)

项目决策
进程识别不指定进程,关闭前台窗口
目标捕获全局快捷键 Ctrl+F12 触发,捕获当时前台窗口
防作弊轻度保护:无关闭按钮、任务栏隐藏
提醒方式视觉(变色+闪烁)+ 系统提示音
关闭策略先温柔(WM_CLOSE 等 10 秒),超时强杀(Process.Kill)
悬浮窗可拖动,始终置顶
延长功能

运行流程

1. 启动工具 → 显示主窗口,设置游戏时长
2. 点击"开始" → 主窗口提示:"请切到游戏,按 Ctrl+F12 开始倒计时"
3. 用户切到游戏 → 按 Ctrl+F12
4. 工具捕获当前前台窗口 → 主窗口隐藏 → 右上角出现悬浮倒计时
5. 正常阶段(>5 min)→ 半透明灰白小窗,安静显示
6. 警告阶段(≤5 min)→ 变黄 + "叮"一声
7. 紧急阶段(≤1 min)→ 变红闪烁 + 提示音
8. 时间到 → 全屏遮罩 + 10 秒倒数
9. 发送 WM_CLOSE → 等 10 秒
10. 还没关?→ Process.Kill() 强杀
11. 工具回到主界面,可以重新设置下一轮

主界面(设置界面)

╔═══════════════════════════════╗
║       ⏱ 游戏倒计时            ║
║                               ║
║   游戏时长:  ◄ 30 分钟 ►      ║
║                               ║
║   快捷选择: [15] [30] [45] [60]  ║
║                               ║
║       [ ▶ 开始计时 ]          ║
║                               ║
║  提示:点击开始后,切到游戏    ║
║  按 Ctrl+F12 启动倒计时       ║
╚═══════════════════════════════╝

悬浮窗(倒计时中)

正常 (>5 min):   ┌─────────┐
                │  25:30  │  灰白半透明,小字
                └─────────┘
​
警告 (≤5 min):   ┌─────────┐
                │  04:59  │  黄色背景,字稍大
                └─────────┘
​
紧急 (≤1 min):   ┌───────────────┐
                │ ⚠ 00:45 !    │  红色背景,闪烁
                └───────────────┘

时间到弹窗

╔══════════════════════════════╗
║                              ║
║        ⏰ 时间到!            ║
║                              ║
║    游戏将在 10 秒后关闭       ║
║          [ 8 ]               ║
║                              ║
╚══════════════════════════════╝

关键技术点

  • 全局快捷键RegisterHotKey Win32 API
  • 获取前台窗口GetForegroundWindow + GetWindowThreadProcessId
  • 置顶悬浮窗:WPF Topmost=True + WindowStyle=None + AllowsTransparency=True
  • 关闭进程SendMessage(WM_CLOSE) → 延时 → Process.Kill()
  • 音效SystemSounds.Exclamation.Play()
  • 轻度保护WindowStyle=None(无系统按钮),ShowInTaskbar=False

项目结构

StopGame/
├── StopGame.sln
├── DESIGN.md                          # 本文档
├── StopGame/
│   ├── StopGame.csproj
│   ├── app.manifest                   # requireAdministrator(用于关闭以管理员运行的游戏)
│   ├── App.xaml / App.xaml.cs         # 托盘驻留、设置入口
│   ├── MainWindow.xaml / .cs          # 主设置界面
│   ├── OverlayWindow.xaml / .cs       # 悬浮倒计时窗口
│   ├── TimeUpWindow.xaml / .cs        # 时间到弹窗(含延长按钮)
│   ├── SettingsWindow.xaml / .cs      # 设置窗口
│   ├── Models/
│   │   └── AppSettings.cs             # 设置数据模型
│   ├── Services/
│   │   ├── CountdownService.cs        # 倒计时核心逻辑
│   │   ├── ProcessService.cs          # 进程关闭逻辑(WM_CLOSE + Kill)
│   │   ├── SettingsService.cs         # 设置持久化(JSON)
│   │   ├── SoundService.cs            # 音效播放
│   │   └── TtsService.cs              # 语音播报(System.Speech)
│   └── Helpers/
│       └── WindowHelper.cs            # Win32 互操作(前台窗口、快捷键等)

Claude Code 做设计是很简练的,不会像 GPT5.2 一样,啰啰嗦嗦一大堆,常常会抓不到重点,还容易过度设计。

虽然内容不多,但是方方面面已经给你安排的明明白白了。

对于从来没有编写过程序的人,看上面的设计文档,还是有一些压迫感的。但实际操作过程,只需要按回车就可以了。

其他全部交给 CC。

他会自动完成,自动编译,如果是 Web 程序的话一般是自动启动和测试。由于我们开发是桌面程序,它并没有自动启动。只是在最后教了我们使用方法,并询问了要不要试试看。

如果要,它就帮你直接启动了。当然你也可以主动说,帮我把软件运行一下。

然后,软件就启动了。启动之后的界面如下:

由于 AI 模型的随机性,每个人可能不一样。但是 CC 还是比较稳定的,我第一次的效果就是这样的。

界面非常简洁,就是选择一下时间,点击开始计时。

然后提示你打开游戏,打开游戏之后按一下快捷键 Ctrl+F12 就可以了。

启动之后如下图:

默认在右上角有一个倒计时显示。

这个倒计时的大小刚刚好,不影响玩游戏,想看又能看到,而且是悬浮在游戏上面的。如果有需要的话,也可以拖动到其他位置。

当倒计时到 5 分钟的时候,时间显示就会发生变化,变成黄色背景,警告你快要结束了。

当倒计时到 1 分钟的时候,就会变成红色闪烁。

最后十秒钟,就会锁定游戏,然后自动关闭了。

就这么简单,第一个可以使用的版本就开发好了。

所有功能一次搞定,没有任何 bug,消耗时间 10 分钟不到。

当然,当你有了一个软件之后,你就会按捺不住,想把它变得更好。

所以我有花了一点时间来进行迭代升级。

首先,我觉得托盘功能还是必要的,然后也有必要添加一个 1 分钟的倒计时,方便测试,然后就有了第一轮迭代。

第一轮迭代:基础功能完善

新增功能:

功能说明
管理员权限添加 app.manifest(requireAdministrator),解决部分游戏(Steam 等)以管理员运行无法被关闭的问题
系统托盘主窗口关闭改为最小化到托盘(ShutdownMode=OnExplicitShutdown),通过托盘菜单显示主界面 / 设置 / 退出
1 分钟快捷按钮主界面新增 1 分钟选项,方便测试

然后,我觉得需要完善一下设置功能,所以有了第二轮迭代。

第二轮迭代:设置系统

需求:通过托盘菜单进入设置界面,支持配置以下项目:

配置项选项
预设时长可勾选 5/10/15/20/30/45/60/90/120 分钟(多选),另有自定义时长输入框
提醒方式视觉 / 音效 / 语音(TTS)独立开关,可多选
延长功能不延长 / 延长 1 次 / 不限次数(调整为可配置,不再固定为"不需要")
悬浮窗起始位置右上 / 左上 / 右下 / 左下 / 保持上次位置

最后,功能差不多了,优化一下界面吧。

第三轮迭代:UI 优化

需求:无边框窗口 + 圆角 + 现代滚动条

改动:

改动项说明
无边框所有窗口改为 WindowStyle=None + AllowsTransparency=True
圆角外层 Border CornerRadius=10,标题栏 9,9,0,0,底部栏 0,0,9,9
自定义标题栏右上角自定义 ✕ 按钮(悬停变红),标题栏区域可拖动
滚动条设置窗口滚动条改为 8px 细条、无箭头、圆角滑块,配色融入深色主题

然后就得到了开头的那张图片中的效果:

主界面保持简洁,然后右下角托盘可以打开设计界面,进行各种设置!

整个过程不写一行代码,也不看一行代码。我只用自然语言编程。

最后得到了如下的文件:

另外需要补充一点。

就是 LOGO 设计:

Claude Code 也可以帮你设计一个 LOGO,但是肯定不是你想要的,专业的模型干专业的事情。LOGO 设计这种事情,肯定是交给 Banana Pro 来做了。

只要把我们前面的需求和 Design 文件交给 Banana,然后它就会自动完成设计了。

最后的最后,让他帮我制作最终的发布文件。

它帮我制作了一个几百 K 的精简版和一个几十 M 的完整版。只要把这个 exe 发布出来,别人也就可以使用了,双击直接使用。

有需要的么?

需要的可以自取,给公众号发私信:StopGame 即可!

AI 在编程领域真的是发展最快,落地最好的了。这种简单的项目,完全可以嘴撸!

当然话又说回来,基础还是不可或缺的。

所有的事情都是一步一步往上走。