스크래치와 함께하는 프로그래밍 첫걸음_13장 ‘스크래치 보드게임’

2016/01/11
공유 레이어 열기/닫기
주소가 복사되었습니다.

Newsroom_banner_content

스크래치와 함께하는 프로그래밍 첫걸음. Chapter 13 스크래치 보드게임

'스크래치와 함께하는 프로그래밍 첫걸음' 열세 번째 시간입니다. 지난 시간엔 깜토와 친구들이 기차역까지 가는 과정을 프로그래밍으로 구현해봤는데요. 오늘은 주사위를 굴려 작동하는, 보다 정교한 보드게임을 만들어보려 합니다.

*프로그래밍을 배우기 위해선 먼저 스크래치 프로그램을 다운로드해야 합니다. 스크래치 프로그램 다운로드 방법은 프롤로그 편에 설명돼 있으니 아직 설치하지 않으신 분은 참조해주세요!

 

주사위 보드게임, 프로그래밍으로 만들어볼까?

지난 편에서 스크래치와 친구들은 프로그래밍 덕분에 시간에 맞춰 기차역에 도착할 수 있었는데요. 즉흥 여행인 만큼 가고 싶은 목적지도 모두 달라 어디로 떠나야 할지 쉬이 결정이 나질 않네요.

그런데 최근 사교성과 함께 프로그래밍 실력까지 부쩍 늘어난 깜토가 한 가지 제안을 내놨습니다. 프로그래밍으로 보드게임을 만들어 여행지를 정하잔 의견이었는데요. 깜토와 친구들은 과연 무사히 목적지를 정할 수 있을까요?

드디어 여행을 떠나는 날! 다같이 시간에 맞춰 기차역에 도착했어! 두근두근. 기차다! 잠깐! 기차를 타고 가다가... 어디서 내리면 좋을까? 역마다 내려서 여행하자~ 나는 스크래치가 춤추기 프로그램 보여준 사막에 먼저 가보고 싶어. 난 제일 먼 곳에 얼른 가고 싶어. 다들 어디를 먼저 여행할 지 생각이 다르잖아. 그런데 깜토가 나서는 게 아니겠어? 여행지를 정하는 게임 프로그램을 만들까? 주사위를 굴려서 나온 수 만큼 말이 움직이는 게임 알지? 말을 움직인 곳에 도시 이름이나 나라의 이름이 있는 보드게임을 프로그래밍 하는거야! 보드 게임 프로그램에서 나오는 난수만큼 내 모습의 스프라이트가 이동하는 거야. 그 스프라이트가 도착한 곳을 우리의 여행 장소로 정하는 거지~ 어때? 대단해 깜토. 깜토가 스스로 프로젝트 아이디어까지 내다니 놀라운걸!

 

– 스프라이트와 무대 영역 불러오기

왼쪽 사진은 보드게임 무대의 모습, 오른쪽 사진은 스프라이트 영역의 모습입니다▲왼쪽 사진은 보드게임 무대의 모습, 오른쪽 사진은 스프라이트 영역의 모습입니다

우선 보드게임판이 있어야겠죠? 여기로 접속해서 다운로드한 파일의 압축을 풀면 ‘ch 13’ 폴더가 나오는데요. 스크래치 프로그램을 실행한 다음, 폴더 안에 있는 ‘BoardBameTemplate.sb’ 파일을 불러와주세요.

파일을 열면 보드게임 무대를 확인할 수 있습니다. 스프라이트 영역에 보이는 사각형들은 주사위를 던져 도착할 특정 장소를 나타내는 스프라이트입니다.

 

– ‘리스트’ 기능 활용하기

깜토의 스크립트를 확인하면 ‘여행길’이란 변수 리스트에 해변, 산 등 여러 장소가 추가된 걸 볼 수 있는데요.

깜토의 스크립트를 확인하면 ‘여행길’이란 변수 리스트에 해변, 산 등 여러 장소가 추가된 걸 볼 수 있는데요. 이 장소는 모두 아까 스프라이트 영역에 추가됐던 사각형 스프라이트들의 이름입니다. 하트곰과 스크래치의 스크립트에도 같은 내용이 작성돼 있고요.

장소 스프라이트가 많기 때문에 ‘여행길’ 리스트란 하나의 변수에 저장해 사용하면 편리합니다. 단, 리스트나 변수에 스프라이트의 이름을 저장할 땐 문자 뒤에 빈칸이 있는지 여부를 꼭 확인해야 하는데요. 같은 단어라도 뒤에 공백이 있는 단어와 없는 단어는 서로 다른 정보로 인식되기 때문입니다.

 

– 캐릭터 스크립트 만들기 1

깜토가 리스트에 추가된 순서대로 보드판 위를 움직이도록 해볼게요. 우선 리스트 첫 번째 아이템의 값을 ‘위치’ 변수에 저장하는 블록부터 만드세요. 그런 다음, ‘위치’ 변수에 저장된 장소로 이동하는 블록을 만들어줍니다. 다음은 이동한 장소에 맞는 배경으로 바뀌도록 방송하는 블록을 넣으면 됩니다.

깜토가 리스트에 추가된 순서대로 보드판 위를 움직이도록 해볼게요. 우선 리스트 첫 번째 아이템의 값을 ‘위치’ 변수에 저장하는 블록부터 만드세요. 그런 다음, ‘위치’ 변수에 저장된 장소로 이동하는 블록을 만들어줍니다. 다음은 이동한 장소에 맞는 배경으로 바뀌도록 방송하는 블록을 넣으면 됩니다.

하트곰과 스크래치가 보드판에서 움직일 스크립트도 깜토 스크립트와 똑같은 방식으로 만들어주세요.

이때 각각 ‘하트곰 이동하기’ 방송과 ‘스크래치 이동하기’ 방송을 받는 블록도 잊지 말고 변경해주세요.

하트곰과 스크래치가 보드판에서 움직일 스크립트도 깜토 스크립트와 똑같은 방식으로 만들어주세요. 이때 각각 ‘하트곰 이동하기’ 방송과 ‘스크래치 이동하기’ 방송을 받는 블록도 잊지 말고 변경해주세요.

 

– 주사위 스크립트 만들기 1

주사위를 던지면 예측할 수 없는 숫자 하나가 나오는데요. 스크래치 프로그램에선 연산 팔레트의 ‘난수 블록’을 통해 예측할 수 없는 숫자를 나오게 할 수 있습니다.

주사위를 던지면 예측할 수 없는 숫자 하나가 나오는데요. 스크래치 프로그램에선 연산 팔레트의 ‘난수 블록’을 통해 예측할 수 없는 숫자를 나오게 할 수 있습니다.

‘주사위’ 변수에 난수 블록에서 나오는 수(1부터 6까지)를 저장하도록 블록을 만들어주세요.

‘주사위’ 변수에 난수 블록에서 나오는 수(1부터 6까지)를 저장하도록 블록을 만들어주세요. 이제 주사위를 클릭하면 1부터 6까지의 수가 무작위로 출력될 겁니다. 그리고 저장된 수와 주사위 스프라이트가 나타내는 수가 일치하도록 스크립트를 만들어주세요.

실제로 주사위가 굴러가는 모습을 표현하기 위해 ‘시계방향으로 45도 돌기’ 블록을 추가했습니다

실제로 주사위가 굴러가는 모습을 표현하기 위해 ‘시계방향으로 45도 돌기’ 블록을 추가했습니다. 주사위가 좀 더 오래 굴러가도록 표현하려면 어떻게 해야 할까요? 주사위 변수에 6이나 12, 18 등 6의 배수를 더하면 됩니다. 주사위를 오래 굴리고 싶다면 높은 수를, 조금 굴리고 싶다면 낮은 수를 입력해주세요.

 

– 캐릭터 스크립트 만들기 2

이제 주사위가 나온 만큼 깜토가 이동하도록 스크립트를 만들어볼게요. 그전에 주사위 던질 순서를 정할 필요가 있는데요

이제 주사위가 나온 만큼 깜토가 이동하도록 스크립트를 만들어볼게요. 그전에 주사위 던질 순서를 정할 필요가 있는데요. 위 이미지는 스프라이트를 클릭했을 때 만약 순서가 정해진 상태라면 ‘이미 순서를 정했다’란 메시지를 출력하도록, 순서가 정해지지 않았다면 자신의 순서를 출력하도록 각각 블록을 구성한 모습입니다.

하트곰과 스크래치 스크립트도 똑같이 만들면 됩니다. 대신 하트곰 스크립트엔 ‘하트곰 클릭되었을 때’와 ‘하트곰 이동하기’를 넣고 스크래치 스크립트엔 ‘스크래치 클릭되었을 때’와 ‘스크래치 이동하기’를 넣어줘야겠죠?

하트곰과 스크래치 스크립트도 똑같이 만들면 됩니다. 대신 하트곰 스크립트엔 ‘하트곰 클릭되었을 때’와 ‘하트곰 이동하기’를 넣고 스크래치 스크립트엔 ‘스크래치 클릭되었을 때’와 ‘스크래치 이동하기’를 넣어줘야겠죠?

하트곰과 스크래치 스크립트도 똑같이 만들면 됩니다. 대신 하트곰 스크립트엔 ‘하트곰 클릭되었을 때’와 ‘하트곰 이동하기’를 넣고 스크래치 스크립트엔 ‘스크래치 클릭되었을 때’와 ‘스크래치 이동하기’를 넣어줘야겠죠?

 

– 주사위 스크립트 만들기 2

이제 주사위 스프라이트가 주사위 순서 리스트를 확인하면서, 리스트가 담고 있는 내용을 방송하는 블록을 추가할게요.

이제 주사위 스프라이트가 주사위 순서 리스트를 확인하면서, 리스트가 담고 있는 내용을 방송하는 블록을 추가할게요.

주사위가 클릭됐을 때 가장 먼저 작동해야 할 기능은 만약 주사위 순서 리스트의 크기가 3(무대에 등장하는 캐릭터 수)보다 작다면(즉, 세 친구 모두 클릭해서 순서를 정하지 않았다면) 주사위가 구르지 않도록 하는 겁니다. 다음으로 주사위 스프라이트가 45도 단위로 돌아가며 임의의 난수를 출력하는 블록을 넣으면 됩니다.

리스트에 담긴 아이템(데이터)을 꺼내는 건 컨베이어 벨트 위 자동으로 움직이는 상자에서 물건을 꺼내보는 것과 비교할 수 있습니다.

리스트에 담긴 아이템(데이터)을 꺼내는 건 컨베이어 벨트 위 자동으로 움직이는 상자에서 물건을 꺼내보는 것과 비교할 수 있습니다. 첫 번째로 도착한 상자 속 물건을 꺼내 확인하고, 그 다음엔 두 번째로 도착한 상자 속 물건을 꺼내 확인하고… 이런 과정을 반복하면 상자에 어떤 물건이 있는지 순서대로 확인할 수 있겠죠?

깜토와 친구들의 즐거운 여행은 한동안 쭉 이어질 예정인데요. 삼성전자 뉴스룸 독자들도 겨울을 맞아 여행을 떠나보는 건 어떠신가요? 프로그래밍 세상으로 떠날 수 있는 특별한 경품과 함께 깜짝 이벤트를 준비했습니다. 다양한 개성을 지닌 프로그래밍 세상 속 친구 중 여러분의 성격과 꼭 맞는 캐릭터를 하나 콕 집어주세요!

스크래치 친구들과 함께하는 프로그래밍 여행! 함께 떠나고 싶은 캐릭터는? 스크래치 친구들이 새해를 맞아 여행을 떠납니다. 혼자 떠나는 여행도 재밌지만 마음 맞는 친구와 함께 떠나는 여행은 잊지 못할 추억을 선사해주죠. 삼성전자 뉴스룸 독자 여러분은 누구와 여행을 떠나고 싶으신가요? 아래 세 개의 스크래치 캐릭터 중 여러분의 성격과 딱 맞는 여행 친구를 고른 후 그 이유를 댓글로 적어주세요. 여러분이 프로그래밍 세계로 여행을 떠날 수 있도록 푸짐한 상품을 드립니다. 01. 깜토. 부끄럼 잘 타는 소심 토끼입니다. 깜짝깜짝 놀라고 부끄러움이 많아 친구들 앞에서 말도 잘 못한채 웅크리며 지내죠. 하지만 친구를 챙기는 마음만큼은 1등이랍니다. 먼저 다가간다면 수다를 떨며 즐겁게 시간을 보낼 수 있는 친구가 될지도 몰라요. 02. 하트곰. 커다란 덩치와 무뚝뚝한 인상을 가진 곰입니다. 장난을 쳐도 반응을 기대하기 힘든 성격인데요. 여행을 떠나는 날까지 늦잠을 자는 무신경함은 덤입니다. 하지만 마으은 따뜻하죠. 한 번 마음을 터놓고 사귀면 영원히 변치 않을 친구입니다. 03. 스크래치. 남을 잘 도와주는 호기심 많은 고양이입니다. 컴퓨터 프로그래밍의 천재인 데다 각종 재주가 많죠. 항상 친구를 위해 발 벗고 나서서 고민을 해결해주는 마당발 성격입니다. 야간의 잘난 척과 넓은 오지랖은 옥의티이지만 악의는 전혀 없습니다.

이벤트 참여하기

본 개인정보(이름, 전화번호)는 개인보호정책에 의해 안전하게 보호되며,
이벤트 경품 발송 및 연락 이외의 >용도로는 절대 사용되지 않습니다.
*표시는 필수입력사항 입니다.

기획·연재

기획·연재 > 테마 기획

삼성전자 뉴스룸의 직접 제작한 기사와 이미지는 누구나 자유롭게 사용하실 수 있습니다.
그러나 삼성전자 뉴스룸이 제공받은 일부 기사와 이미지는 사용에 제한이 있습니다.
<삼성전자 뉴스룸 콘텐츠 이용에 대한 안내 바로가기>

TOP