请用processing语言,画一个矩形,矩形在画布中随机移动,矩形能够在鼠标移动到自身旁边时慢速弹开,鼠标由波点替代,列出详细的函数文字注释
时间: 2023-06-18 07:02:22 浏览: 110
下面是一个用Processing语言画矩形,并且可以随机移动以及与鼠标交互的代码,注释已经详细说明了各个函数的作用:
```processing
// 定义矩形的位置和大小
float rectX, rectY, rectWidth = 50, rectHeight = 50;
// 定义矩形移动的速度和方向
float rectSpeedX, rectSpeedY;
// 当程序启动时,初始化矩形的位置和速度
void setup() {
size(500, 500);
rectX = random(width - rectWidth); // 矩形的x坐标随机
rectY = random(height - rectHeight); // 矩形的y坐标随机
rectSpeedX = random(3) - 1.5; // 矩形x方向的速度随机
rectSpeedY = random(3) - 1.5; // 矩形y方向的速度随机
}
void draw() {
background(255);
// 画矩形
rect(rectX, rectY, rectWidth, rectHeight);
// 矩形移动
rectX += rectSpeedX;
rectY += rectSpeedY;
// 碰到边界反弹
if (rectX < 0 || rectX > width - rectWidth) {
rectSpeedX *= -1;
}
if (rectY < 0 || rectY > height - rectHeight) {
rectSpeedY *= -1;
}
// 计算鼠标和矩形的距离
float distance = dist(mouseX, mouseY, rectX + rectWidth / 2, rectY + rectHeight / 2);
if (distance < rectWidth / 2 + 20) { // 如果鼠标在矩形旁边
// 计算鼠标和矩形的方向
float dx = mouseX - (rectX + rectWidth / 2);
float dy = mouseY - (rectY + rectHeight / 2);
// 让矩形慢慢弹开
rectX -= dx / distance * 5;
rectY -= dy / distance * 5;
}
// 画鼠标
noStroke();
fill(0, 100, 200);
ellipse(mouseX, mouseY, 20, 20);
}
```
在以上代码中,主要用到了`setup()`和`draw()`两个函数。`setup()`函数在程序启动时只执行一次,用来初始化程序的一些变量和设置画布的大小。`draw()`函数会在程序启动后不断地执行,用来进行画面的绘制和更新。
在`setup()`函数中,我们用`random()`函数随机生成矩形的位置和速度。其中`random()`函数会返回一个[0,1)之间的随机数,我们可以通过乘以一个系数和加上一个偏移量来得到想要的随机数范围。
在`draw()`函数中,我们首先用`background()`函数将画布清空。然后用`rect()`函数画出矩形。接着更新矩形的位置,如果碰到边界就反弹。然后计算鼠标和矩形的距离,如果鼠标在矩形旁边就让矩形慢慢弹开。最后画出鼠标。
阅读全文