用processing输出一个300*300的方形,可以按键交互,按1时方形变为红色,按2时方形变为绿色,按3时方形变为600*600
时间: 2023-03-11 15:11:05 浏览: 45
可以使用Processing编程语言来实现,程序代码如下:int size = 300; //方形的大小void setup() {
size(size, size); //设置画布大小
}void draw(){
if(keyPressed){ //如果有用户按下按键
if(key=='1'){
fill(255,0,0); //按1时,方形变为红色
}
else if(key=='2'){
fill(0,255,0); //按2时,方形变为绿色
}
else if(key=='3'){
size = 600; //按3时,方形变为600*600
}
rect(0, 0, size, size); //绘制方形
}
else { //如果没有用户按下按键
fill(255); //方形颜色为白色
rect(0, 0, size, size); //绘制方形
}
}
相关问题
请使用processing为我做一个由线条缝合而成的正方形,并且正方形的每个线条可以通过麦克风的音频输入波动
好的,以下是一个基于 Processing 的实现。
首先,我们需要使用 `Minim` 库来获取麦克风的音频输入。我们可以在 `setup()` 函数中初始化 `Minim` 和 `AudioInput` 对象,代码如下:
```java
import processing.sound.*;
import ddf.minim.*;
Minim minim;
AudioInput in;
void setup() {
size(500, 500);
minim = new Minim(this);
in = minim.getLineIn(Minim.STEREO, 2048);
}
```
接下来,我们需要定义一个 `Line` 类来表示正方形的每条线段。`Line` 类包含起点和终点坐标,以及线段的长度和颜色,代码如下:
```java
class Line {
float x1, y1, x2, y2;
float len;
color col;
Line(float x1, float y1, float x2, float y2, color col) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.col = col;
this.len = dist(x1, y1, x2, y2);
}
void draw() {
stroke(col);
strokeWeight(map(len, 0, maxLen, 1, 10));
line(x1, y1, x2, y2);
}
void update(float level) {
float angle = noise(x1 / 100.0, y1 / 100.0, frameCount / 100.0) * TWO_PI * level;
float dx = cos(angle) * len * level;
float dy = sin(angle) * len * level;
x2 = x1 + dx;
y2 = y1 + dy;
}
}
```
在 `draw()` 函数中,我们首先清空画布,并计算出当前音频输入的平均振幅。然后对于每条线段,我们根据平均振幅来更新线段的终点坐标,并绘制该线段,代码如下:
```java
float maxLen;
Line[] lines;
void draw() {
background(255);
float level = in.mix.level();
level = map(level, 0, 1, 0, 2);
for (Line line : lines) {
line.update(level);
line.draw();
}
}
```
最后,在 `setup()` 函数中我们需要初始化正方形的每条线段,并计算出最长的线段长度。代码如下:
```java
lines = new Line[4];
lines[0] = new Line(100, 100, 400, 100, color(0));
lines[1] = new Line(400, 100, 400, 400, color(0));
lines[2] = new Line(400, 400, 100, 400, color(0));
lines[3] = new Line(100, 400, 100, 100, color(0));
maxLen = max(lines[0].len, max(lines[1].len, max(lines[2].len, lines[3].len)));
```
现在你可以运行这个程序,并用声音来控制正方形的线条了。
用processing编写一段按下字母b键可以播放音乐按其他字母键可以暂停的代码
下面是一段使用Processing的代码,按下字母b键可以播放音乐,按下其他字母键可以暂停音乐:
```
import processing.sound.*;
SoundFile sound;
boolean isPlaying = false;
void setup() {
size(400, 400);
background(255);
// 加载音乐文件
sound = new SoundFile(this, "music.mp3");
}
void draw() {
// 每帧检查音乐是否正在播放
if (isPlaying) {
if (!sound.isPlaying()) {
sound.play();
}
} else {
sound.pause();
}
}
void keyPressed() {
if (key == 'b' || key == 'B') {
// 按下b键,播放音乐
isPlaying = true;
} else {
// 按下其他字母键,暂停音乐
isPlaying = false;
}
}
```
在这个例子中,我们使用了Processing的音频库来加载和播放音乐文件。在setup()函数中,我们加载了一个名为"music.mp3"的音乐文件。在draw()函数中,我们每帧检查音乐是否正在播放,如果没有就播放。在keyPressed()函数中,如果按下了字母b键,我们将isPlaying变量设置为true,表示要播放音乐;如果按下其他字母键,我们将isPlaying变量设置为false,表示要暂停音乐。