본문 바로가기
GD's IT Lectures : 기초부터 시리즈/프로세싱(Processing) 기초부터 ~

[프로세싱(Processing)] 프로젝트 예제

by GDNGY 2023. 5. 1.

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");
}

 

이 예제는 이미지 파일을 불러와 마우스 위치에 이미지를 그리고, 마우스 클릭 시 화면을 캡처하는 프로그램입니다. 이를 바탕으로 자신만의 창작 프로젝트를 구상하고 구현해 보세요!

반응형

댓글