7. 프로젝트 예제
7.1. 간단한 그림판 프로젝트
간단한 그림판 프로젝트는 마우스와 키보드를 이용하여 캔버스에 그림을 그리는 프로그램입니다. 이 프로젝트를 통해 마우스와 키보드 이벤트 처리, 그리기 도구 등 기본적인 그래픽 요소를 활용하는 방법을 익힐 수 있습니다. 다음은 간단한 그림판 프로젝트 예제 코드입니다.
int size = 10; // 그리기 도구 크기
color penColor = color(0); // 그리기 도구 색상
void setup() {
size(400, 400);
background(255);
}
void draw() {
stroke(penColor);
strokeWeight(size);
if (mousePressed) {
line(mouseX, mouseY, pmouseX, pmouseY);
}
}
void keyPressed() {
if (key == 'c') {
background(255);
} else if (key == '+') {
size += 5;
} else if (key == '-') {
size = max(5, size - 5);
} else if (key == 'r') {
penColor = color(255, 0, 0);
} else if (key == 'g') {
penColor = color(0, 255, 0);
} else if (key == 'b') {
penColor = color(0, 0, 255);
}
}
7.2. 인터랙티브 아트 프로젝트
인터랙티브 아트 프로젝트는 사용자의 입력에 반응하여 동적으로 변화하는 예술 작품을 만드는 프로그램입니다. 이 프로젝트를 통해 마우스와 키보드 이벤트 처리, 애니메이션, 그래픽 요소 등의 기능을 활용하는 방법을 익힐 수 있습니다. 다음은 인터랙티브 아트 프로젝트 예제 코드입니다.
int x, y; // 도형 위치
float angle; // 도형 회전 각도
int size; // 도형 크기
color fillColor; // 도형 채우기 색상
boolean showFill = true; // 도형 채우기 여부
void setup() {
size(400, 400);
background(255);
x = width / 2;
y = height / 2;
size = 50;
fillColor = color(0, 0, 255, 100);
}
void draw() {
background(255);
pushMatrix();
translate(x, y);
rotate(radians(angle));
if (showFill) {
fill(fillColor);
noStroke();
} else {
noFill();
stroke(0);
}
rectMode(CENTER);
rect(0, 0, size, size);
popMatrix();
}
void mouseMoved() {
x = mouseX;
y = mouseY;
}
void keyPressed() {
if (key == '+') {
size += 10;
} else if (key == '-') {
size = max(10, size - 10);
} else if (key == 'f') {
showFill = !showFill;
} else if (key == 'r') {
fillColor = color(255, 0, 0, 100);
} else if (key == 'g') {
fillColor = color(0, 255, 0, 100);
} else if (key == 'b') {
fillColor = color(0, 0, 255, 100);
}
}
void mousePressed() {
angle += 10;
}
void mouseDragged() {
size = max(10, size - 5);
}
void mouseReleased() {
size = 50;
}
7.3. 데이터 시각화 프로젝트
데이터 시각화 프로젝트는 데이터를 시각적으로 표현하는 프로그램입니다. 이 프로젝트를 통해 그래프, 차트 등의 데이터 시각화 기법을 활용하는 방법을 익힐 수 있습니다. 다음은 데이터 시각화 프로젝트 예제 코드입니다.
int[] data = { 50, 75, 120, 90, 150 }; // 데이터
String[] labels = { "A", "B", "C", "D", "E" }; // 레이블
int barWidth = 40; // 막대 그래프 너비
int xOffset = 60; // x 좌표 오프셋
int yOffset = 30; // y 좌표 오프셋
void setup() {
size(400, 400);
textAlign(CENTER, CENTER);
}
void draw() {
background(255);
for (int i = 0; i < data.length; i++) {
int x = i * xOffset + barWidth / 2;
int y = height - yOffset - map(data[i], 0, max(data), 0, height - 2 * yOffset);
rectMode(CENTER);
fill(0, 0, 255);
rect(x, y, barWidth, height - yOffset - y);
fill(0);
text(labels[i], x, height - yOffset / 2);
}
}
7.4. 게임 개발 프로젝트
게임 개발 프로젝트는 마우스와 키보드 입력을 처리하여 게임을 만드는 프로그램입니다. 이 프로젝트를 통해 게임 로직 구현, 충돌 처리 등의 기술을 활용하는 방법을 익힐 수 있습니다. 다음은 간단한 게임 개발 프로젝트 예제 코드입니다.
int playerX, playerY; // 플레이어 위치
int playerSpeed = 5; // 플레이어 이동 속도
int enemyX, enemyY; // 적 위치
int enemySpeed = 2; // 적 이동 속도
int enemyDirection = 1; // 적 이동 방향
void setup() {
size(400, 400);
playerX = width / 2;
playerY = height - 50;
enemyX = width / 2;
enemyY = 50;
}
void draw() {
background(255);
// 플레이어 이동
if (keyPressed && (keyCode == LEFT || key == 'a')) {
playerX = max(0, playerX - playerSpeed);
} else if (keyPressed && (keyCode == RIGHT || key == 'd')) {
playerX = min(width, playerX + playerSpeed);
}
// 적 이동
enemyX += enemySpeed * enemyDirection;
if (enemyX < 0 || enemyX > width) {
enemyDirection *= -1;
enemyY += 20;
}
// 충돌 처리
if (dist(playerX, playerY, enemyX, enemyY) < 30) {
textSize(50);
textAlign(CENTER, CENTER);
text("GAME OVER", width / 2, height / 2);
noLoop();
}
// 그리기
rectMode(CENTER);
fill(0, 0, 255);
rect(playerX, playerY, 50, 50);
fill(255, 0, 0);
rect(enemyX, enemyY, 50, 50);
}
7.5. 창작 프로젝트 구상 및 구현
창작 프로젝트는 자유 주제로 프로그램을 만드는 프로젝트입니다. 이 프로젝트를 통해 창의적인 아이디어를 구상하고 구현하는 방법을 익힐 수 있습니다. 프로젝트 아이디어는 개인의 취향에 따라 다양할 수 있습니다. 다음은 간단한 창작 프로젝트 예제 코드입니다.
PImage img;
void setup() {
size(400, 400);
img = loadImage("image.png");
}
void draw() {
background(255);
image(img, mouseX, mouseY);
}
void mousePressed() {
saveFrame("screenshot.png");
}
이 예제는 이미지 파일을 불러와 마우스 위치에 이미지를 그리고, 마우스 클릭 시 화면을 캡처하는 프로그램입니다. 이를 바탕으로 자신만의 창작 프로젝트를 구상하고 구현해 보세요!
'GD's IT Lectures : 기초부터 시리즈 > 프로세싱(Processing) 기초부터 ~' 카테고리의 다른 글
[프로세싱(Processing) : 중급] 고급 그래픽 기법 (0) | 2023.05.01 |
---|---|
[프로세싱(Processing) : 중급] 객체지향 프로그래밍 (OOP) 기본 (0) | 2023.05.01 |
[프로세싱(Processing)] 프로세싱 라이브러리 활용 (0) | 2023.05.01 |
[프로세싱(Processing)] 상호작용과 애니메이션 (0) | 2023.05.01 |
[프로세싱(Processing)] 그래픽 요소 (0) | 2023.05.01 |
댓글