Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >中国版 Cursor:家长们辅导孩子数学作业和少儿编程的好助手 CodeBuddy

中国版 Cursor:家长们辅导孩子数学作业和少儿编程的好助手 CodeBuddy

原创
作者头像
编程小妖女
发布于 2025-05-13 12:07:47
发布于 2025-05-13 12:07:47
600
举报
文章被收录于专栏:人工智能人工智能前端开发

作为一个学生家长,笔者下班之后,晚上需要给孩子辅导作业。我一直是国内某教培类 App 的付费用户,随着 ChatGPT 3.5 的发布之后,这款 App 在我手机上打开的频率越来越低。只是因为当时 ChatGPT 多模态能力还未臻完善,处理数学几何题目时我还是得依赖这款教培 App.

不过随着之后 ChatGPT 识图能力的大幅提高,我终于放弃了那款 App 的订阅,投入了 AI 工具的怀抱。

教培类 App 讲解几何题目时有个缺陷,里面的图都是老师手动批注,不太美观,下图是一个例子:

对于笔者这种完美主义晚期患者来说,之前我采用的方法是在 Powerpoint 里工工整整的把图画出来:

不过 Powerpoint 里画图非常费时间。因为笔者的本职工作是前端开发,所以很自然的想到,用 html + css 来绘制这些数学题目中的图表。后来随着 Cursor,Trae 这些 AI IDE 的发布,绘制一张图的时间缩短到1到2分钟,效率真的飞起。更妙的是既然是采用 html 编程,就可以随心所欲的添加动画效果,让学生能够更好地理解数学概念。

比如用动画展示圆锥体积公式的推导:

不过笔者日常工作,以及业余时间创作的 SAP UI5 Freestyle 和 SAP Fiori Elements 开发教程,用的工具都是 Visual Studio Code. 毫不夸张的说,Visual Studio Code 就是我的吃饭家伙。Cursor 和 Trae 虽好,但不太符合我几年来在 Visual Studio Code 里形成的使用习惯。

感谢 Visual Studio Code 良好的可扩展性和繁荣的生态圈,随着腾讯云代码助手 CodeBuddy 的发布,Visual Studio Code 瞬间具有了丝毫不逊于 Cursor 和 Trae 的 AI 编程能力。

Visual Studio Code 里搜索 CodeBuddy 即可免费下载:

CodeBuddy 安装完毕后,在 Visual Studio Code 左侧侧边栏,会多出一个与其交互的入口图标。

点击之后,就可以和 CodeBuddy 对话了。

下面以一道几何题为例来介绍腾讯云 CodeBuddy 的使用方法。

将一次函数 y = x + 3 的图像,绕其与 X 轴的焦点顺时针旋转 75 度,得到的图像对应的函数表达式是什么?

直接把上面这道题目以指令的形式发送给 CodeBuddy,也能立即得到答案,但这样就失去了作业辅导的意义。

将题目一步步进行拆解。

帮我开发一个网页,在 html 上绘制平面直角坐标系,并绘制出一次函数 y = x + 3 的图像

这样孩子既学了数学,又学了编程,一石二鸟。

首先要完成平面直角坐标系的绘制,然后在上面绘制一次函数 y = x + 3 的函数图像。

CodeBuddy 选择的是 HTML5 中的 canvas 来实现图像绘制。在 HTML5 中,canvas 元素提供了一个可通过 JavaScript 绘制图形的位图画布容器

借助 canvas 的 2D 绘图上下文,开发者能够实时渲染路径、形状、文字、图像以及动画效果,用来呈现中学解析几何中的平面直角坐标系简直是牛刀小试。

CodeBuddy 给出的代码,点击 Apply 然后 Accept 即可在 Visual Studio Code 里进一步编辑和修改。实际上 CodeBuddy 生成的代码质量非常高,不需要任何修改即可直接运行。

而且代码逻辑清晰,在 window.onload 回调函数里,依次执行 drawGrid 绘制平面直角坐标系,然后执行 drawFunction 绘制一次函数图像。

这两个 draw function 内部,调用 canvas 的 context 提供的 API,实现落笔,划线和提笔等操作。成都的中小学信息技术课,学生们都学习了 Logo 编程语言,不少学生课外也学了 Scratch,Kitten 等编程语言,在有大人的指导下,掌握 JavaScript Canvas 这些简单的 API 不在话下。

而且此类任务对少儿编程来说一个好处就是能很快获得正反馈,能立即看到自己编程的输出效果。

浏览器直接打开 CodeBuddy 自动生成的 HTML 代码,y = x + 3 的函数图像就绘制完毕了。

接下来完成函数旋转的操作:

将这个一次函数,绕其与 X 轴的交点顺时针旋转 75 度,绘制出旋转后的函数图像。

CodeBuddy 的思考过程也会打印出来,正好拿来给孩子梳理这道题的解题思路。首先求出 y = x + 3 与 x 轴的交点(-3,0).

然后根据旋转矩阵公式,把 y = x + 3 上每个点的坐标,带入旋转矩阵,求出新的点坐标。

至此 CodeBuddy 数学老师的职责已经结束,然后开始扮演编程老师,剖析要在前面基础上如何做修改,以便绘制旋转之后的函数。

CodeBuddy 新建了一个 function drawRotatedFunction, 专门用来绘制旋转之后的新函数图像。这里旋转的角度 75 作为输入参数 degrees 传递进来,在里面转换成逆时针弧度值,然后传递进旋转矩阵,计算出旋转之后的点的 X 和 Y 坐标。

最后原来的 drawFunction 函数调用这个新建的 drawRotatedFunction 函数。

这一步完成之后的效果:

至此纯粹的数学解题层面的图像绘制就已经完成了,可以让孩子动手开始求出上图绿色直线的解析式。

但是从少儿编程角度出发,可以增加一个需求:绘制一个按钮。当且仅当点击按钮之后,才触发从红色直线旋转75度的动画效果。

也就是说,要实现下列的动画效果:

发出指令:

给 html 增加一个按钮,当且仅当该按钮被点击之后,才真正执行 y = x + 3 沿其和 x 轴的交点顺时针旋转 75 度的操作,旋转有一个持续时间为 3 秒的动画效果。

CodeBuddy 把这个需求拆解成一个个粒度更小的子任务:

  1. 添加按钮到 HTML 界面:用户需要在页面上添加一个按钮,用于触发动画。这可以通过在现有的 HTML 结构中插入一个按钮元素,并为其添加事件监听器。
  2. 动画逻辑的实现:现有的旋转函数是直接绘制旋转后的图像,现在需要将其改为逐步旋转,形成动画效果。这需要使用 requestAnimationFrame 或者 setInterval 来分步更新旋转角度,并在每一帧重新绘制。
  3. 修改现有的绘制函数:目前实现的 drawRotatedFunction 函数接受一个固定的旋转角度(75度),需要修改为接受动态变化的角度,以便在动画中逐步增加角度,直到达到 75 度。
  4. 动画时间控制:用户要求 3 秒的动画效果,因此需要计算每一帧的旋转增量,确保在3秒内完成75度的旋转。换言之,假设每秒60帧,总帧数为180帧,每帧旋转75/180 ≈ 0.4167度。
  5. 防止重复触发:在动画进行中,应该禁用按钮,防止用户多次点击导致动画混乱。
  6. 重置功能:可能还需要一个重置按钮,或者确保动画结束后可以重新开始。

虽然笔者从 2013 年通过 SAP UI5 应用开发,入了前端开发的坑,2020年开始从事 Angular 全职开发至今,类似这种程度的需求我也能熟练拆解,但是 CodeBuddy 这种 AI 工具能在一两秒中内完成拆解,这种效率完全碾压我的存在。

最后 CodeBuddy 实现的代码质量仍然非常高,一个标点符号都不用修改就能直接运行,而且效果完美:

这也比笔者强多了。话说在 AI 工具普及之前,笔者手写代码时,实现需求很少有一次成功的案例,一般都是写了改,改了写。在 AI 工具如雨后春笋涌现之后,笔者已经回想不起上一次纯手工搓代码是啥时候了。

看看 CodeBuddy 生成的代码,将「执行旋转动画」按钮的事件注册,以及防重复点击的保护措施放到一处实现了。

然后用 requestAnimationFrame 驱动一个自行实现的 animate 函数,来实现直线慢慢旋转的动画效果。

当开发者调用 requestAnimationFrame 时,浏览器会将 animate 这个自开发函数,排入下一个重绘周期。在一次典型的帧循环内,浏览器依次完成 JavaScript 执行 → 样式计算 → 布局 → 分层 → 绘制 → 合成等阶段。

而 requestAnimationFrame 被安排在样式计算→布局之前,既保证了 DOM 更新能纳入当前帧,又杜绝了多余的无效计算。

想象你是一个鼓手:在交响乐演奏里,只有指挥棒落下前的最后一瞬敲下去,鼓声才能和整支乐队契合。requestAnimationFrame 就是浏览器渲染的那根指挥棒。

自开发 animate 函数里,调用 calculateRotatedEquation,根据旋转矩阵,计算当前这一帧里直线上每个点旋转到当前位置的坐标值,然后重绘直线。

如果孩子觉得上述这些知识点理解起来有困难,可以直接求助 CodeBuddy:

用中学生能够理解的语言,解释这段代码的语法和含义:

CodeBuddy 耐心的回复:

总之,笔者试用 CodeBuddy 下来,觉得它的安装和使用较之 Trae 和 Cursor 更低,甚至可以说几乎没有门槛可言。在有心的家长和内驱力强的孩子们手中,CodeBuddy 会成为一款学习和编程的利器。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端-动画大乱炖
作为一只前端开发者,我们的使命就是在满足产品需求、实现交互设计的基础上,将最好的体验呈现给用户爸爸们。在保证性能的同时,我们通常会给页面加一些动态效果,以增强页面的表现力并提升页面的交互体验。故将前端实现动效的几种常用方式整理成此篇小结,以求温故而知新。
grain先森
2019/03/29
1K0
前端-动画大乱炖
JavaScript 编程精解 中文第三版 十七、在画布上绘图
浏览器为我们提供了多种绘图方式。最简单的方式是用样式来规定普通 DOM 对象的位置和颜色。就像在上一章中那个游戏展示的,我们可以使用这种方式实现很多功能。我们可以为节点添加半透明的背景图片,来获得我们希望的节点外观。我们也可以使用transform样式来旋转或倾斜节点。
ApacheCN_飞龙
2022/12/01
4K0
JavaScript 编程精解 中文第三版 十七、在画布上绘图
中国版 Cursor:CodeBuddy
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
程序员NEO
2025/05/13
3125
中国版 Cursor:CodeBuddy
【笔记】《游戏编程算法与技巧》1-6
本篇是看完《游戏编程算法与技巧》后做的笔记的上半部分. 这本书可以看作是《游戏引擎架构》的入门版, 主要介绍了游戏相关的常见算法和一些基础知识, 很多知识点都在面试中会遇到, 值得一读.
ZifengHuang
2022/08/30
4.4K0
可视化技能之Matplotlib(下)|可视化系列02
在本系列的上篇文章里,我们从Matplotlib的基础可视化框架开始,逐步画出折线图、柱状图等基础图表,通过对坐标轴标签、标题文本等的精细调节画出信息更明确丰富的可视图,也实践了双轴图及子图,最后看了下极坐标系下绘图的效果。本篇继续探索Matplotlib的强悍可视化能力。
蛰虫始航
2020/04/08
1.7K0
可视化技能之Matplotlib(下)|可视化系列02
【数据可视化】Echarts的高级功能
为了使图表更具表现力,可以使用混搭图表对数据进行展现。 当多个系列的数据存在极强的不可分离的关联意义时,为了避免在同一个直角系内同时展现时产生混乱,需要使用联动的多图表对其进行展现。
zxctscl
2024/03/29
8960
【数据可视化】Echarts的高级功能
前端canvas基础复习,canvas学习笔记,持续记录
最开始学html5的时候,曾特意了解过canvas,还记得当时为了搞明白canvas的api,绞尽脑汁了很多个日日夜夜。
房东的狗丶
2023/02/17
2.7K0
前端canvas基础复习,canvas学习笔记,持续记录
如何用 canvas 画出分形图
分形是一门以非规则几何形态为研究对象的几何学,由曼德勃 罗(B.B.Mandelbrot)等人创立并命名。
ConardLi
2021/09/29
2.1K0
如何用 canvas 画出分形图
Flutter 绘制探索 | 绘制中的动画变换
这篇文章来通过一个有趣的案例,介绍一下 绘制中的动画变换 ,以及如何在当前的变换基础上,叠加变换。如下所示,小车在界面上呈现的任何变动,都是变换矩阵作用的效果: 注: gif 图片为 15fps ,有些卡顿,非实际动画运行效果
张风捷特烈
2023/04/23
1.3K0
Flutter 绘制探索 | 绘制中的动画变换
canvas绘制动画原理及案例讲解(绘制小恐龙动画、时钟等)
这期为大家带来的是canvas的动画绘制案例与讲解。不知道大家上一期canvas绘制基本图形的入门教程看的怎么样了,如果已经遗忘了或者还没看的小伙伴建议先去看一下,上一期是学习这一期的基础:
用户9999906
2022/12/22
3.8K0
canvas绘制动画原理及案例讲解(绘制小恐龙动画、时钟等)
Canvas系列(10):动画初级
所谓动画其实就是快读绘制图片,由于人的眼睛更不上屏幕绘制的速率,所以看到的就好像连着的一样,也就形成了动画,动画片就是这个原理,canvas中的动画也是这个原理。提到动画就不得不说一个函数了,那就是requestAnimationFrame。这是一个定时执行的函数,类似于setTimeout,只是间隔时间不再有我们自己手动去设定,而是由计算机自己去计算,这样比我们直接设定的误差更小(通常我们是定1000/60,约等于16.7毫秒,因为CPU的频率一般是60Hz,也就是1秒最多可以刷新60次界面)。但是往往浏览器对requestAnimationFrame的支持不够友好,那这就需要polyfill,通常一种简单的polyfill可以这么写:
kai666666
2020/10/19
8540
Canvas系列(10):动画初级
路径布局-基于数学函数的视图布局方法
路径布局MyPathLayout是MyLayout布局体系中的第7种布局体系,在这种布局体系中您只需要提供一个坐标轴、一个曲线函数、以及视图之间的距离这三个要素就可以构造出来一个非常酷炫的界面布局效果。在了解路径布局之前您可以看看下面几个用路径布局实现的效果实例:
欧阳大哥2013
2018/08/22
9470
路径布局-基于数学函数的视图布局方法
用初中数学知识撸一个canvas环形进度条
周末好,今天给大家带来一款接地气的环形进度条组件vue-awesome-progress。近日被设计小姐姐要求实现这么一个环形进度条效果,大体由四部分组成,分别是底色圆环,进度弧,环内文字,进度圆点。设计稿截图如下:
程序员白彬
2020/07/10
1K0
用初中数学知识撸一个canvas环形进度条
鸿蒙元服务实战-笑笑五子棋(2)
Canvas提供画布组件,用于自定义绘制图形,开发者使用 CanvasRenderingContext2D 对象和 OffscreenCanvasRenderingContext2D
万少
2025/02/08
2220
鸿蒙元服务实战-笑笑五子棋(2)
Day 3 学习Canvas这一篇文章就够了
一、canvas简介 ​ <canvas> 是 HTML5 新增的,一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚至可以进行实时视频处理和渲染。 ​ 它最初由苹果内部使用自己MacOS X WebKit推出,供应用程序使用像仪表盘的构件和 Safari 浏览器使用。 后来,有人通过Gecko内核的浏览器 (尤其是Mozilla和Firefox),Opera和Chrome和超文本网络应用技术工作组建议为下一代的网络技术使用该元素。 ​ Canvas是由HTML代码配合高度和宽度属性而定义出的可绘制区域。JavaScript代码可以访问该区域,类似于其他通用的二维API,通过一套完整的绘图函数来动态生成图形。 ​ Mozilla 程序从 Gecko 1.8 (Firefox 1.5)开始支持 <canvas>, Internet Explorer 从IE9开始<canvas> 。Chrome和Opera 9+ 也支持 <canvas>。 二、Canvas基本使用 2.1 <canvas>元素
IT人一直在路上
2019/09/16
1.1K0
Day 3 学习Canvas这一篇文章就够了
TapBlocker:我和 CodeBuddy 一起打造的像素风数字打砖块游戏
在一次突发的灵感下,我突然很想做一个结合判断力和反应速度的轻量小游戏。名字我早就想好了,就叫 「TapBlocker 数字打砖块」。目标是通过 UniApp 开发一个单页应用,风格采用亮色像素风,玩法以 canvas 动画为核心,融合点击逻辑、加速下落和数字求和等机制,让人“上头”又容易上手。
繁依Fanyi
2025/05/20
1080
TapBlocker:我和 CodeBuddy 一起打造的像素风数字打砖块游戏
用初中数学知识撸一个canvas环形进度条
周一好,今天给大家带来一款接地气的环形进度条组件vue-awesome-progress。近日被设计小姐姐要求实现这么一个环形进度条效果,大体由四部分组成,分别是底色圆环,进度弧,环内文字,进度圆点。设计稿截图如下:
Sneaker-前端公虾米
2021/06/21
6370
用初中数学知识撸一个canvas环形进度条
不到30行代码实现一个酷炫H5全景
前言:本文将围绕:了解什么是全景 --> 怎么构成全景 --> 全景交互原理来进行讲解,手把手教你从零基础实现一个酷炫的Web全景,并讲解其中的原理。小白也能学习,建议收藏学习,有任何疑问,请在评论区讨论,笔者经常查看并回复。
coder_koala
2021/07/08
2.5K0
不到30行代码实现一个酷炫H5全景
第156天:canvas(三)
​ translate方法接受两个参数。x 是左右偏移量,y 是上下偏移量,如右图所示。
半指温柔乐
2018/09/11
5430
第156天:canvas(三)
[中国版 Cursor ]?!CodeBuddy快捷搭建个人展示页面指南
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
数字扫地僧
2025/05/13
4720
[中国版 Cursor ]?!CodeBuddy快捷搭建个人展示页面指南
相关推荐
前端-动画大乱炖
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档