프로세싱 게임 메이킹 자바실험실 JavaLab.org 이동준
OASIS with processing
프로세싱 예제 – P5P
아두이노의 큰형, 프로세싱!!!
오늘 만들어 볼 것은…
프로세싱 실행
원형 공 그리기 ellipse(50, 50, 20, 20); X방향 50 Y방향 50
화면 크기 설정 size(600, 400); ellipse(50, 50, 20, 20); 600 400
바닥판 그리기 size(600, 400); ellipse(50, 50, 20, 20); rect(100, 380, 100, 20); 잠깐!!! 함수(변수1, 변수2, …);
변수 선언 (공의 위치) int ballX = 50; int ballY = 50; size(600, 400); ellipse(ballX, ballY, 20, 20); rect(100, 380, 100, 20); 잠깐!!! ‘=‘ 는 같다는 뜻이 아니다!
기본함수 - setup( ), draw( ) int ballX = 50; int ballY = 50; void setup( ) { size(600, 400); } void draw( ) { ballX++; ellipse(ballX, ballY, 20, 20); rect(100, 380, 100, 20); 잠깐!!! 중괄호 { } 는 하나의 블록으로 묶인다.
배경화면 색 설정 255,0,0 0,255,0 255,255,0 0,255,255 255,0,255 0,0,255 255 int ballX = 50; int ballY = 50; void setup(){ size(600, 400); } void draw(){ background(255); ballX++; ellipse(ballX, ballY, 20, 20); rect(100, 380, 100, 20);
매 순간의 이동방향 설정 int ballX = 50; int ballY = 50; int moveX = 5; int moveY = 5; void setup( ) { size(600, 400); } void draw( ) { background(255); ballX += moveX; ballY += moveY; ellipse(ballX, ballY, 20, 20); rect(100, 380, 100, 20);
벽에서 튕김 … void draw( ) { background(255); ballX += moveX; ballY += moveY; if(moveX < 0 && ballX < 10) moveX = 5; if(moveX > 0 && ballX > 590) moveX = -5; if(moveY < 0 && ballY < 10) moveY = 5; if(moveY > 0 && ballY > 370) moveY = -5; ellipse(ballX, ballY, 20, 20); rect(100, 380, 100, 20); }
마우스 클릭으로 게임 시작 int ballX = 50; int ballY = 50; int moveX = 5; int moveY = 5; int score = 0; void setup( ) { size(600, 400); } void draw( ) { background(255); ballX += moveX; ballY += moveY; if (moveX < 0 && ballX < 10) moveX = 5; if (moveX > 0 && ballX > 590) moveX = -5; if (moveY < 0 && ballY < 10) moveY = 5; if (moveY > 0 && ballY > 370) moveY = -5; ellipse(ballX, ballY, 20, 20); rect(100, 380, 100, 20); } void mouseClicked( ) { ballX = round(random(50, 550)); ballY = 50; moveX = 5; moveY = 5; score = 0;
마우스 위치에 바닥판 그리기 … void draw( ) { background(255); ballX += moveX; ballY += moveY; if (moveX < 0 && ballX < 10) moveX = 5; if (moveX > 0 && ballX > 590) moveX = -5; if (moveY < 0 && ballY < 10) moveY = 5; if (moveY > 0 && ballY > 370) moveY = -5; ellipse(ballX, ballY, 20, 20); rect(mouseX - 50, 380, 100, 20); }
바닥판 반사 후 스코어 기록 if (moveY > 0 && ballY > 370) { void draw( ) { …(중간생략)… if (moveX < 0 && ballX < 10) moveX = 5; if (moveX > 0 && ballX > 590) moveX = -5; if (moveY < 0 && ballY < 10) moveY = 5; if (moveY > 0 && ballY > 370) { if (ballX > mouseX-50 && ballX < mouseX+50) { score++; moveY = -5; } else { moveX = 0; moveY = 0; } ellipse(ballX, ballY, 20, 20); rect(mouseX - 50, 380, 100, 20);
스코어 화면 표시 void draw( ) { …(중간생략)… fill(0); text(score, 20, 20); } ellipse(ballX, ballY, 20, 20); fill(0, 255, 0); rect(mouseX - 50, 380, 100, 20); fill(0); text(score, 20, 20); }
색칠하기 255,0,0 0,255,0 255,255,0 0,255,255 255,0,255 0,0,255 255 void draw( ) { …(중간생략)… fill(255, 0, 0); ellipse(ballX, ballY, 20, 20); fill(0, 255, 0); rect(mouseX - 50, 380, 100, 20); fill(0); text(score, 20, 20); }
더 추가 할 것들… 레벨 업 기능 점수에 따른 난이도 조절 화면 장식 (인트로, 외벽, 점수판, 플레이어, 공, 블록..) 화면 장식 (인트로, 외벽, 점수판, 플레이어, 공, 블록..) 네트워크 기능 (다른 사람과의 점수 비교, 멀티 유저 플레이)