스크래치
서문
최근 프로그래밍 교육에 대한 관심이 늘어나고 있습니다. 더불어 초등학생들도 배울 수 있는 프로그래밍 환경인 스크래치도 많이 이야기되고 있습니다. 스크래치를 가르쳐주는 강의들도 늘어나고 있고, 관련 책들도 조금씩 늘어나고 있습니다.
다만 책이 한 번 쓰이면 내용을 고치기가 어렵기 때문에, 내용이 오래되었거나, 현장에서 활용하면서 아쉬운 점이 있거나, 여러 사람들의 아이디어들이 반영되기가 쉽지 않습니다.
이에 스크래치 교재도 여러 사람들의 아이디어와 의견이 쉽게 반영될 수 있는 열린 편집 형태가 필요하다는 생각이 들었습니다.
지금은 첫번째 버전이라서 내용이 다소 미흡하지만, 참여하는 분들이 늘어나면서 조금씩 충실한 교재로 발전되어가리라 기대합니다.
-
첫번째 저자, 조우리
저작권
본 저작물은 크리에이티브 커먼즈의 "저작자표시-비영리-동일조건변경허락" 조건 하에 배포됩니다.
본 저작물은 비영리적인 목적으로 사용하실 수 있으며, 사용하실 때는 저작자를 명시하여야 합니다. 본 저작물에 내용을 변경하여 배포하실 수 있으나, 수정하신 저작물도 다른 사람들이 크리에이티브 커먼즈의 "저작자표시-비영리-동일조건변경허락" 조건 하에서 배포하거나 변경할 수 있도록 허용하여야 합니다.
참여하는 방법
본 교재 제작에 참여하기 원하시는 분은 아래와 같은 방법으로 참여하실 수 있습니다.
다음과 같은 다양한 분야에 참여하실 수 있습니다.
-
오탈자의 수정
-
이해하기 쉬운 표현으로 윤문
-
화면 캡춰 이미지 재조정
-
내용의 집필 및 수정
위의 내용은 다양한 참여를 권장하기 위한 예시일 뿐이고, 이외의 다양한 방법으로 참여하실 수 있습니다.
참여하실 분은 github의 issue 기능을 사용하여 수정사항을 권고하시거나, 직접 내용을 수정하여 pull request를 하실 수 있습니다.
저작에 참여하시는 분은 본 교재에 대한 본인의 기여분에 대해서도 크리에이티브 커먼즈 "저작자표시-비영리-동일조건변경허락" 조건으로 배포되는 것에 동의하는 것으로 간주합니다.
또한, 본 교재가 온라인상에서만 배포될 뿐 아니라 인쇄된 형태로 배포되어야 할 경우가 생길 것입니다. 이런 경우에 필요한 제반의 권리를 조우리(@woori)에게 부여하는 것에 동의하는 것으로 간주합니다. 기여하신 분의 목록은 기여자 목록에 포함되어 함께 인쇄될 것입니다.
스크래치 살펴보기
스크래치 소개
스크래치는 컴퓨터 프로그래밍에 관한 경험을 쌓게 하기 위한 목적으로 설계된 교육용 프로그래밍 환경 중 하나이며, MIT 미디어랩의 Lifelong Kindergarten Group 에서 운영하는 프로젝트입니다.
스크래치는 특별히 8~16세를 위해 디자인 되었습니다. 일반 언어를 사용하는 코딩과 달리 그래픽 환경에서 블록을 연결하여 프로그래밍, 게임, 시뮬레이션, 멀티미디어 컨텐츠 등을 작성할 수 있습니다. 스크래치를 통해서 아이들은 창의적으로 생각하기, 논리적으로 추론하기, 다른 사람들과 협동하는 능력을 키울 수 있습니다. 또한 내가 만든 스크래치 작품을 인터넷에 공유해서 다른 사람과 함께 볼 수 있고, 나 또한 다른 사람들의 작품을 보며 즐겁게 배우고 익힐 수 있습니다.
스크래치를 만든 미첼 레스닉(Mitchel Resnick) 아저씨가 어떤 생각을 가지고 이 일을 시작했는지 강연을 들어보세요. |
스크래치 웹사이트에 방문해서 전 세계의 친구들이 스크래치로 무엇을 만들었는지 구경해보세요. |
선생님들을 위한 웹사이트도 있어요. http://scratched.gse.harvard.edu/ |
스크래치 익숙해지기
스크래치 처음 실행하기
https://scratch.mit.edu/ 사이트에 접속해서 바로 시작하기
버튼을 클릭합니다.

아래와 같은 화면이 브라우저에 떴나요? 이곳이 여러분이 프로그래밍을 수행할 작업장입니다.

화면의 중앙에 스크립트, 모양, 소리 이렇게 세 개의 탭이 있는 것을 볼 수 있습니다.
- 스크립트 탭
-
여러분이 작성할 프로그램을 스크립트(대본이라는 뜻입니다)라고 부릅니다. 프로그램 작성에 필요한 블럭 조각들이 들어있습니다.
- 모양 탭
-
화면에 나타낼 모양을 작성하기 위한 도구들이 들어있습니다.
- 소리 탭
-
소리 조각들이 들어있습니다.
스크립트 탭에는 여러분이 사용할 블럭 조각들이 동작, 형태, 소리 등으로 종류별로 나뉘어져 있습니다.
블럭 사용하기
가장 처음으로, 고양이를 움직여봅시다.
10만큼 움직이기
블럭을 오른쪽 넓은 회색 영역에 끌어다 놓아보세요.

어때요? 블럭이 이제 오른쪽 회색 영역에 놓여져 있죠? 그 블럭을 더블클릭해봅시다. 고양이가 앞으로 가는 것이 보이나요?
이번에는 다른 블럭을 하나 더 놓아보지요. 10만큼 조금씩 앞으로 가다보면 어떻게 될까요? 고양이가 화면 밖으로 나가게 되죠? 벽에 닿아도 숨지 않도록, 벽에 닿으면 튕기도록 해봅시다.
파란 블럭 중에 벽에 닿으면 튕기기
라는 블럭을 끌어와서 10만큼 움직이기
아래에 놓아보세요.

블럭 살펴보기
이번엔 고양이에게 말을 하게 해봅시다. 파란 블록들을 한 번 살펴 보세요. 소리나 말에 관한 블록이 있나요? 없다면 어디서 찾을 수 있을까요?

블럭들이 어떻게 분류되어 있나 살펴봅시다. 소리 분류를 클릭해보면 아래에 여러 블럭들이 보입니다.

Meow 재생하기
블록을 오른쪽에 끌어다 놓고 클릭해봅시다. 어때요? 소리가 재생되었나요?
이번엔 앞으로 10만큼 움직인 후 meow(야옹소리)를 재생시켜 보겠습니다.

어때요? 10만큼 앞으로 간 후 meow라고 소리를 내죠?
내가 원하는 동작을 시키기 위해서 어떤 블록이 어느 카테고리에 있는지 알아야 합니다.
- 동작
-
무대 위에서 객체의 움직임에 관한 블록입니다.
- 형태
-
객체의 색상이나 형태 크기에 관한 블록입니다.
- 소리
-
소리를 재생하거나 녹음하기, 다양한 악기소리를 연주할 수 있습니다.
- 펜
-
명령어를 통해 쓰거나 그릴 수 있는 블록입니다.
- 데이터
-
변수나 리스트를 설정할 수 있습니다.
- 이벤트
-
키보드 키를 누르거나 깃발을 클릭했을 때, 객체 간의 방송하기를 통해 신호를 알릴 수 있는 블록이 있습니다.
- 제어
-
기다리기, 반복하기(반복문), 만약~일 때(조건문), 복제 되었을 때 등이 있습니다.
- 관찰
-
객체나 물체에 닿았는지, 사용자에게 묻고 기다리기 등 있습니다.
- 연산
-
사칙연산 및 나머지 and, or, 결합하기 등을 할 수 있습니다.
- 추가블록
-
사용자가 블록을 정의합니다.
이렇게 글로 쓰니 다소 어렵죠? 앞으로 수업을 통해 직접 해보면서 그 특징들을 익혀봅시다.
스크래치 준비하기
스크래치 웹 회원 가입하기
스크래치 웹 회원으로 가입하면, 내가 만든 프로젝트를 전 세계의 친구들에게 자랑할 수 있어요. 내가 만든 프로젝트를 자랑하기 부끄러운 경우에는 다른 사람들이 만들어놓은 프로젝트에 댓글을 달거나 칭찬을 해줄 수도 있고요, 어떻게 만들었는지 물어볼 수도 있지요. 또, 리믹스라고 해서 다른 사람들이 이미 만든 프로젝트의 스크립트를 받아와서 무언가 덧붙여서 만들 수도 있어요. 학교에서는 다른 친구들의 숙제는 활용하면 안되지만, 스크래치 세상에서는 얼마든지 다른 사람이 만든 것에 더해서 만들어도 된답니다.
회원 가입을 해볼까요?
웹 브라우저로 스크래치 웹사이트에 접속해서 화면 맨 위에 있는 메뉴 중 스크래치 가입
을 선택합니다.

사용자 이름, 비밀번호를 입력하고 다음 버튼을 클릭합니다.

생년월일, 성별, 국가 정보를 입력하고 다음을 클릭합니다.

이메일 주소를 동일하게 두 번 입력 후 다음 버튼을 클릭합니다.

가입에 성공했다면 다음과 같은 화면을 볼 수 있습니다.

스크래치 설치 버전 설치하기
스크래치를 항상 인터넷이 연결되어 있는 경우에만 하지는 않죠. 인터넷이 연결되어 있지 않은 경우에도 스크래치를 사용하려면 컴퓨터에 설치하는 버전의 스크래치를 설치해야 해요.
웹 브라우저로 스크래치 웹사이트에 접속해서 화면의 맨 아래로 이동하면 보이는 오프라인 에디터 메뉴를 클릭합니다.

2번, 스크래치 오프라인 에디터에서 Windows-Download를 클릭합니다.

다운로드 후 스크래치 프로그램을 설치할 환경을 설정합니다. 계속 버튼을 누릅니다. 만약 설치 위치를 변경하고 싶으면 폴더 그림을 눌러서 원하는 위치를 선택 후 파일을 설치합니다.
웹사이트에서 곧바로 스크래치 사용하기
스크래치를 컴퓨터에 설치하기 곤란한 경우에는 웹사이트에서 곧바로 스크래치를 사용할 수도 있어요. 우리 책에서도 전에 해봤었죠? 회원 가입을 한 후에는 화면이 약간 다르게 보일 수 있는데, 언제나 아래 화면에서처럼 만들기
메뉴에 들어가면 프로젝트를 만들 수 있어요.

따라하면서 배우기
그림판 만들기
무대가 하나의 그림판이 되어 펜으로 그림을 그려보려고 합니다. 어떤 요소가 필요할까요? |
우선 기본 화면을 깨끗이 정리해야겠죠? 고양이 스프라이트를 선택한 후 오른쪽 버튼을 클릭하여 삭제를 선택합니다.

그리고 새로운 스프라이트를 생성합니다.

스프라이트 정보 i를 선택합니다. 스프라이트명을 빨강으로 변경합니다.

모양탭을 선택합니다.

그림판에서 사각형을 선택합니다.

팔레트에서 빨강색을 선택합니다.

사각형 채우기를 선택합니다.

그림판에 사각형을 그립니다.

화면에 빨강 사각형 스프라이트가 생성되었습니다.

빨강 스프라이트에서 마우스 오른쪽 버튼을 클릭하여 복사를 선택합니다.

스프라이트 정보 i
를 선택합니다.

스프라이트 이름을 파랑으로 변경합니다.

모양 탭을 선택합니다.

그림판에서 색칠하기를 선택합니다.

팔레트에서 파랑색을 선택합니다.

그림판 위에 있는 빨간 사각형을 클릭합니다. 사각형이 파란색으로 변했습니다.

파랑 스프라이트에서 마우스 오른쪽 버튼을 클릭하여 복사를 선택합니다.

위와 같은 방법으로 아래의 그림처럼 초록, 검정 스프라이트도 만들어줍시다.

이번에는 그림을 그릴 도구를 만들어봅시다. 새로운 스프라이트를 만들어봅시다.

스프라이트 이름을 점
으로 변경합니다.

그림판에 검은 점을 그립니다.

데이터 카테고리에서 변수 만들기
블록을 선택합니다.

변수 이름을 굵기
라고 입력한 후 확인 버튼을 누릅니다.
변수가 잘 만들어졌나요? 변수가 만들어지면 변수에 해당하는 블록들이 생성됩니다.


점 스프라이트를 선택합니다.

이벤트
카테고리에 있는 클릭했을 때
블록과 제어
카테고리에 있는 무한 반복하기
블록을 사용합니다.


제어
카테고리에 있는 만약 ~라면
블록과 관찰
카테고리에 있는 마우스를 클릭했는가?
블록을 이용해서 조건을 만들어 봅시다.

동작
카테고리에 있는 마우스 포인터 위치로 이동하기
블록을 화면에 끌어다 놓습니다.

펜 굵기를 ~ (으)로 정하기
블록을 이용해 굵기를 설정합니다.
데이터
카테고리 안에 있는 굵기
변수를 펜 굵기를 ~로 정하기
블록 안으로 끌어다 놓습니다.


마우스를 클릭했을 때 펜 내리기
를 해서 그림을 그릴 준비를 합니다. 다른 경우에는 펜 올리기
를 해주세요.

펜 색상을 바꾸기 위해 팔레트를 클릭했는지 알아보는 스크립트는 다음과 같습니다.

마우스 오른쪽 버튼을 클릭한 후 복사
메뉴를 선택합니다.

스프라이트 기능별로 블록들을 복사하여 블록의 내용을 변경합니다.

이벤트
카테고리 안에 있는 스페이스 키를 눌렀을 때
블록을 끌어다 놓습니다. 그리고 펜
카테고리에서 지우기
블록을 끌어다 놓습니다. 이렇게 하면 키보드에서 스페이스바를 눌렀을 때 화면에 그려진 모든 선을 지웁니다.

굵기
변수에서 마우스 오른쪽 버튼을 클릭하여 메뉴를 띄운 후 슬라이더 사용하기
를 선택합니다. 굵기
변수를 나타내는 방식이 바뀌었씁니다.


이제 모두 완성했습니다. 깃발
을 클릭하여 실행해봅시다.

아래 링크에서 완성된 작품을 확인할 수 있습니다. 만들면서 막힌 부분이 있었다면 참고해보세요.
3,6,9! 3,6,9!
친구들과 함께 3,6,9 게임을 해본 적이 있나요? 친구랑 서로 번갈아 가면서 1부터 순서대로 숫자를 말해가다가 3의 배수를 말하는 대신 박수를 치는 게임입니다. |
이 게임을 직접 스크래치로 만들어보려고 합니다. 3의 배수. 어떻게 알 수 있을까요?
본격적으로 들어가기에 앞서 무대 배경을 바꿔보겠습니다.

왼쪽 하단에 이미지 버튼을 클릭합니다.

brick wall1
을 선택합니다.
서로 번갈아 말하는 게임이니 고양이 외에 스프라이트가 하나 더 필요하겠죠?
새로운 스프라이트
→ 스프라이트 저장소
에서 동물을 클릭합니다.

오리를 선택합니다.
고양이와 오리가 서로 마주보도록 오리의 방향을 변경합니다.

모든 스프라이트가 접근할 수 있는 변수를 하나 만들겠습니다. 이름도 변수가 어울릴 것 같네요.

고양이가 먼저 수를 말하도록 합니다.

이벤트
탭에 있는 방송하기
블록을 사용하여 게임을 시작합니다. 방송하기
블록을 끌어다 놓은 후 삼각형을 눌러서 이름을 짓습니다.


아래에 고양이 방송하기
를 연결합니다.

첫 시작은 고양이가 고양이에게 방송하는 것으로 시작합니다.
그럼, 이제 말을 해야겠죠? 말하기에 앞서 고양이가 말하려는 숫자가 3의 배수인지 아닌지를 계산해봅시다.
만약 말하려는 수를 3으로 나눴을 때 3의 배수이면 나머지가 몇 일까요?
-
3 % 3 = 0
-
6 % 3 = 0
-
9 % 3 = 0
-
… …
3의 배수를 3으로 나눌 경우 나머지는 0이 됩니다.
이 연산법을 이용하여 블록을 맞춰 보겠습니다.

3의 배수일 경우 finger snap
소리를 재생하고 그렇지 않을 경우 변수를 말하게 했습니다.
고양이의 차례가 끝났으니 오리에게 차례가 끝났다고 알려줍시다.

오리 역시 3의 배수인지 계산 후 finger snap 소리를 내거나 변수를 말하도록 합니다. 대신 오리가 끝난 후엔 고양이에게 차례를 알려줘야 하겠죠?

3의 배수를 구할 줄 알면 생각보다 쉽습니다.
다음의 웹에서 프로젝트를 확인 할 수 있습니다.
봄, 여름, 가을, 겨울
봄이 왔다는 것을 어떻게 알 수 있을까요? 날씨가 점점 따뜻해지면 우린 봄이 온 걸 알 수 있지요. 또한 꽃이 피고 나무에 파릇한 입이 열리면 우리는 봄이 온 것을 알 수 있습니다. 계절에 따라 변하는 나무. 스크래치로 한 번 만들어 볼까요? |
새로운 스트라이프를 생성합니다.

나무 그림을 그려줍니다.

복사하기를 이용해서 복사를 한 번 해줍니다.

이제 계절별로 4가지의 나무 모양을 만들어 보겠습니다.
첫 번째 나무 모양에 잎을 달아 줍시다.
아래 그림처럼 먼저 잎 모양을 만들 후에 복제하기
버튼을 이용해서 미리 그린 잎을 선택 후 원하는 나뭇가지 위치에 클릭합니다. 어때요? 나뭇잎이 잘 복사가 되었나요?
반복해서 그려줍니다.

잎을 적당히 붙여 주세요. 지금 만든 나무가 봄 입니다.
그럼 이제 여름을 만들어 볼까요?
이미지에 대고 우클릭 하면 아래 그림처럼 복사 메뉴가 나옵니다. 복사를 클릭합니다.

이번엔 나무에 아까보다 더 많이 나뭇잎을 달아 줍니다. 나무 잎을 다 달은 후에는 복사하기 위해서 생성한 나뭇잎은 지우개로 지웁니다.

이번엔 가을 나무를 만들어 보겠습니다. 여름 나무 이미지를 복사합니다. 팔레트와 채우기를 이용해서 나뭇잎의 색상을 변경합니다. 적당히 나무 아래에도 떨어진 가을 낙엽을 넣어 줍시다.

겨울 나무는 아까 나무 모양 만들 후 복사해 놓은 이미지를 사용합니다.
자 이렇게 해서 사계절의 나무 모습이 완성되었습니다.

이제 무대 배경을 그려 봅시다. 먼저 무대를 선택 후 모양 탭을 클릭합니다.

아래 그림처럼 4계절이 드러나도록 배경을 그려 줍니다. 겨울은 눈이 내린 모습으로 하얗게 그려봅시다.

이제 버튼 스프라이트를 만들어 보겠습니다.
새로운 스프라이트 → 저장소 스프라이트를 선택합니다. Button3을 선택합니다.

아래의 그림처럼 버튼을 4개 만들고 모양탭의 그림판에서 버튼 안에 이름을 적어봅시다.
스크래치 그림판에서는 텍스트 입력 시 한글은 지원되지 않습니다.
한글 버튼을 할 경우 미리 그림판에서 만들어 놓은 이미지를 사용합니다.

각 버튼 별로 이벤트 카테고리에 있는 ‘이 스프라이트를 클릭했을 때’ 블록을 이용해서 버튼과 일치하는 방송하기를 설정합니다.


방송하기를 통해 무대의 배경을 변경해보겠습니다.

이번엔 나무의 모양을 변경해보겠습니다. 계절하기에 따른 모양을 선택하면 됩니다.

자, 여기까지 했을 때 이벤트에 따른 배경과 나무 모양이 변경이 잘 되나요?
다음의 링크에서 프로젝트를 확인 할 수 있습니다.
도형그리기
손으로 직접 정삼각형, 정사각형, 정오각형…을 그리려면 몇 가지 도구가 필요합니다. 하지만 스크래치에선 도구로 측정하지 않고도 정N각형을 그릴 수 있습니다. |
스크래치 실행 후 고양이 스프라이트를 지우고 펜 스프라이트를 꺼내봅시다.

초록깃발을 클릭했을 때 펜의 위치 값과 각도를 임의로 설정해줍니다. 작업하다가 펜의 위치가 변경되거나 각도가 다른 곳을 보게 되어도 초록깃발을 클릭하면 항시 이 값에서 출발할 것입니다.

펜에 관한 기본 값 몇 가지를 더불어 설정합니다. 지우기 블록을 추가하여 이전에 그렸던 값이 있을 경우 지워줍니다.

묻고 기다리기 블록을 이용하여 사용자에게 몇 각형을 그리기 원하는지 의견을 묻습니다.
사용자의 입력을 ‘대답’이라는 블록으로 사용할 수 있습니다.
정n각형을 그릴 경우 우리는 일정한 공식에 따라 도형의 외각을 구할 수 있습니다.
-
외각 구하기⇒(180-내각): 180 * (n-2) / n → 180 - 180 * (n-2) / n
-
외각 구하기: 360 / n
우리는 두 번째에 있는 외각 구하는 공식을 이용하여 정n면체를 그려보겠습니다.

그림을 그리는 데 펜 끝이랑 그림이랑 안 맞는 걸 볼 수 있습니다. 이걸 어떻게 수정해야 할까요? 펜 스프라이트 선택 후 모양에 가보시면 오른쪽 상단에 십자 모양의 축 맞추는 부분이 있습니다.

축의 교차점을 연필 끝으로 가져갑니다.

다음 링크에서 완성된 작품을 확인 할 수 있습니다.
생일축하카드 만들기
친구에게 특별한 방법으로 생일축하카드를 만들어 주고 싶은데 어떤 방법이 있을까요? 우리가 배운 스크래치로 움직이는 카드를 보낸다면 어떨까요? |

풍선에 마우스가 닿으면 변화가 일어나도록 해보려고 합니다. 어떤 블록을 사용해야 할까요?
관찰
카테고리에 있는 마우스 포인터에 닿았는가?
블록을 이용해 봅시다.
풍선에 마우스를 오버하면 다음 이벤트로 진행을 위해 방송하기를 합니다.

위 스크립트를 보시면 방송하기 후에는 더 이상 무한 반복을 사용할 필요가 없기 때문에 해당 스크립트를 멈춰줍니다.
이번엔 축하메시지를 방송하였을 때 실제로 축하 메시지를 띄워 보려고 합니다.
새로운 스프라이트를 직접 만듭니다.

처음에는 보이지 않다가 방송하기를 받았을 때 동작하도록 합니다.
색깔 효과를 주어서 약간의 변화를 줍니다.

무대를 선택 후 배경이미지와 배경음악을 추가합니다.



이번엔 친구에게 생일케잌을 보여줄까요? 저장소에서 케잌 스프라이트를 꺼냅니다.
사용자가 케잌을 클릭하면 촛불이 꺼지도록 해봅시다. 어떤 블록을 사용해야할까요?
마우스 포인터가 케잌을 선택하면 동작하도록 해야할 것 입니다. 그래서 마우스포인터에 닿았는가와 마우스를 클릭했는가 이 두 가지 조건이 충족할 때 동작하도록 블록을 완성해봅시다.

친구가 케잌을 클릭할 수 있도록 안내하는 문구를 스프라이트로 넣어보겠습니다.
새로운 스프라이트에서 직접 글씨를 써서 만들어 봅시다.


다음의 웹에서 프로젝트를 확인 할 수 있습니다.
피아노 만들기
스크래치에서는 다양한 악기의 소리를 낼 수 있습니다. 키보드를 눌러서 연주할 수 있다면 더 좋을 것 같은데, 스크래치로 피아노를 한 번 만들어 볼까요? |
우선 고양이를 지우고 피아노 건반을 직접 그려봅시다. 길쭉한 사각형으로 흰 건반, 짧은 사각형으로 검은색 건반을 만들어 줍니다.
눌렸을 때를 구분하기 위해 모양2는 회색으로 채워줍니다.


건반 개수만큼 스프라이트를 복사하여 생성합니다.


‘도’를 눌렀을 때의 작업은 다음과 같습니다.
우선 클릭했을 때 건반 위치값을 설정해 줍니다. 후에 스프라이트를 실수로 옮겼을 때 깃발을 누르면 다시 원래 자리로 돌아가겠죠?

검은 건반을 누르다 보면 뭔가 어색한 점을 발견 할 수 있습니다. 흰 건반의 이미지가 살짝 보이죠? 이럴 땐 어떻게 하는 게 좋을까요?

검은 건반의 경우 위치 값 아래에 맨 앞으로 순서 바꾸기 블록을 추가해 줍니다.

이번엔 음량을 조절하는 기능을 추가해보겠습니다. 먼저 무대를 선택합니다. 음량의 경우 무대에서 설정하고 설정한 음량 정보를 각 스프라이트에 알려서 주면 됩니다.
모든 스프라이트에서 사용할 수 있는 변수를 하나 만듭니다. 모든 스프라이트들이 음량 정보에 대해서 알아야 하기 때문에 모든 스프라이트에서 사용을 선택하여 변수를 만듭니다.
변수를 만들 때, 모든 스프라이트(전역변수)인지 이 스프라이트에서만 사용(지역변수)인지 꼭 필요에 따라 구분하여서 만들어야 합니다. 특정 스프라이트에서만 사용 될 변수를 모든 스프라이트에서 사용하게 만들 경우, 실수로 다른 스프라이트에서 접근하게 되면 값에 변동이 생깁니다. 지금은 프로젝트가 작아서 크게 문제 될 것이 없을 수 있지만, 프로젝트가 커질 경우 이런 실수 하나로 며칠 동안 디버깅하게 될 수 있기 때문입니다. |

슬라이드로 음량을 조절해봅시다.


각 스트라이프에 아래와 같이 음량 설정을 추가해줍니다.

다음의 웹에서 프로젝트를 확인 할 수 있습니다.
달리는 고양이 만들기
이번엔 스크래치를 이용해서 게임을 만들어볼까요? 게임의 요소인 점수도 넣어보고, 주인공 목숨 값과 게임 끝 기능까지 함께 넣어서 말이죠. 이번 수업이 끝나면 배운 것을 응용해서 나만의 멋진 게임을 만들 수도 있겠네요. |
게임을 할 무대를 꾸며 보겠습니다. 배경의 그림을 변경하여 주인공이 걷고 있는 효과를 주려고 합니다. 무대 선택 후 배경 저장소에서 space를 선택합니다.

그림판의 편집 기능을 이용해서 배경에 효과를 주면 됩니다. 우선 그림 선택 후 복사 후 그림판에서 행성의 위치와 아래 모양을 조금씩 바꿔주면 됩니다. (이미지 편집에 걸리는 시간을 단축하려면 선생님을 통해서 이미지를 제공받도록 합니다.)


먼저 고양이의 동작에 대해서 살펴보겠습니다.
시작 좌표점을 줍고 앞으로 걸어 가는 효과를 주기위해 다음 모양으로 바꾸기, 벽에 닿으며 튕기기를 설정합니다. 고양이가 다른 스프라이트(별, 박쥐)에 닿을 경우 맨 앞에 보이도록 순서 바꾸기를 해줍니다.

키 입력 부분입니다. 이 부분은 전에 나비 잡는 고양이를 했을 때와 동일합니다. 그 때 생각해보기를 풀어보셨다면 ‘위쪽 화살표를 눌렀을 때’의 경우 자연스럽게 고양이가 내려오도록 블록을 맞춰보았을 겁니다. 이번 블록은 조금 다르게 구성해보았습니다. 이번에는 속도라는 변수를 하나 두고 그 변수를 이용해서 고양이의 Y좌표를 변경합니다.

이번엔 박쥐 스프라이트를 봅시다.

박쥐는 오른쪽에서 나왔다가 왼쪽으로 없어집니다.

만약 박쥐가 고양이에 닿으면 목숨 값을 하나 줄입니다. 목숨값이 0이라면 게임을 끝내야하니 그 부분도 조건에 넣습니다.
별 스프라이트를 추가합니다.

별을 먹으면 점수가 올라갑니다. 점수를 높이려면 고양이가 별을 여러 개 먹어야겠죠? 도대체 여러 개는 몇 개 일까요? 몇 개나 별 스프라이트를 만들어야 할까요? 100개면 100개를 다 만들어줘야할까요? 만약 그렇다면 게임을 만들기 정말 불편하겠죠? 스크래치에는 복제하기라는 기능이 있습니다. 제어 카테고리에 가시면 복제하기 블록이 있습니다.
‘나 자신 복제하기’를 한 번 사용해봅시다.
먼저 스프라이트를 숨기고 복제된 스프라이트만 보이게 합니다. 별을 무한 복제하는데, 한 번 복제 후 1~3초 사이의 난수 만큼 기다렸다가 다시 복제하도록 합니다.
까만 자루 속에 1~3 의 숫자가 적인 공을 넣습니다. 자루 속을 보지 않고 숫자가 적힌 공을 고릅니다. 어떤 숫자가 나올까요? 정답을 예측할 수 있을까요? 난수란 이처럼 무작위고 고른 숫자를 말합니다. |

이제 슬슬 마무리 할 차례입니다. 게임이 끝난 것을 알려주도록 멋지게 GAME OVER 메시지를 만들어봅시다. 먼저 새 스프라이트 색칠을 통해 GAME OVER 라는 스프라이트를 하나 만들어줍니다.


초록 깃발을 클릭했을 때는 숨겼다가 게임 끝 메시지를 받았을 때 보이도록 합니다. 게임이 끝난 후에는 다른 스프라이트에서 무한반복으로 동작 하는 스크립트들을 멈추기 위해 모두 멈추기를 추가해줍니다.

다음 링크에서 완성된 작품을 확인 할 수 있습니다.
축구시합
혼자서 하는 고양이 게임 해보니 어때요? 몇 번 하다보면 재미없죠? 만약 친구와 둘이서 스크래치로 게임을 한다면 어떨까요? 어떻게 하면 친구랑 둘이서 하는 게임을 만들 수 있을까요? |
먼저, 무대를 축구장처럼 그려줍니다.

어떤 것들을 스프라이트로 정할지 생각해봅니다. 게임 player 들이 있어야 하고요. 축구공도 있겠죠. 서로 득점을 할 수 있는 골대도 있어야겠네요.
Player와 축구공은 기존의 저장소에서 가져옵니다. 골대는 직접 그려줍니다. 골대 양 끝 옆에 파란선도 그려줍니다. (파란선은 나중에 쓸 일이 있습니다.)

이제 player1인 고양이가 움직이도록 해 볼까요?

먼저 깃발을 클릭했을 때의 조건을 봅시다.
변수를 하나 만듭니다. 고양이만 쓸 수 있는 변수이기에 ‘이 스프라이트에서만 사용’ 을 선택 해줍니다.


이번엔 득점했을 때를 봅시다. 득점 여부는 공이 상대편 골대에 닿았는지 여부로 알 수 있습니다. 득점 했을 경우 득점 후 다시 원위치에서 시작하기 때문에 바로 움직일 수 없도록 ‘2초 기다리기’로 여유를 줍니다. 다른 player가 득점 했을 때도 2초 정도 멈추게 합니다. 후에 원위치로 위치를 바꿔줍니다.

player2의 경우도 스크립트는 비슷합니다. 입력키만 다르게 변경하여 줍니다.


공의 경우 공이 앞으로 나가려면 공의 진행방향을 고민해야합니다. player의 반대 방향을 바라보게 합니다. ‘player1쪽 보기’와 ‘180도 돌기를 이용합니다.


‘파란색에 닿았는가?’의 경우 공이 골대의 앞쪽이 아닌 곳에서 들어갈 경우를 방지하기 위해서 넣어줍니다.
득점을 받았을 때의 동작입니다. 득점 후에도 깃발을 눌렀을 때처럼 동작하도록 합니다.
이렇게 중복 되는 동작에 대해서는 추가 블록을 이용해서 묶을 수 있습니다. 지금은 프로젝트가 작아서 보는데 불편함이나 이해하는데 어려움이 없을 수 있지만, 프로젝트가 커 질 경우에 이렇게 중복되는 블록들은 따로 블록을 만들어서 사용하는 것이 훨씬 편리합니다. 조금 더 스크래치가 익숙해지면 배워보겠습니다.


골대의 경우는 간단합니다. player가 득점 했을 경우 방송합니다.



Player1,2 에서 만든 변수의 경우 득점 결과를 보기 편하게 골대에 붙이도록 하겠습니다. 변수값 크게 보기를 이용해서 보기 편하게 만듭니다.

이로써 스크래치에서 둘이서 하는 게임을 만들었습니다.
어려웠나요? 공이 player의 반대방향으로 진행한다는 것만 생각하면 의외로 쉽죠?
다음 링크에서 완성된 작품을 확인 할 수 있습니다.
구구단을 외자
수업 때 배운 구구단을 스크래치에 활용해 볼 수 있을까요? |
다음의 그림처럼 구구단 몇 단을 외워볼지 사용자가 입력하도록 하려고 합니다. 어떤 블록을 사용해야 할까요?

먼저, 스프라이트와 무대를 구성합니다.


사용자에게 대답을 듣기 위해서 우리는 관찰 카테고리에 있는 ‘묻고 기다리기’와 ‘’대답’을 사용합니다. 아래의 구성은 변수 3개 설정을 초기값 설정이라는 블록으로 정의하였습니다. 이는 추가블록 카테고리에서 블록 만들기를 이용하여 만들어줍니다.

이제 구구단 증가값을 다뤄줄 차례입니다. 단수만 알면 그 후로는 1부터 9까지 반복해주면 되니 반복문을 9번 반복해주며 구구단을 외워 봅시다.

다음 링크에서 완성된 작품을 확인 할 수 있습니다.
벽돌깨기
공을 튕겨서 벽돌을 깨는 게임을 만들고 싶은데, 벽돌 마다 스프라이트로 추가하는 것을 비효율적인 방법인 것 같은데 … … 어떻게 하면, 벽돌 하나로 여러 개의 벽돌을 만들 수 있을까요? |
다음과 같은 게임을 만들어 보려고 합니다.

우선 3개의 스프라이트가 필요합니다.

바를 먼저 만들어봅시다.


키보드의 좌우 입력키에 대해 동작을 지정해줍니다.

게임실패와 종료, 시작하기 이벤트를 받았을 때 동작을 지정합니다.


처음 시작 할 때 어떤 각도로 공이 튈지를 정합니다.

스페이스 키를 눌렀을 때 공이 튕겨지게 블록을 짜줍니다.


가장 중요한 벽돌 스프라이트 입니다.

리스트를 만들어보겠습니다.
데이터 카테고리에 리스트 만들기
를 선택합니다. 이 스프라이트에서만 사용
을 선택하여 만듭니다.

변수를 만들어보겠습니다. 반복숫자를 셀 i와 j. 벽돌가로길이, finish만 모든 스프라이트에서 사용할 수 있는 전역변수(global)로 만듭니다.

리스트에 y좌표를 입력합니다. 벽돌을 배치할 간격을 벽돌가로길이에 넣습니다.
반복문을 통해 벽돌을 복제하여 위치시킵니다.

복제되었을 때 위치할 x좌표와 y좌표를 설정합니다. x의 경우 반복개수인 i를 활용하여 계산합니다.
볼에 닿을 경우 복제본을 삭제합니다.

마지막으로 무대를 보겠습니다. 무대에 배경 만듭니다.

Finish변수가 15(종료조건) 이면 finish를 방송합니다.

다음 링크에서 완성된 작품을 확인 할 수 있습니다.