#9983. 2026/7/29/WJN笔记(GOC基础)
2026/7/29/WJN笔记(GOC基础)
一、GOC语言简介
GOC是面向信息学入门的图形化编程语言,基于C++语法扩展了绘图功能。
二、核心指令大全
所有绘图指令均通过画笔对象 p 调用,以下是入门阶段必须掌握的基础指令,按功能分类整理:
1. 移动类指令(控制画笔位置,移动时画线)
| 指令语法 | 核心功能 | 参数与示例 |
|---|---|---|
p.fd(长度); |
画笔沿当前朝向向前移动指定距离,移动路径自动画线 | 参数为整数,单位:像素 示例: p.fd(100); 向前移动100像素 |
p.bk(长度); |
画笔沿当前朝向的反方向向后移动指定距离,移动路径自动画线 | 参数为整数,单位:像素 示例: p.bk(100); 向后移动100像素 |
2. 转向类指令(仅改变朝向,不移动、不画线)
| 指令语法 | 核心功能 | 参数与示例 |
|---|---|---|
p.rt(角度); |
画笔原地顺时针旋转指定角度,仅改变朝向 | 参数为整数,单位:度 示例: p.rt(90); 顺时针右转90° |
p.lt(角度); |
画笔原地逆时针旋转指定角度,仅改变朝向 | 参数为整数,单位:度 示例: p.lt(90); 逆时针左转90° |
3. 画笔样式设置(修改后续绘图的外观)
| 指令语法 | 核心功能 | 参数与示例 |
|---|---|---|
p.size(粗细); |
设置画笔线条的粗细 | 参数为整数,数值越大线条越粗 示例: p.size(10); 设置画笔粗细为10 |
p.c(颜色编号); |
设置画笔颜色 | 参数为整数,对应调色板颜色编号 示例: p.c(3); 设置画笔为3号颜色 |
4. 抬笔与落笔(控制移动时是否画线)
| 指令语法 | 核心功能 | 典型用法说明 |
|---|---|---|
p.up(); |
抬笔:后续移动画笔时不会留下线条 | 需要移动画笔到新位置、但不想画线时使用,常用于切换绘图位置 |
p.down(); |
落笔:后续移动画笔时恢复画线 | 抬笔移动到位后,落笔继续正常绘图 |
典型抬笔移动代码:
p.up(); // 抬笔
p.fd(100); // 移动100像素,不留下线条
p.down(); // 落笔,后续移动恢复画线
5. 快捷图形绘制
| 指令语法 | 核心功能 | 参数与示例 |
|---|---|---|
p.r(宽, 高); |
绘制空心矩形 | 两个参数分别为矩形的宽、高(像素) 示例: p.r(100,50); 绘制100×50的空心矩形 |
p.rr(宽, 高); |
绘制实心填充矩形 | 两个参数分别为矩形的宽、高(像素) 示例: p.rr(100,50); 绘制100×50的实心矩形 |
注意:矩形的绘制方向会受画笔当前朝向影响。
6. 文本输出指令
使用 p.text() 可以在画布当前位置输出文本,分两种使用格式:
- 输出数字:直接填写数字参数,无需加引号
p.text(10); // 在画布上输出数字 10 - 输出汉字、字母、字符串:内容必须用英文双引号包裹
p.text("正方形"); // 在画布上输出文字“正方形” p.text("Hello"); // 在画布上输出字母 Hello
三、必记核心规律
-
方向与转动规律
- 右转
rt= 顺时针转动(与钟表指针转动方向一致) - 左转
lt= 逆时针转动(与钟表指针转动方向相反) - 画笔初始默认朝向:水平向上
- 右转
-
画线控制规律
- 只有
fd、bk移动画笔时,才会在画布上留下线条; rt、lt只旋转方向,不移动位置,也不画线;up()抬笔状态下移动不会画线;down()落笔状态下移动才会画线。
- 只有
-
缩写速记
- fd → 前进
- bk → 后退
- rt → 右转
- lt → 左转
- r → 空心矩形;rr → 实心矩形
- up → 抬笔;down → 落笔
-
语法规范
- 所有指令末尾必须写分号
; - 字符串、汉字、字母内容必须用英文双引号包裹
- 所有指令末尾必须写分号
四、重点应用:外角法绘制正多边形
这是GOC入门最核心的绘图逻辑,必须牢记:
- 外角计算公式:正 n 边形的单个外角 =
- 关键要点:画正多边形时,画笔每画完一条边,旋转的角度就是这个外角。
通用绘制步骤
重复执行 n 次:「前进固定边长 + 旋转一个外角的角度」,即可画出完整的正多边形。
- 正方形(4边):外角 = ,每次转90°,重复4次
- 正五边形(5边):外角 = ,每次转72°,重复5次
- 正六边形(6边):外角 = ,每次转60°,重复6次
示例:绘制正方形
int main()
{
p.size(5);
p.c(2);
// 重复4组:前进 + 右转外角90度
p.fd(150);
p.rt(90);
p.fd(150);
p.rt(90);
p.fd(150);
p.rt(90);
p.fd(150);
p.rt(90);
return 0;
}
五、综合完整程序示例
整合所有基础指令的完整程序:
int main()
{
// 设置画笔样式
p.size(8);
p.c(4);
// 绘制线段
p.fd(100);
p.rt(90);
// 抬笔换位置,绘制矩形
p.up();
p.fd(50);
p.down();
p.rr(100, 50);
// 抬笔移动后输出文本
p.up();
p.rt(90);
p.fd(80);
p.down();
p.text("GOC基础绘图");
p.text(2026);
return 0;
}