VC6.0贪吃蛇增强版源码解析:C++练手项目实战与避坑指南
简介这是一份面向C初学者与游戏开发入门者的贪吃蛇增强版源码工程基于VC6.0与MFC实现适合用来练习面向对象设计、链表数据结构与Windows图形界面编程。资源包共58个文件约8.98MB包含5个cpp源文件、6个h头文件以及obj、sbr、pdb、idb等编译调试中间文件另有bmp位图、ico图标、rc资源脚本和dsp、dsw工程文件完整保留了VC6.0项目的构建与调试痕迹。项目采用双类设计蛇体以单链表组织节点涵盖键盘事件响应、图形绘制、定时器调速、状态机管理与错误处理等要点可直接编译运行并对照调试。已有178人学习下载适合想通过一个完整小项目打通C语法、链表操作与MFC开发流程的读者参考借鉴。1. 贪吃蛇增强版一个 VC6.0 时代的 C 练手项目现在跑起来依然有味道如果你手里正好有一份 VC6.0 的贪吃蛇源码别急着把它当成老古董扔进回收站。这个项目虽然界面朴素但它把 C 面向对象、Windows 消息循环、GDI 绘图、定时器驱动、链表/数组管理这些基本功全串起来了。我见过不少新手用现代 IDE 写贪吃蛇结果连WM_PAINT和InvalidateRect的配合都说不清楚反倒是这种 VC6.0 工程逼着你把 Win32 那套底层机制摸一遍。它适合两类人一是想补 Windows 编程底子的 C 初学者二是想拿个小工程练手、改出自己玩法的开发者。增强版通常会在经典玩法上加穿墙、加速、障碍物、分数存档这些功能代码量不大但五脏俱全。2. 工程结构与技术选型为什么 VC6.0 的 MFC 框架反而好上手2.1 目录里都有什么拿到源码包第一件事不是双击.dsw而是先看目录。典型的 VC6.0 贪吃蛇增强版工程一般长这样SnakeEnhanced/ ├── SnakeEnhanced.dsw // 工作区文件VC6.0 入口 ├── SnakeEnhanced.dsp // 项目文件记录编译配置 ├── SnakeEnhanced.cpp // 主程序入口CWinApp 派生类 ├── SnakeEnhanced.h ├── MainFrm.cpp / .h // 主框架窗口 ├── SnakeView.cpp / .h // 视图类游戏绘制和逻辑核心 ├── SnakeDoc.cpp / .h // 文档类存游戏状态 ├── Snake.cpp / .h // 蛇对象封装 ├── Food.cpp / .h // 食物对象 ├── Map.cpp / .h // 地图与障碍物 ├── resource.h // 资源 ID 定义 ├── SnakeEnhanced.rc // 资源脚本菜单/图标/对话框 └── res/ // 图标、位图等资源这个结构是 MFC 单文档SDI的标准骨架。SnakeView是重点游戏循环、键盘响应、绘图都在这儿SnakeDoc负责存数据比如蛇身坐标、当前分数、最高分。很多人改代码时只盯着 View结果存档功能找不到地方下手其实 Doc 才是数据落地的位置。2.2 为什么用 MFC 而不是纯 Win32VC6.0 时代做小游戏MFC 比纯 Win32 省事得多。纯 Win32 要自己注册窗口类、写WndProc里一大堆case而 MFC 用消息映射表把WM_KEYDOWN、WM_TIMER、WM_PAINT分到不同成员函数代码可读性高不少。增强版里常见的做法是// SnakeView.h 消息映射声明 protected: //{{AFX_MSG(CSnakeView) afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnTimer(UINT nIDEvent); afx_msg void OnPaint(); //}}AFX_MSG DECLARE_MESSAGE_MAP()// SnakeView.cpp 消息映射实现 BEGIN_MESSAGE_MAP(CSnakeView, CView) //{{AFX_MSG_MAP(CSnakeView) ON_WM_KEYDOWN() ON_WM_TIMER() ON_WM_PAINT() //}}AFX_MSG_MAP END_MESSAGE_MAP()ON_WM_KEYDOWN把键盘消息绑到OnKeyDownON_WM_TIMER绑到OnTimer。游戏主循环不是while(1)而是靠SetTimer每隔 100~200 毫秒触发一次OnTimer在里头更新蛇的位置、判断碰撞、调用InvalidateRect请求重绘。这种“定时器驱动 消息响应”的模式是 Windows 小游戏的经典做法好处是不占 CPU坏处是定时器精度有限速度调节要靠改间隔。2.3 核心数据结构蛇身怎么存蛇身用CArray或std::list都行VC6.0 对 STL 支持还行但很多老代码喜欢用CArrayCPoint, CPoint。增强版里常见的是// Snake.h class CSnake { public: CArrayCPoint, CPoint m_body; // 蛇身节点[0] 是头 int m_direction; // 当前方向0上 1右 2下 3左 BOOL m_bAlive; // 是否存活 void Move(); // 前进一步 void Grow(); // 吃到食物变长 BOOL CheckCollision(const CPoint pt); // 碰撞检测 };Move()的逻辑是在头部前面加一个新节点然后根据是否吃到食物决定要不要删尾部。吃到食物就不删蛇变长没吃到就删尾部蛇整体前移。这个“头插尾删”的思路比每个节点都挪一遍高效得多也是贪吃蛇最标准的实现。void CSnake::Move() { CPoint head m_body[0]; switch (m_direction) { case 0: head.y - 1; break; // 上 case 1: head.x 1; break; // 右 case 2: head.y 1; break; // 下 case 3: head.x - 1; break; // 左 } m_body.InsertAt(0, head); // 新头插入 // 如果没吃到食物删尾吃到食物由外部调用 Grow 控制 }参数说明m_direction用整数表示方向避免用角度计算InsertAt(0, head)是CArray的头部插入复杂度 O(n)但蛇身通常几十节完全够用。如果追求性能可以换std::deque但 VC6.0 下CArray更顺手。3. 编译运行全流程从 .dsw 到第一条蛇动起来3.1 环境准备与打开工程VC6.0 在 Win10/Win11 上能跑但需要设置兼容模式。我一般会右键msdev.exe→ 属性 → 兼容性 → 勾选“以兼容模式运行这个程序”选 Windows XP (Service Pack 3)同时勾选“以管理员身份运行”。不这么做的话编译时可能报LNK2001或无法写入.pdb文件。打开工程直接双击.dsw。如果 VC6.0 提示“此项目由更高版本创建”说明源码可能被 VS 转存过这时用记事本打开.dsp把# Microsoft Developer Studio Project File - Name... - Package Owner4下面的MSVC 6.00相关行检查一下或者干脆新建一个 Win32 MFC 工程把.cpp/.h拖进去。3.2 编译配置与常见报错VC6.0 默认用Debug配置生成SnakeEnhanced.exe。编译前检查三处项目设置 → C/C → Code GenerationUse run-time library 选Debug Multithreaded或Multithreaded别选错否则链接会报_beginthreadex相关错误。项目设置 → Link → Object/library modules确保有winmm.lib如果用了timeSetEvent等高精度定时器。字符集VC6.0 默认 MBCS如果源码里有_T(中文)确保resource.h和.rc文件编码一致否则菜单会乱码。常见报错fatal error C1083: Cannot open precompiled header file解决方法是把StdAfx.cpp单独编译一次或者项目设置里选“Not using precompiled headers”先跑通再说。3.3 运行与操作说明编译成功后直接CtrlF5运行。经典操作是方向键控制增强版可能加了空格暂停/继续F5重新开始/-加速/减速S保存最高分到score.dat如果按键没反应检查SnakeView是否调用了SetFocus()或者PreTranslateMessage里有没有拦截方向键。MFC 的视图默认不接收键盘焦点需要在OnInitialUpdate里加SetFocus()。void CSnakeView::OnInitialUpdate() { CView::OnInitialUpdate(); SetFocus(); // 让视图获得键盘焦点 m_pDoc-InitGame(); // 初始化游戏数据 SetTimer(1, 150, NULL); // 启动定时器150ms 一步 }SetTimer的第一个参数是定时器 ID第二个是间隔毫秒数。150ms 大约每秒 6~7 步适合新手想挑战可以改成 80ms。注意OnTimer里要判断nIDEvent 1避免和其他定时器冲突。4. 核心模块拆解绘图、碰撞与食物生成4.1 GDI 绘图把蛇画到屏幕上VC6.0 下绘图用CDC类核心是OnPaint里的CPaintDC。增强版一般会画网格、蛇身、食物、分数。关键代码void CSnakeView::OnPaint() { CPaintDC dc(this); CRect rect; GetClientRect(rect); // 画背景网格 CPen penGrid(PS_SOLID, 1, RGB(200, 200, 200)); CPen* pOldPen dc.SelectObject(penGrid); for (int x 0; x rect.right; x CELL_SIZE) { dc.MoveTo(x, 0); dc.LineTo(x, rect.bottom); } for (int y 0; y rect.bottom; y CELL_SIZE) { dc.MoveTo(0, y); dc.LineTo(rect.right, y); } dc.SelectObject(pOldPen); // 画蛇 CBrush brushSnake(RGB(0, 180, 0)); CBrush* pOldBrush dc.SelectObject(brushSnake); for (int i 0; i m_pDoc-m_snake.m_body.GetSize(); i) { CPoint pt m_pDoc-m_snake.m_body[i]; dc.Rectangle(pt.x * CELL_SIZE, pt.y * CELL_SIZE, (pt.x 1) * CELL_SIZE, (pt.y 1) * CELL_SIZE); } dc.SelectObject(pOldBrush); // 画食物 CBrush brushFood(RGB(220, 50, 50)); dc.SelectObject(brushFood); CPoint food m_pDoc-m_food.GetPos(); dc.Ellipse(food.x * CELL_SIZE, food.y * CELL_SIZE, (food.x 1) * CELL_SIZE, (food.y 1) * CELL_SIZE); }CELL_SIZE是每格像素数常见 20 或 25。Rectangle画蛇身方块Ellipse画食物圆点。注意SelectObject后要恢复旧对象否则 GDI 对象泄漏跑久了会卡。VC6.0 没有GDI那么方便但CDC足够画这种像素级游戏。4.2 碰撞检测撞墙、撞自己、吃食物碰撞检测在OnTimer里做顺序是先移动蛇再判断新头位置是否越界、是否撞到自己、是否吃到食物。void CSnakeView::OnTimer(UINT nIDEvent) { if (nIDEvent ! 1) return; CSnake snake m_pDoc-m_snake; snake.Move(); CPoint head snake.m_body[0]; // 撞墙检测增强版可能允许穿墙 if (head.x 0 || head.x GRID_W || head.y 0 || head.y GRID_H) { if (m_pDoc-m_bWrap) { // 穿墙从另一边出来 head.x (head.x GRID_W) % GRID_W; head.y (head.y GRID_H) % GRID_H; snake.m_body[0] head; } else { KillGame(); return; } } // 撞自己 for (int i 1; i snake.m_body.GetSize(); i) { if (snake.m_body[i] head) { KillGame(); return; } } // 吃食物 if (head m_pDoc-m_food.GetPos()) { snake.Grow(); // 不删尾 m_pDoc-m_score 10; m_pDoc-m_food.Generate(snake); // 重新生成食物 } else { snake.m_body.RemoveAt(snake.m_body.GetSize() - 1); // 删尾 } InvalidateRect(NULL); // 请求重绘 CView::OnTimer(nIDEvent); }GRID_W和GRID_H是网格宽高比如 30×20。m_bWrap控制是否穿墙增强版常把它做成菜单开关。Grow()只是标记不删尾实际长度在下一帧体现。Generate要保证食物不生成在蛇身上常见做法是随机后检查冲突就重随。4.3 食物生成与难度递增食物生成不能太随意否则会出现在蛇身上导致“吃不到”。我一般用循环重试void CFood::Generate(const CSnake snake) { int tries 0; do { m_pos.x rand() % GRID_W; m_pos.y rand() % GRID_H; tries; } while (snake.CheckCollision(m_pos) tries 1000); }CheckCollision遍历蛇身返回是否重合。tries是保险防止蛇占满屏幕时死循环。增强版还会加“特殊食物”比如金色食物加 50 分但 10 秒后消失或者毒食物扣分。实现方式是在CFood里加m_type和m_lifeTimeOnTimer里递减。5. 避坑与常见问题VC6.0 下跑贪吃蛇的 5 个血泪教训5.1 编译报错 “cannot open file ‘mfc42d.lib’”现象链接时提示找不到mfc42d.lib或mfcs42d.lib。原因VC6.0 安装时没勾选 MFC 库或者项目设置里 Use run-time library 选了 Debug 但系统只有 Release 库。解决重新运行 VC6.0 安装程序勾选 “Microsoft Foundation Classes”或者项目设置里改成MultithreadedRelease 配置再编译。5.2 蛇移动速度忽快忽慢现象SetTimer设了 150ms但实际感觉有时快有时慢。原因WM_TIMER是低优先级消息系统忙时会被延迟而且OnTimer里如果做了重绘重绘本身耗时会影响下一次触发。解决改用timeSetEvent高精度定时器或者把游戏逻辑和绘图分离——OnTimer只更新数据OnPaint只画用Invalidate(FALSE)避免背景擦除闪烁。5.3 方向键按太快导致蛇反向自杀现象蛇向右走时快速按左蛇直接掉头撞自己。原因OnKeyDown里直接改m_direction没有判断是否与当前方向相反。解决加一个m_nextDirection缓冲在OnTimer里才真正应用并且禁止 180 度转向void CSnakeView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { int newDir -1; if (nChar VK_UP) newDir 0; if (nChar VK_RIGHT) newDir 1; if (nChar VK_DOWN) newDir 2; if (nChar VK_LEFT) newDir 3; if (newDir ! -1 (newDir 2) % 4 ! m_pDoc-m_snake.m_direction) { m_pDoc-m_snake.m_direction newDir; } CView::OnKeyDown(nChar, nRepCnt, nFlags); }(newDir 2) % 4就是反向判断比如当前 1右新方向 3左(32)%41相等就拒绝。5.4 分数存档读出来是乱码现象score.dat用记事本打开正常程序读出来最高分变成 0 或乱码。原因写入时用了CStdioFile::WriteString写 Unicode读取时用按 ASCII 读或者文件路径用了相对路径程序工作目录不对。解决统一用CStdioFile的ReadString/WriteString并且用GetModuleFileName获取 exe 所在目录拼接绝对路径。VC6.0 下建议存成文本一行分数一行名字别用二进制。5.5 穿墙后蛇身错位现象开启穿墙后蛇头从右边出来但蛇身还在左边看起来断成两截。原因只改了蛇头坐标蛇身其他节点还是旧坐标绘制时按各自坐标画自然断开。解决穿墙时对整个蛇身做坐标变换或者干脆在绘制时对每个节点做(x GRID_W) % GRID_W处理。更简单的做法是穿墙只改头蛇身跟着头走下一帧就正常了——但视觉上会闪一下。我一般用绘制时取模逻辑坐标不变。6. 二次开发改造从能跑到好玩我踩过的那些坑这个项目最大的价值不是它本身多完善而是它留了足够多的“接口”让你改。我拿它练手时最先改的是难度曲线原来固定 150ms我改成每吃 5 个食物减 10ms最低 60ms。实现就在OnTimer里加个判断if (m_pDoc-m_score % 50 0 m_pDoc-m_speed 60) { m_pDoc-m_speed - 10; KillTimer(1); SetTimer(1, m_pDoc-m_speed, NULL); }注意KillTimer再SetTimer不然新间隔不生效。这个改动小但体验提升明显玩家能感觉到“越来越紧张”。第二个改动是加障碍物。我在Map类里加CArrayCRect, CRect m_obstacles初始化时随机生成几个矩形碰撞检测时多判断一次。这里有个坑障碍物不能生成在蛇初始位置和食物可能出现的区域否则开局就死。我一般用“安全区”排除法蛇头周围 5×5 格不生成。第三个改动是音效。VC6.0 下用PlaySound需要#include mmsystem.h和链接winmm.lib。吃到食物放一个短促的wav死亡放一个长音。注意PlaySound是异步的要加SND_ASYNC标志否则会阻塞游戏循环。PlaySound(_T(eat.wav), NULL, SND_FILENAME | SND_ASYNC);路径问题又来了SND_FILENAME用相对路径时工作目录不对就找不到文件。我后来统一用SND_RESOURCE把 wav 编译进资源用MAKEINTRESOURCE(IDR_WAVE_EAT)引用省心。最后一个改动是存档。原来只存最高分我改成存“最高分 蛇长度 用时”。用CStdioFile写三行读的时候按行解析。这里有个细节VC6.0 的CString::Format对%d支持没问题但%f要小心浮点精度我一般用整数存毫秒。改完这些这个贪吃蛇已经不像原来那个“课本作业”了。我最大的教训是每次改完一定要在 Debug 下跑一遍再切 Release 编译一次。VC6.0 的 Debug 和 Release 行为差异比现代编译器大尤其是未初始化变量Debug 下可能碰巧是 0Release 下就是随机值蛇直接乱走。从那以后我每次加新功能都强制走一遍“Debug 跑通 → Release 编译 → 手动玩三局”的流程再也不敢偷懒。希望这些经验帮到你拿到源码后先别急着大改把上面几个坑避过去再动手加自己的玩法。本文还有配套的精品资源点击获取

相关新闻

Claude Opus 5.5 企业级智能应用落地指南

Claude Opus 5.5 企业级智能应用落地指南

在实际开发中,我们常常遇到这样的困境:面对一段纠缠不清的遗留代码,重构时不敢大动干戈,生怕牵一发而动全身;或是手头堆积了上百页的技术文档,急需提炼核心要点却无从下手。更别提那些需要 7x24 小时在线的…

2026/10/17 8:41:24 阅读更多 →
YOLOv11+Django+DeepSeek:从零构建水下鱼类检测系统

YOLOv11+Django+DeepSeek:从零构建水下鱼类检测系统

水下鱼类检测现在是个挺热闹的方向,生态监测、水产养殖、海洋科研都在用。但真做过的朋友都知道,模型训练出来只是第一步,怎么把它包装成一个“别人能用的东西”才是麻烦事。这个项目标题其实已经把所有关键点都列出来了——YOLOv11做识别、D…

2026/10/17 8:40:24 阅读更多 →
AGI不是更聪明的AI,而是目标生成机制的范式革命

AGI不是更聪明的AI,而是目标生成机制的范式革命

1. 这不是科幻,是正在发生的工程演进——AGI到底在说什么“什么是 AGI,我们如何通向它——一份写给普通人的路线图”这个标题里,“AGI”三个字母最近频繁出现在科技媒体、投资人会议甚至咖啡馆闲聊中,但它常被混同于“更聪明的Cha…

2026/10/17 8:40:24 阅读更多 →

最新新闻

不完全信息Epsilon纳什均衡在航天器末端追逃博弈的Matlab实现

不完全信息Epsilon纳什均衡在航天器末端追逃博弈的Matlab实现

作为研究航天器近距离任务的开发者,我们组在复现不完全信息Epsilon纳什均衡的航天器末端追逃博弈策略(Matlab代码实现)这篇论文时,最大的感受是:以前觉得博弈论在航天里就是理论推推公式,真正要把“对方参数…

2026/10/17 9:27:38 阅读更多 →
企业Agent项目真实ROI怎么算?从成本结构到收益模型的完整拆解

企业Agent项目真实ROI怎么算?从成本结构到收益模型的完整拆解

这年头,谁家汇报材料里没放两个Agent流程Demo,都不好意思讲数字化。可真正把Agent放进生产流程,让它自己处理工单、回客户消息、跑财务核对的团队,远没有PPT里那么多;能把账算清楚的,更是少数中的少数。我说…

2026/10/17 9:27:38 阅读更多 →
Premiere Pro新手防崩溃指南:5个关键操作安全阀

Premiere Pro新手防崩溃指南:5个关键操作安全阀

1. 项目概述:这不是剪辑软件说明书,而是一份“PR上手防崩溃指南”“PR简单上手笔记”——光看这标题,你可能以为是某位刚考完Adobe认证的学员随手记下的快捷键清单,或者某培训机构发在群里的PDF速成课大纲。但在我带过二十多个零基…

2026/10/17 9:27:38 阅读更多 →
open-code-review:轻量级开源代码评审范式解析

open-code-review:轻量级开源代码评审范式解析

1. “open-code-review”不是工具名,而是一类新型代码评审范式的代号你可能在 GitHub Trending、Hacker News 或某次技术分享里见过这个词——它不像eslint或pre-commit那样有明确的安装命令,也不在 npm 或 PyPI 上搜得到可直接pip install open-code-re…

2026/10/17 9:27:38 阅读更多 →
电商图片工作流画布:节点式自动化生产与批量处理实战

电商图片工作流画布:节点式自动化生产与批量处理实战

1. 电商图片制作的痛点与工作流画布的破局思路做电商这行的朋友应该都有体会,图片制作这件事看起来简单,实际上是个无底洞。一个SKU从拍摄到上架,中间要经历主图、详情页、场景图、白底图、尺寸标注图、卖点图、对比图、包装图等至少七八种图…

2026/10/17 9:27:38 阅读更多 →
macOS上用Docker部署nginx+php:从零搭建容器化开发环境

macOS上用Docker部署nginx+php:从零搭建容器化开发环境

你在macOS上装过nginx和php吗?如果装过,大概率体会过那种“装起来半小时、调起来一晚上”的滋味。今天这篇我就带你完整走一遍macOS上安装Docker,然后在Docker里部署一套nginxphp环境的过程,整个过程不追求什么高大上的编排技巧&a…

2026/10/17 9:26:37 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →