2교시. 바위피하기 게임 만들기

1. `새 프로젝트`를 클릭합니다. 고양이 모습을 한 스프라이트와 함께 프로젝트가 생깁니다. 고양이를 바닥 쪽으로 이동시켜 주세요.

2. 고양이 스프라이트를 클릭해 선택하고 오른쪽 화면의 스크립트 자리에 아래 그림과 같이 블록을 쌓아 시작합니다.

[클릭했을 때] 블록은 초기화면에 대한 값을 설정해주는 것으로, 게임을 하다가 다시 처음으로 돌아가고 싶을 경우 활용합니다. 즉 고양이의 위치를 원래대로 옮겨주죠. [오른쪽 화살표 키를 눌렀을 때]는 키보드의 오른쪽 화살표 키를 눌렀을 때 고양이가 해야 하는 행동을 정의합니다. 오른쪽으로 조금씩 이동하기 위해 [X좌표를 10만큼 바꾸기]를 으세요. [90도 방향보기]의 스크립트 블록은 고양이가 움직이는 방향을 쳐다 보도록 하는 블록입니다. 위 두 블록을 만들고 스크립트를 실행하면 고양이가 자신이 움직이는 방향을 쳐다 보며 조금씩 움직이는 것을 볼 수 있습니다.[벽에 닿으면 튕기기]의 블록은 고양이가 화면 밖으로 나가지 않도록 해주는 기능을 합니다. [다음 모양으로 바꾸기]의 블록은 고양이가 움직일 때 한 모습으로 움직이면 어색하기에, 미리 저장된 다른 모습의 그림으로 계속 바꿔 고양이가 실제로 걷는 것처럼 보이도록 합니다. 이 경우 스프라이트에 여러 개의 그림이 등록돼 있어야 합니다. 그럼 지금까지 만든 코딩이 제대로 작동하는지 확인해 볼까요? 초록색 깃발 버튼을 눌러 실행하며, 키보드의 `화살표 `,키`에 따라서 고양이가 움직입니다.

3.사과 스프라이트를 선택하고, 아래 그림과 같이 스크립트를 작성해 보겠습니다.

(`저장소에서 스프라이트 선택` 이모티콘을 클릭하고, 사과[Apple)] 불러오세요)

여기에는 `하늘에서 떨어지는 행동`, `바닥에 닿았을 때 행동`, `고양이와 닿았을 때 행동`, `사과 변수를 증가하는 행동`, 총 4개의 행동이 들어갑니다. 각각 분리해 살펴볼게요.

(A)부분은 사과가 하늘에서 떨어지는 행동을 위한 블록입니다. 사과는 스프라이트를 하나를 가지고 재활용하는 방법으로 여러 개가 떨어지는 것처럼 보이도록 했습니다. [x: -230부터 230사이의 난수, y: 200으로 이동하기]의 블록은 사과가 하늘에서 떨어질 때 시작 위치를 설정합니다. [-230부터 230사이의 난수]블록 안의 블록인 이 블록의 경우 사과가 특정 위치가 아닌 여러 곳에서 떨어질 수 있게 합니다. 여기서 난수는 수학에서 쓰이는 것과 같이 정해지지 않은 무작위의 수이죠. 예를 들어 1이 나올 수도, 210이 나올 수도 있습니다. 이렇게 사과가 자신의 위치를 정하면 아래로 떨어지는 행동을 위하여 그림과 같은 블록을 만듭니다. 같은 행동을 계속 반복하기 위하여 `반복하기 블록`과 y좌표를 변화시켜, 사과가 하늘에서 떨어지는 효과를 연출합니다. 여기서의 난수는 사과를 다른 속도로 떨어지게 해 게임을 더욱 재미있게 만듭니다.

다음은 사과가 바닥에 닿았을 때 어떻게 움직이게 할지에 대해서 설명하겠습니다. 앞서 설명했듯이 사과 스프라이트는 계속 재활용하는 방법으로 코딩했습니다. 바닥에 닿았다고 사라지게 한다면 다른 사과 스프라이트를 계속 만들어야 해서 복잡해지기 때문에, 간단하게 하기 위하여 사과를 다시 하늘 위로 올리겠습니다.

(C)부분은 사과가 바닥에 닿았을 때 사과를 다시 위로 올리는 블록 입니다. 사과 스프라이트의 y좌표가 바닥의 위치의 좌표와 비교하여 바닥보다 낮은 위치에 있다고 판단되면, 사과를 하늘로 올리도록 했습니다. 여기서 [duck 재생하기]블록은 사과가 바닥에 닿았을 때 소리를 재생하여, 게임적인 재미를 높이죠.

이제 (B)부분인 `고양이와 사과가 닿았을 때 행동`과, `사과 변수의 증가 행동`에 대해 설명하겠습니다. 색상을 활용하여 다른 스프라이트와 충돌을 확인 할 수 있어요. [ □색이 □색에 닿았는가]의 관찰 블록이 바로 그것이죠. 사과(붉은색)와 고양이(주황색)의 색을 사용해 충돌을 표현했어요. 다음으로 비교하는 `만약~이라는 블록`을 이용해, 고양이와 사과가 닿았다면 사과 변수를 1만큼 증가하고, 다시 사과는 하늘로 올려 보내는 내용의 스크립트를 만들 수 있어요. 사과(APPLE)의 변수는 스크립트 데이터 카테고리에서 `변수 만들기`로 만듭니다. [끝 방송하기]의 블록은 스프라이트 간의 소통을 위해, 현재 자신의 상황을 다른 스프라이트에게 알리는 역할을 합니다. 이렇게 충돌 횟수가 4번 넘으면 사과 스프라이트에서 `끝`이라는 방송을 합니다..

4.이제 바위 스프라이트에 대한 행동을 코딩하겠습니다. 아래 스크립트를 작성하세요.

(`저장소에서 스프라이트 선택` 이모티콘을 클릭하고, 바위[Rocks]를 불러오세요)

여기서도 사과 스크립트와 마찬가지로 3가지의 행동을 정의하였습니다. 바위 스크립트는 사과 스크립트를 활용해 만들면 됩니다.

5.무대 스프라이트를 코딩하겠습니다. 이 프로그램에서는 특별한 무대를 설정하지 않았지만 무대는 존재해요. 무대 스프라이트는 배경이 되는 부분이며, 전체 스프라이트들이 만들어지고 행동하는 부분입니다. 여기에는 프로그램 시작 시 설정해야 하는 기본 값들을 초기화 시켜주는 일과, 프로그램 종료 시 하는 행동들을 정의하는 경우가 많습니다.

그림은 시작했을 때 사과(Apple)에 대한 변수 값을 초기화 해주고 `끝`이라는 방송을 받았을 때 프로그램을 정지하는 스크립트입니다.

드디어 모든 스크립트의 완성입니다.

오른쪽 그림 같이 프로젝트를 실행했을 때의 모습을 볼 수 있어요. 바위와 사과가 하늘에서 떨어지면 고양이의 위치를 조정해 사과를 획득할 수 있죠.

지금까지 `바위 피하기 게임`의 코딩 방법을 설명하였습니다. 정답에 다다르는 방법은 무수히 많이 존재합니다. 다양한 블록을 익혀서 자신이 원하는 프로그램에 적용해볼 수 있도록, 여러분만의 방법을 고민해 보길 바랍니다.

선생님이 근무하고 있는 `ETRI`는 어떤 기관인가요?

▶ETRI(한국전자통신연구원)는 정보·통신, 전자·방송과 관련된 ICT기술을 개발하기 위해 정부가 만든 기관이에요. 대표적으로 TDX(전화교환기), CDMA(휴대폰기술), 지니톡(자동통역기술) 등을 개발했고 인공지능과 빅데이터 등을 연구하고 있어요. 그 곳에서 저는 SW콘텐츠연구소 지식이러닝연구그룹에서 일하고 있지요. 동작인식, 증강현실 등의 기초연구는 물론 교육 콘텐츠와 시스템을 개발하고 있답니다. 어린이를 위한 코딩도서 `코딩어드벤처 시리즈`도 우리 연구실에서 펴냈지요.

<저작권자ⓒ대전일보사. 무단전재-재배포 금지>

김훈탁
저작권자 © 대전일보 무단전재 및 재배포 금지