# test.cpp **Repository Path**: dark-dan/test.cpp ## Basic Information - **Project Name**: test.cpp - **Description**: 这里是搭载OpenCode的VSCode的测试仓库 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-10-13 - **Last Updated**: 2026-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp, C语言 ## README # test.cpp · 个人练习仓库 > 一个用来练习 C++、并用 opencode 辅助写小程序的私人仓库。 > Gitee: 仓库名里的 `test.cpp` 只是随手起的名字,不代表这里只写 `.cpp` 文件; 早期练习是 C 语言,后续会以 C++ 为主。 --- ## 这是什么 - **C++ 练习场**:从语法、STL、面向对象到现代 C++,边学边写小项目; - **opencode 试验田**:用 AI 编码助手(opencode)辅助写一些小工具、小游戏; - **学习记录**:每个练习保留源码、构建脚本、README,必要时附设计文档。 目前仓库里只有一个早期练习 `demo1`(C 语言 + Win32 的扫雷), 后续的 C++ 练习会以新目录加入,不会混在 `demo1` 里。 ## 这不是什么 - 不是生产项目,也不是可依赖的开源库; - 代码质量、风格、注释会随学习阶段变化,**不保证稳定**; - 不保证 API 兼容、不保证向后兼容; - 部分代码由 opencode 辅助生成,但会经过本人阅读、修改、编译和运行验证后才提交。 --- ## 目录结构 ```text test.cpp/ ├── demo1/ # 早期练习:C + Win32 扫雷 │ ├── minesweeper.c # 主程序源码 │ ├── build.ps1 # PowerShell 构建脚本 │ ├── README.md # 中文说明 │ ├── README.en.md # 英文说明 │ └── docs/ │ ├── SPEC.md # 需求规范 │ ├── DESIGN.md # 技术设计 │ └── TASKS.md # 任务拆解 ├── .vscode/ # 本地 VS Code 配置(已被 .gitignore 忽略,不入库) ├── Makefile # 构建入口:make / make run / make strict / make clean ├── .editorconfig # 编辑器约定:编码 / 换行 / 缩进 ├── .gitattributes # git 侧约定:统一 LF、二进制标记 ├── .gitignore ├── LICENSE # MIT └── README.md # 本文件 ``` 未来的练习会以 `demoNN-主题/` 或项目名命名,每个目录自带 README。 --- ## 开发环境 | 项目 | 说明 | |---|---| | 系统 | Windows 10/11 | | 工具链 | [w64devkit](https://github.com/skeeto/w64devkit)(GCC / G++ / GDB),本机位于 `D:/Dev/w64devkit` | | 编辑器 | VS Code + C/C++ 扩展 | | 语言标准 | C17(demo1);C++ 当前配置为 C++17,计划逐步切到 C++20 | | 调试 | gdb(本地 `launch.json` 基于 gcc,目前针对单文件 C;写 C++ 项目时建议改用 g++ 或 CMake) | `.vscode/` 只保存在本地,不提交;换机器时按上面的工具链重新配即可。 demo1 使用 Win32 API,需要 Windows SDK 头文件(w64devkit 自带的 MinGW 头即可)。 --- ## 构建与运行 ### demo1(扫雷) 在仓库根目录用 `make`(推荐,一条命令): ```bash make # 构建 demo1/minesweeper.exe make run # 构建并启动 make strict # 把警告当错误,额外开 -Wconversion make clean # 删掉 exe ``` 也可以进 `demo1/` 用 PowerShell 脚本: ```powershell cd demo1 ./build.ps1 # Release:-O2 -s ./build.ps1 -Run # 构建后直接运行 ./build.ps1 -Debug # 带 -g 的调试构建 ``` 不用脚本时: ```bash gcc -std=c17 -Wall -Wextra -O2 -mwindows minesweeper.c -o minesweeper.exe -lgdi32 ``` ### 以后的 C++ 练习 约定用一条命令就能编: ```bash g++ -std=c++20 -Wall -Wextra -O2 main.cpp -o app.exe ``` 有多个源文件时写 `CMakeLists.txt` 或一个 `build.ps1`,并在该目录的 README 里写清楚。 --- ## 用 opencode 写小程序的流程 1. **先写需求**:在目录里的 README 或 `docs/SPEC.md` 写清楚输入、输出、边界情况; 2. **让 opencode 起稿**:一次只让它做一小块,比如「实现命令行参数解析」; 3. **自己读一遍**:对照需求检查逻辑,改掉不合口味的部分; 4. **本地编译 + 跑用例**:编译警告清零,至少跑正常路径和两三个异常路径; 5. **小步提交**:`feat:` / `fix:` / `docs:` 分开提交,提交信息写清楚动机; 6. **记录踩坑**:把 AI 写出问题的地方记进 README 或 `docs/`,下次少踩。 原则:**AI 可以帮我写,但提交的代码我要能解释每一行,并且必须本地跑通。** --- ## 新练习的约定 - 一个练习一个目录:`demoNN-主题/` 或项目名; - 目录内自带 `README.md`:做什么、怎么编、怎么跑、学到什么; - 能一条命令构建就一条命令(根目录 `make`),复杂一点就放 `build.ps1` 或 `CMakeLists.txt`; - 可执行文件、对象文件、IDE 配置不入库(`.gitignore` 已覆盖 `*.exe`、`*.o`、`.vscode/` 等); - 不提交任何密钥、令牌、证书(`.gitignore` 已加 `*.key`、`*.pem` 等); - 每个 demo 至少保证:**能独立编译、能运行、README 对得上**。 提交信息参考: ```text feat(demo2): 命令行待办清单,支持增删改查 fix(demo2): 修正空输入导致的越界 docs(demo1): 补充构建说明 ``` --- ## 学习计划 - [ ] C++ 基础:类型、引用、类、构造/析构、运算符重载 - [ ] STL:`vector` / `map` / `string` / `algorithm` 常用组合 - [ ] 面向对象:继承、多态、RAII、异常安全 - [ ] 现代 C++:智能指针、lambda、`std::optional`、ranges、并发入门 - [ ] 控制台小游戏:贪吃蛇、2048、俄罗斯方块(任选) - [ ] 小工具:批量重命名、文件整理、简易计算器、文本统计 - [ ] 用 C++ 重写 demo1 的扫雷逻辑,和 C 版本做对照 - [ ] 给仓库加一个最小的 CI(编译检查 + 单元测试) --- ## 已完成 | 目录 | 内容 | 技术栈 | |---|---|---| | `demo1/` | 扫雷游戏(Win32 GUI,三种难度、首击安全、计时、标旗) | C17 + Win32 API + GDI 双缓冲 | demo1 的详细说明、需求、设计、任务拆解都在 `demo1/` 下,可作为后续小项目的文档模板。 --- ## 许可 MIT License,详见 [LICENSE](LICENSE)。 --- > 这个仓库首先是写给自己看的:记录练习过程,比追求「完美代码」更重要。