我已经编写了这段代码,在按下鼠标按钮的情况下,增加或减少可见的圆圈数量,围绕圆圈等距离。
int nbr_circles = 2;
void setup() {
size(600, 600);
smooth();
background(255);
}
void draw() {
background(255);
float cx = width/2.0;
float cy = height/2.0;
fill(0);
//float x, y; //
for (int i = 0; i < nbr_circles; i++)
{
float angle = i * TWO_PI / nbr_circles;
float x = cx + 110.0 * cos(angle);
float y = cy + 110.0 * sin(angle);
ellipse(x, y, 20, 20);
}
}
void mousePressed() {
if (mouseButton == LEFT) {
if (nbr_circles < 20)
nbr_circles = nbr_circles + 1;
} else if (mouseButton == RIGHT) {
if (nbr_circles > 2)
nbr_circles = nbr_circles - 1;
}
}
我想改变代码,以便在nbr_circles固定为10的情况下,一次只能看到一个圆圈,每个圆圈依次在连续的帧中。
我稍微更改了代码。鼠标按钮不执行任何操作,nbr_circles固定为10.
我现在如何一次显示一个圆圈?
显示圈子#1 - &gt;隐藏圈子#1,显示圈子#2 - &gt;隐藏圈子#2,显示圈子#3 ... - &gt;隐藏圈子#9,显示圈子#10 - &gt;隐藏圈子#1,显示圈子#1 ......
调整后的代码 - 哪里出错了?
int nbr_circles = 2;
int i = 1;
void setup () {
size (600, 600);
}
void draw () {
background (255);
fill (0);
float cx = width/2.0;
float cy = height/2.0;
float angle = i * TWO_PI / nbr_circles;
float x = cx + 110.0 * cos(angle);
float y = cy + 110.0 * sin(angle);
ellipse(x, y, 20, 20);
}
if (mouseButton == LEFT) {
if (ellipse(x,y,20,20))
rotate (angle);
}
提前致谢。
答案 0 :(得分:-1)
退后一步,我真的建议你开始小一些,而不是每次遇到困难时发布一个新问题。看起来你对Processing的基本语法有一个基本的误解,所以也许你应该回去做一些教程,直到你对它更加舒服。这可能是我能给你的最“正确”的答案,即使它可能不是你想要的。
要回答为什么调整后的代码不起作用的问题,这是因为没有一种语法有意义。首先,你在函数之外有一个if语句,这是无效的。你什么时候期望if语句被执行?
其次,你在if语句中有了ellipse()函数,但是ellipse()函数没有返回一个布尔值。你有什么期望呢?最后,你期望旋转功能做什么?
您似乎正在尝试复制粘贴您在互联网上找到的代码,但却没有真正理解其中的任何内容。那不行。你必须退后一步,了解基础知识,然后才能制作一个实际上你想要它做的事情的程序。
如果您编辑“调整后的代码”来解决我指出的问题,我会尽力帮助您完成整个过程,但是您真的应该考虑回去并开始缩小,然后再尝试获取其他人的代码互联网工作。