[실습 1]
2. 좌측 코드에서 easing을 0.1에서 0.4로 변화시켜가면서 어떤 동작을 하는지 확인하라. 그런 동작이 가능한 이유는?
마우스를 움직이면 easing이 0.1일
때 0.4일 때보다 원이 마우스를 따라오는 속도가 더 느리다.
(마우스를 움직이면 easing이 0.4일 때 0.1일 때보다 원이 마우스를 따라오는 속도가 더 빠르다.)
[실습 3]
아래 그림과 같이 동작하도록 우측 코드를 수정하고 실험하라.
void setup() {
size(500, 500);
background(200);
}
void draw() {
line(200, 200, mouseX, mouseY);
}
void mousePressed() {
stroke(0);
fill(255);
ellipse(mouseX, mouseY, 30, 30);
}
void keyPressed() {
background(200);
}
[과제 1]
우측 그림을 그리는 프로그램을 코딩하라. 마우스 클릭으로 선을 그리고
아무키나 누르면 색이 바뀌도록 한다.
void setup() {
size(300, 300);
background(255);
}
void draw() {
if
(mousePressed) {
line(150, 150, mouseX, mouseY);
}
}
void keyPressed() {
stroke(random(255), random(255), random(255));
}
[과제 2]
마우스 커서가 우측에 있을 땐 서서히 푸른색으로 변하고 마우스 커서가 좌측에 있을 땐 서서히 빨간색으로 변하게
하라. 어떻게 수정하여야 하는가?
float r = 150;
float g = 0;
float b = 0;
void setup() {
size(200, 200);
}
void draw() {
background(r, g, b);
stroke(255);
line(width/2, 0, width/2, height);
if
(mouseX < width/2) {
r
= r + 1;
}
else {
r
= r - 1;
}
if
(r > 255) {
r
= 255;
}
else if (r < 0) {
r
= 0;
}
if
(mouseX > width/2) {
b
= b + 1;
}
else {
b
= b - 1;
}
if
(b > 255) {
b
= 255;
}
else if (b < 0) {
b
= 0;
}
}
[과제 3]
아래와 같이 원 안에 커서가 있으면 노란색으로, 원 밖에 커서가 있으면
흰색으로 바뀌는 원을 그리는 코드를 작성하라.
void setup() {
size(200, 200);
noCursor();
}
void draw() {
background(255);
if(dist(100, 100, mouseX, mouseY) > 75) {
fill(255);
}
else {
fill(255, 255, 0);
}
ellipse(100, 100, 150, 150);
line(mouseX-10, mouseY, mouseX+10, mouseY);
line(mouseX, mouseY-10, mouseX, mouseY+10);
}
[과제 4]
공이 위 아래로 바운싱하게 코드를 수정하라.
int y = 0;
int speed = 1;
void setup() {
size(200, 200);
smooth();
}
void draw() {
background(255);
y =
y + speed;
if
((y > height) || (y < 0)) {
speed = speed * -1;
}
stroke(0);
fill(175);
ellipse(100, y, 32, 32);
}
[과제 5]
여러 개의 공이 랜덤하게 바운싱하는 코드를 작성하라.
float xPos, yPos, qPos, wPos;
float xDir, yDir, qDir, wDir;
void setup() {
size(200, 200);
xPos = yPos = 10;
xDir = random(-5, 5);
yDir = random(-5, 5);
qPos = wPos = 10;
qDir = random(-5, 5);
wDir = random(-5, 5);
stroke(0);
}
void draw() {
background(255);
fill(175);
ellipse(xPos, yPos, 20, 20);
xPos += xDir;
yPos += yDir;
if
(xPos < 10 || xPos > width-10) {
xDir *= -1;
}
if
(yPos < 10 || yPos > height-10) {
yDir *= -1;
}
ellipse(qPos, wPos, 20, 20);
qPos += qDir;
wPos += wDir;
if
(qPos < 10 || qPos > width-10) {
qDir *= -1;
}
if
(wPos < 10 || wPos > height-10) {
wDir *= -1;
}
}