@@ -24,11 +24,11 @@ import AnnotatedLine from "../../../components/AnnotatedLine/index.astro";
2424
2525你是否想通过少量代码就绘制出许多形状,从而将你的项目提升到新的水平?想象绘制一排树、一叠书、彩虹的拱形,或者蜂巢的内部。为了创建由相同形状的多个版本组成的图形,我们不再只写单独的形状,而是进入循环和数组的奇妙世界。让我们学习如何用少量代码创建重复的图案吧!
2626
27- ![ An arch and hexagon shape are vertically aligned with the label that reads “single object.(单个对象)” Arrows point from these shapes to corresponding patterns that are vertically aligned under a label that reads “multiplied objects.(多个对象)” The single arch points to five vertically stacked arches creating a rainbow shape. The hexagon points to many hexagon arranged in a honeycomb tessellation. ] ( ../images/introduction/loops-intro.png )
27+ ![ 一个拱形和一个六边形垂直排列,标签为 “single object.(单个对象)” 箭头从这些形状指向下方垂直排列在 “multiplied objects.(多个对象)” 标签下的对应图案。单个拱形指向五个垂直堆叠、形成彩虹形状的拱形。六边形指向排列成蜂巢镶嵌图案的多个六边形。 ] ( ../images/introduction/loops-intro.png )
2828
29- 绘制每个形状都写一行新代码将会非常繁琐。相反的,我们可以使用 * loops* (循环),它允许我们执行并重复代码块任意次数。在本教程中,我们使用循环和数组来创建。 [ a racing caterpillar sketch ] ( https://editor.p5js.org/gbenedis@gmail.com/sketches/BrmtZ36ET ) .
29+ 绘制每个形状都写一行新代码将会非常繁琐。相反的,我们可以使用 * loops* (循环),它允许我们执行并重复代码块任意次数。在本教程中,我们使用循环和数组来创建重复的可视化效果 [ 一个毛毛虫赛跑的草图 ] ( https://editor.p5js.org/gbenedis@gmail.com/sketches/BrmtZ36ET ) .
3030
31- ![ Three pink caterpillars crawling to reach a green finish line at the right of the canvas. ] ( ../images/introduction/caterpillar-race-end.gif )
31+ ![ 三只粉色的毛毛虫正在画布右侧爬向绿色的终点线。 ] ( ../images/introduction/caterpillar-race-end.gif )
3232
3333一组毛毛虫将从起跑线开始比赛,第一个到达终点线的毛毛虫获胜。每次运行草图时,获胜的毛毛虫都会不同!
3434
@@ -100,7 +100,7 @@ function draw() {
100100 - 这个变量将作为毛毛虫节段的 y 坐标。
101101- 在 ` draw() ` 函数中:
102102 - 使用 ` circle() ` 函数绘制毛毛虫的身体。 传入 ` circX ` , ` circY ` , 和 50 作为参数, 分别表示 x 坐标、y 坐标和直径: ` circle(circX, circY, 50); `
103- - 我们将圆形填充为白色,并设置一个细的黑色描边 。
103+ - 我们将圆形填充为白色,并设置黑色细描边 。
104104 - 在绘制圆形的语句下方, 使用 ` circX += 20; ` 来让 ` circX ` 的值增加20。
105105 - 这表示每次 ` draw() ` 函数运行时, ` circX ` 都会增加 20 个像素点。程序会在比上一次位置右移 20 个像素的地方绘制新的圆,从而形成毛毛虫前进的效果。
106106- 在 ` draw() ` 函数的末尾,添加如下的条件语句:
@@ -289,7 +289,7 @@ for (let i = 0; i < number; i += 1) {
289289 let i = 0 ;
290290 ```
291291
292- - ** 条件:** 用于保持循环继续运行的条件。只要改条件为 ` true ` ,loop 循环就会持续执行。 当该条件为 ` false ` ,for 循环就会停止。
292+ - ** 条件:** 用于保持循环继续运行的条件。只要该条件为 ` true ` ,loop 循环就会持续执行。当该条件为 ` false ` ,for 循环就会停止。
293293
294294 ``` js
295295 i < number;
@@ -337,7 +337,7 @@ for (let i = 0; i < number; i += 1) {
337337 - 这会将眼睛放置在最后一个绘制的圆的顶部。
338338 - 添加第二只眼睛并设置其坐标和大小: ` circle(x - eyeSize, circY-eyeSize, eyeSize); `
339339 - 我们将第二只眼睛的 x 坐标减去 ` eyeSize ` ,这样两只眼睛就能并排显示,互不重叠。
340- - 完成毛毛虫的绘制后,将代码整理到一个名为 ` drawCaterpillar() ` 的自定义函数中。你可以随意修改毛毛虫的图形!
340+ - 完成毛毛虫的绘制后,将代码封装到名为 ` drawCaterpillar() ` 的自定义函数中。你可以随意修改毛毛虫的图形!
341341 - 将 ` drawCaterpillar() ` 函数定义在 ` draw() ` 之外。
342342 - 该函数应包含你用来绘制毛毛虫身体的圆的 for 循环,以及用于绘制毛毛虫眼睛的两个圆。
343343 - 请记住在 ` draw() ` 函数中调用它!在 ` draw() ` 函数中,在结束循环的 if-statement 之前,输入 ` drawCaterpillar(); `
@@ -481,7 +481,7 @@ function draw() {
481481- 在 ` draw() ` 函数外创建一个新的自定义函数,并将其命名为 ` drawCaterpillars() `
482482 - 在 ` drawCaterpillars() ` 函数内创建一个新的 for 循环。
483483 - 在循环的第一个表达式中初始化循环变量,并将其初始值设为 0。
484- - S在循环的第二个表达式中,讲条件设置为 ` i < numCaterpillars ` 。
484+ - 在循环的第二个表达式中,将条件设置为 ` i < numCaterpillars ` 。
485485 - 在循环的第三个表达式中递增循环变量的值。
486486 - 在 for 循环的括号内调用 ` drawCaterpillar(circX, circY); ` 。
487487- 在 ` draw() ` 函数中, 调用 ` drawCaterpillars(); `
@@ -605,13 +605,13 @@ function drawCaterpillar(x,y) {
605605 - 在 * for 循环* 内部,添加一行新的代码: ` let padding = height / numCaterpillars; `
606606 - 这行代码声明了一个名为 ` padding ` 的变量,用于定义每条毛毛虫之间的垂直距离。
607607 - 我们将画布中的 ` height ` 值除以草图中毛毛虫的数量,并将结果赋值给 ` padding ` 。这样就将画布垂直分割成行(每条毛毛虫占一行)。每行的高度就是 ` padding ` 的值。
608- - 初始化变了 ` y ` 并将其赋值为: ` let y = (i + 0.5) * padding ` ,其中 ` y ` 决定了每条毛毛虫的 y 坐标。
608+ - 初始化变量 ` y ` 并将其赋值为: ` let y = (i + 0.5) * padding ` ,其中 ` y ` 决定了每条毛毛虫的 y 坐标。
609609 - 使用变了 ` i ` ,for 循环的每次迭代都会将一条毛毛虫放在它自己的行中。
610610 - 将 ` i ` 加上 0.5 可以使毛毛虫在该行居中。
611611- 与步骤 5 类似,将 ` y ` 作为参数添加到 ` drawCaterpillar() ` 函数调用的括号中。
612612 - 现在这行代码应该是: ` drawCaterpillar(circX, y); `
613613
614- 总而言之,我们已经将 ` x ` 和 ` y ` 作为 ` drawCaterpillar() ` 函数内部使用的参数。在 ` drawCaterpillars() ` 函数中使用此函数诗 ,我们使用` circX ` 和 ` y ` 作为参数。
614+ 总而言之,我们已经将 ` x ` 和 ` y ` 作为 ` drawCaterpillar() ` 函数内部使用的参数。在 ` drawCaterpillars() ` 函数中使用此函数时 ,我们使用` circX ` 和 ` y ` 作为参数。
615615
616616您可以在我们之前的教程 [ 使用函数组织代码] ( /tutorials/zh-Hans/organizing-code-with-functions ) 中了解更多关于自定义函数、参数和实参的信息。
617617
@@ -639,7 +639,7 @@ for 循环的索引变量 (`i`) 会在每次循环迭代时递增或递减。
639639
640640我们可以在绘图中使用索引变量来进行加、减、乘、除运算,使得每次 for 循环迭代的结果都不同。
641641
642- 在本例中,我们使用 ` i ` 来计算每天毛毛虫之间的间距 (见下表):
642+ 在本例中,我们使用 ` i ` 来计算每条毛毛虫之间的间距 (见下表):
643643
644644- 第一次迭代时, ` i ` 为 0 , ` y ` 为 ` 0.5 * padding ` 。第一条毛毛虫将绘制在该 y 值处。
645645- 在第二次迭代中, ` i ` 为 1 , ` y ` 变为 ` 1.5 * padding ` 。第二条毛毛虫绘制在新的 y 值处。
@@ -939,7 +939,7 @@ function moveCaterpillars() {
939939
940940- 每次循环迭代时,我们将 ` move ` 赋值为 5 到 30 之间的随机数。
941941 - 这意味着每条毛毛虫都会被分配一个不同的随机 ` move ` 值。
942- - 然后我们更新 ` caterpillarEnds ` 数组中第 ` i ` 个位置的值, ` drawCaterpillar() ` 函数就是用这个值来显示毛毛虫 。
942+ - 然后我们更新 ` caterpillarEnds ` 数组中第 ` i ` 个位置的值, ` drawCaterpillar() ` 函数根据这个值来确定毛毛虫的显示位置 。
943943
944944
945945### 7.3 – 移动毛毛虫
@@ -1039,11 +1039,11 @@ function drawCaterpillar(x, y) {
10391039- 转到 ` drawCaterpillar() ` 函数的定义。
10401040 - 添加一个名为 ` segments ` 的新参数。现在它应该看起像这样: ` function drawCaterpillar(x, y, segments) { ... } `
10411041 - 你可以删除草图顶部的全局变量 ` segments ` 。
1042- - 赚到 ` drawCaterpillars() ` 函数的定义。
1042+ - 转到 ` drawCaterpillars() ` 函数的定义。
10431043 - 在调用 ` drawCaterpillar() ` 函数的括号中,添加第三个参数 ` crawl ` : ` drawCaterpillar(x, y, crawl); `
10441044 - 在这行代码上方,通过输入 ` let crawl = round(random(3, 6)); ` 为 ` crawl ` 变量赋一个新的随机值。
1045- - 这意味着在程序运行期间,它会持续绘制长度随机 (3 到 6 个圆)的毛毛虫,并将它们从起点移动到终点。
1046- - 您可以根据希望毛毛虫爬行的长度来修改 ` random() ` 的值。
1045+ - 这意味着在程序运行期间,程序会持续绘制长度随机 (3 到 6 个圆)的毛毛虫,并将它们从起点移动到终点。
1046+ - 你可以根据希望毛毛虫爬行的长度来修改 ` random() ` 的值。
10471047 - ` crawl ` 变量的随机值将填充 ` drawCaterpillar() ` 函数定义中的 ` segments ` 参数,该参数决定绘制的圆的数量。
10481048
10491049你的函数应该如下所示:
0 commit comments