게임 프로젝트 컴퓨팅적 사고와 문제해결
원본 스프라이트와 이름과 상태정보가 같은 임시 스프라이트 생성 복제된 스프라이트는 복제되었을 때의 원본이 가진 속성 값을 가진다. 원본 스프라이트(스크립트) 좌표, 방향, 모양 지역변수 등 복제본 스프라이트(제어) 복제된 스프라이트가 수행할 명령블록 배치 이후의 상태정보나 지역변수는 복제된 스프라이트의 고유한 정보가 됨 복제된 스프라이트를 삭제함 프로젝트를 중지할 때도 복제본이 모두 삭제됨
복제하기
Catch Game 복제하기를 이용한 예제
동작 설계 Apple(original) Apple(copy) 임의의 X좌표 위치로 이동하며 자신의 복사본을 생성 임의의 수를 생성하는 블록을 사용 Apple(copy) 원본이 한번 이동을 할 때마다 복사본 생성 계속 하강하다가 Bowl과 닿거나 Y좌표 < -170 이면 삭제
추가 요소 사과 Score 변수를 생성하고 0으로 초기화 Life 변수를 생성하고 5로 초기화 Bowl과 충돌하면 땅에 떨어지면 Life를 -1만큼 감소 Life가 0이 되면 게임 종료 – ‘모두 멈추기’ 블록
생명력 표시 Heart 스프라이트를 추가 Life = 5 -> 사과가 땅에 떨어져서 Life가 감소할 때마다 복제된 Heart 스프라이트도 하나씩 감소
블럭깨기 프로젝트
설계 스프라이트 초기화 후 스페이스 키를 누르면 움직이기 시작 Paddle에 닿으면 방향 전환 블록의 개수가 0이 되거나, 화면 바닥으로 떨어지면 Game Over로 동작을 멈춘다 벽에 닿으면 튕긴다 초기화 후 스페이스 키를 누르면 움직이기 시작 마우스 포인터의 x좌표를 따라 이동 벽 너머로는 이동 불가 초기화 block-x, block-y 변수를 바꿔가며 5열 3행로 위치에 맞춰서 생성(복제) 블록의 개수 <- 15 복제본 1~3 사이의 weight Ball에 닿으면 weight가 하나씩 감소 weight가 0이 되면 삭제 색 변화
스페이스 키를 누르면 시작 Paddle의 x-좌표를 마우스의 x-좌표와 일치시키기 -210 < x-좌표 < 200 벽너머로 이동 불가
3 x 5 블록 제일 왼쪽 상단 블록부터 순서대로 생성 1열(상단) 2열(중단) 3열(하단) -190 -97 -4 89 182 y-좌표 140 -190 -97 -4 89 182 x-좌표 +93 +93 +93 +93 -25 -190 -97 -4 89 182 115 -25 -190 -97 -4 89 182 90
3 x 5 번 반복 블록 스프라이트를 복제 ‘블록#’ 변수를 15로 할당 15개 블록이 존재하는 것을 의미
Block 1 weight : 2 weight : 3 Block 2 weight : 2 Block 3 weight : 1 블록# : 5 전역변수 Block 1 weight : 2 weight : 3 Block 2 weight : 2 Block 3 weight : 1 Block 4 Block 5 weight : 2 충돌 블록# : 5 전역변수 Block 1 weight : 2 weight : 3 Block 2 weight : 2 Block 3 weight : 1 Block 4 Block 5 weight : 1 충돌 블록# : 4 전역변수 Block 1 weight : 2 weight : 3 Block 2 Block 3 weight : 2 weight : 1 Block 5
‘weight’ 변수 1과 3 사이의 난수 그 숫자에 따라 색을 정함 Ball 스프라이트에 닿을 때 touch 방송 weight가 하나씩 줄어감 weight가 0이 되면 복제본 삭제 블록# 변수값 1 감소
블록의 개수가 0이 되거나, 화면 바닥으로 떨어지면 Game Over로 동작을 멈춘다 초기화 후 스페이스 키를 누르면 움직이기 시작 처음에 45도 방향으로 날아가기 시작 Paddle에 닿았을 때 방향 전환 블록에 닿았을 때 방향 전화 블록의 개수가 0이 되거나, 화면 바닥으로 떨어지면 Game Over로 동작을 멈춘다 화면에 남아있는 블록의 개수를 세는 변수가 필요 벽에 닿으면 튕긴다 방향 > 0 방향 < 0 방향 < 0 방향 > 0
기사와 용 프로젝트
스프라이트(Sprite) 서로 상호작용을 하는 스프라이트 상호작용 없는 배경으로서의 스프라이트
설계 기사 용 이동 방식 : 기사가 직접 이동하는 것이 아닌 배경이 반대 방향으로 이동 스페이스 키 : 점프 상호작용 용 – 효과음을 내고 1초간 색을 변화 도넛 – 효과음 용 이동 방식 : 화면의 오른쪽 영역에서 등장해서 기사를 향해 이동 기사 - 일정 거리 이상 가까워지면 불을 뿜는 모양으로 변화 기사 – 접촉하면 사라졌다가 처음 나온 위치에서 재등장
설계 도넛 나무와 구름 게임 중 불규칙하게 등장 이동 – 수평으로 일정한 속도로 이동하면서 벽에 닿으면 방향을 바꾼다 상호작용 일정 시간이 지나는 동안 아무런 상호 작용이 없으면 자동으로 소멸 이동 – 수평으로 일정한 속도로 이동하면서 벽에 닿으면 방향을 바꾼다 상호작용 기사 – 접촉하면 사라진다 나무와 구름 배경과 같은 존재 이동 – 화면의 오른쪽 끝에서 일정하게 등장해서 왼쪽 끝까지 각각의 속도로 이동 특이사항 – 기사, 용, 도넛과 같은 스프라이트보다 항상 뒤에 보이도록 설정
위치 초기화(x:100, y:-47) 동작 X좌표를 -15씩 바꾼다 종료될 때까지 반복 위치 초기화(x:116, y:103) 3만큼 움직임 종료될 때까지 반복 벽(x-좌표 : -240)까지 가면 화면의 오른쪽 끝(x-좌표 : +240)으로 이동
크기 및 위치 초기화 크기 : 70% x좌표 -110, y좌표 -59 제자리에서 0.2초마다 모양을 바꾸기 점프 스페이스 키를 눌렀을 때 y좌표를 10씩 18번 반복해서 바꾸기 y좌표를 -10씩 18번 반복해서 바꾸기
위치 초기화 x좌표 120, y좌표 -60 모양 dragon1-a로 바꾸기 용은 계속 사라졌다가 다시 나타날 것이므로 시작할 때 항상 ‘보이기’를 하도록 주의 이동 x좌표를 -7만큼 바꾸기 벽(x-좌표 : -240)까지 가면 화면의 오른쪽 끝(x-좌표 : +240)으로 이동
충돌 체크 용에 닿았을 때 기사와의 거리가 100보다 작을 때 모양을 dragon1-b로 변경 효과음을 재생 색을 1초간 변경 후 되돌리기 “Dragon Touched” 방송 도넛에 닿았을 때 효과음 재생 기사와의 거리가 100보다 작을 때 모양을 dragon1-b로 변경 거리가 다시 멀어지면 dragon1-a로 변경 기사에 닿았을 때(Dragon Touched 방송을 받았을 때) 사라진다(숨기기) 일정 시간 기다린 후 x좌표 200 지점에서 재생성(보이기)
원본 화면에 등장하지 않음 복제 난수 발생 5~8초 기다리고 복제 사본 사본의 생성과 동시에 화면에 보이기 X좌표 방향으로 -15 반복해서 이동 사본 삭제 조건 왼쪽 화면 끝에 도달했을 때(X좌표 -240)
원본 화면에 등장하지 않음 복제 난수 발생 4~8초 기다리고 복제 사본 사본의 생성과 동시에 화면에 보이기 X좌표 -200~200 사이 랜덤하게 생성 일정 횟수만큼 반복하면서 좌우로 이동 사본 삭제 조건 일정 시간이 지났을 때 Knight와 닿았을 때 방송으로 Knight에게 효과음을 내도록 전달