Scratch 치트시트 — 간결한 참고서
Scratch 3 블록형 프로그래밍 치트시트: 변수, 리스트, 복제본, 브로드캐스트와 9가지 블록 분류를 다루며, 초보자가 게임, 애니메이션, 이야기 제작에 활용할 수 있는 내용을 망라합니다.
Scratch Scratch 3.0 (online editor)
Scratch 3 (블록 기반) · 이벤트 기반 · 시각화 · 단일 스레드 협업 · 동적 (약형 변수)
추천 학습 경로
먼저 첫 프로그램을 조립하세요: 초록색 깃발로 시작 + 말하기 블록 → 변수와 리스트, 흐름 제어(조건 / 반복) 익히기 → 탐지 블록으로 키보드와 마우스를 읽고, 브로드캐스트로 스프라이트끼리 대화하기 → 사용자 정의 블록으로 코드를 정리하고 복제본으로 다중 스프라이트 만들기 → 마지막으로 FAQ 챕터에서 흔한 실수를 피하고, 타이머로 시간을 재며 클라우드 변수에 기록을 남기는 법을 익히세요.
1.Hello World 와 시작점
초록 깃발에서 시작하는 첫 번째 프로그램: 스프라이트가 말하고, 모양과 배경을 바꾸며, 아홉 가지 블록 카테고리를 알아봅니다.
최소 프로그램
초록 깃발을 눌러 스프라이트가 말하게 하는 것은 모든 Scratch 프로젝트의 출발점입니다. 최소 프로그램은 이벤트와 형태 블록 두 가지 범주만 있으면 됩니다.
초록 깃발로 시작하기
초록 깃발 블록은 프로젝트 전체의 시작 스위치입니다. 무대 위의 초록 깃발을 클릭하면 여기에서 시작하는 모든 스크립트가 동시에 실행되고, 빨간색 정지 버튼을 누르면 모두 멈춥니다.
스프라이트가 말하기
말하기와 생각하기 블록은 스프라이트가 말풍선 안에 글자를 표시하게 하며, 가장 직관적인 출력 방법입니다. 초를 지정하면 그만큼 머무른 뒤 사라지고, 지정하지 않으면 계속 표시됩니다.
모양 바꾸기
각 스프라이트는 여러 모양을 가질 수 있으며, 모양을 바꾸면 걷기나 눈 깜빡이기 같은 애니메이션을 만들 수 있습니다. 다음 모양 블록은 순서대로 순환합니다.
배경 바꾸기
무대 배경은 장면과 같으며, 이야기에 따라 바꿀 수 있습니다. "배경이 ~로 바뀌었을 때" 블록과 함께 사용하면 배경마다 다른 스크립트를 실행할 수 있습니다.
아홉 가지 블록 카테고리
블록은 기능에 따라 아홉 가지로 나뉘며, 색상이 모두 다릅니다: 동작 파랑, 형태 보라, 소리 분홍, 이벤트 노랑, 제어 주황, 감지 청록, 연산 초록, 변수 주황, 내 블록.
스크립트는 위에서 아래로
같은 스크립트는 위에서 아래로 블록 단위로 실행되며, 앞 블록이 끝나야 다음 블록이 실행됩니다. 순서가 동작의 선후를 결정합니다.
저장과 공유
로그인하면 프로젝트가 클라우드에 자동으로 저장됩니다. "파일" 메뉴에서 컴퓨터로 다운로드할 수 있고, 오른쪽 위 "공유"를 누르면 웹사이트에 게시되어 누구나 온라인으로 즐길 수 있습니다.
2.변수와 상수
변수 만들기, 값 설정과 변경, 표시 및 숨기기, 그리고 클라우드 변수와 로컬 변수를 다룹니다.
변수 만들기
"변수" 카테고리에서 "변수 만들기"를 클릭하고 이름(예: 점수)을 입력하세요. 변수는 상자와 같아서 숫자, 문자열, 불 값을 저장할 수 있습니다.
설정과 변경
「정하기」는 변수를 특정 값으로 설정하고, 「바꾸기」는 현재 값에 더하거나 뺍니다. 점수와 생명력은 모두 「바꾸기」 블록으로 갱신합니다.
표시와 숨기기
변수는 기본적으로 무대 왼쪽 위에 표시되며 위치를 드래그할 수 있습니다. 보기 싫은 변수는 숨기기 블록으로 가려 화면을 깔끔하게 유지하세요.
리스트 변수
리스트는 많은 데이터를 담을 수 있는 변수로, 일렬로 늘어선 상자와 같습니다. 요소를 추가, 삭제하고 특정 위치의 값을 읽을 수 있습니다.
상수와 고정값
블록에 직접 입력한 숫자나 문자열이 바로 상수이며, 실행 중에 변하지 않습니다. 값이 바뀌어야 하는 데이터에만 변수를 사용하세요.
클라우드 변수
클라우드 변수는 데이터를 서버에 저장하며, 해당 프로젝트를 연 모든 사용자가 같은 데이터를 공유합니다. 순위표에 적합하지만 숫자만 지원합니다.
로컬 변수
기본적으로 변수는 프로젝트 전체에서 공유되지만, 변수를 만들 때 "이 스프라이트만 사용"을 선택하면 그 스프라이트만의 변수가 됩니다. 복제본은 각각 독립된 사본을 갖습니다.
슬라이더 변수
무대 위의 변수 표시기를 마우스 오른쪽 버튼으로 클릭하면 슬라이더로 설정할 수 있으며, 마우스로 드래그해 실시간으로 값을 바꿀 수 있어 볼륨이나 속도 같은 조절 가능한 파라미터에 적합합니다.
3.데이터 형식
Scratch의 데이터는 숫자, 문자열, 불 값 세 가지 형식으로 나뉘며, 변수는 자동으로 형식을 추론합니다.
숫자
숫자는 블록의 흰색 동그란 구멍에 직접 입력하며, 양수, 음수, 소수 모두 가능합니다. 사칙연산 블록은 숫자를 반환합니다.
문자열
문자열은 흰색 동그란 구멍이나 타원 구멍에 들어갑니다. 말하기, 생각하기, 리스트의 내용은 모두 문자열이 될 수 있습니다.
불 값
비교와 논리 블록은 참(true) 또는 거짓(false)을 반환하며, 육각형 구멍에만 들어가서 판단 조건으로 사용됩니다.
리스트 요소
리스트 요소는 숫자일 수도 문자열일 수도 있으며, 읽을 때 번호로 n번째 항목을 가져옵니다. 요소 형식이 고정되어 있지 않아 섞어 저장할 수 있습니다.
자동 형식 추론
Scratch는 타입 선언을 강제하지 않아서 변수는 저장한 값 그대로가 되며, 언제든 다른 타입으로 바꿔 저장할 수 있습니다. 연산할 때 숫자와 문자는 자동으로 변환됩니다.
입력 형식
묻고 기다리기 블록은 사용자가 입력하게 하고, 답변 블록이 받는 값은 문자열입니다. 숫자로 사용하려면 연산 블록을 사용해 변환할 수 있습니다.
출력 형식
말하기, 생각하기 블록은 데이터를 보이는 글자로 바꿉니다. 연산 결과, 리스트 요소를 출력 블록에 직접 넣을 수 있습니다.
숫자와 문자열 변환
round는 반올림하여 정수로 만들고, mod는 나머지를 구합니다. 숫자가 문자열 연결에 참여하면 자동으로 문자열로 변환됩니다.
4.변수와 데이터 저장
변수와 리스트로 데이터를 저장하고, 복제본, 방송, 클라우드 변수를 통해 스프라이트 사이에 데이터를 전달합니다.
변수 저장
변수는 데이터의 "집"입니다. 먼저 값을 설정한 다음 사용합니다. 스크립트끼리 같은 변수를 읽고 써서 데이터를 공유하지만, 읽는 시점을 주의해야 합니다.
리스트에 여러 값 저장
리스트는 한 번에 여러 데이터를 저장하며, 배열과 같습니다. 번호로 읽고 쓰며, 한 판의 모든 점수, 적 좌표 등을 기록하는 데 적합합니다.
복제본이 데이터 보유
복제본은 스프라이트의 모든 스크립트와 변수를 복사합니다. 각 복제본의 "이 스프라이트만 사용" 변수는 독립적이며, 번호로 서로를 구분할 수 있습니다.
개인 변수
"이 스프라이트만 사용"을 선택한 변수는 각 복제본에 하나씩 있어, 하나를 바꿔도 다른 복제본에 영향을 주지 않으며, 복제본을 구분하는 핵심입니다.
클라우드 변수
클라우드 변수는 숫자를 서버에 동기화하며, 모든 플레이어가 같은 데이터를 공유합니다. 순위표, 온라인 대전에 적합하지만 값은 숫자만 가능합니다.
방송으로 데이터 전달
방송 자체는 "메시지 이름"만 전달하므로, 데이터를 전달하려면 값을 전역 변수에 쓴 다음 방송하고, 수신 측은 그 변수를 읽습니다.
전역 변수와 로컬 변수
기본적으로 변수는 전역적으로 보입니다. 어떤 스프라이트의 스크립트든 읽고 쓸 수 있습니다. "이 스프라이트만 사용"을 선택하면 그 변수는 해당 스프라이트 또는 특정 복제본에만 속합니다.
데이터 영속성
변수는 프로젝트 실행 중에만 존재하며, 페이지를 새로 고치거나 프로젝트를 닫으면 비워집니다. 오래 보관하려면 클라우드 변수를 쓰거나 데이터를 정리해 내보내세요.
5.흐름 제어
조건 판단과 반복으로 스크립트의 흐름을 제어합니다. 만약, 반복, ~까지 반복, 기다리기, 멈추기를 다룹니다.
만약 판단
"만약 ~라면"은 조건을 만족할 때만 안쪽 블록을 실행합니다. 조건은 육각형 구멍이며, 비교나 논리 블록을 넣습니다.
만약-아니면
"만약 ~라면 ~아니면"은 둘 중 하나를 고릅니다. 조건이 성립하면 앞쪽을, 아니면 뒤쪽을 실행합니다. 승패나 스위치 상태 같은 판단에 적합합니다.
N번 반복
"N번 반복"은 안쪽 블록을 횟수만큼 반복하며, 칸씩 이동, 같은 그림 반복 그리기, 효과 여러 번 재생에 자주 쓰입니다.
무한 반복
"무한 반복"은 영원히 멈추지 않으며, 멈추기 블록이나 조건으로 종료합니다. 스프라이트 순찰, 배경 스크롤 같은 지속적 동작을 그 안에 넣습니다.
~까지 반복
"~까지 반복"은 먼저 실행하고 나서 판단하며, 조건이 성립하면 멈춥니다. 사용자가 키를 누를 때까지 기다리기, 점수가 목표에 이를 때까지 기다리기 등에 적합합니다.
기다리기
"1초 기다리기"는 현재 스크립트를 잠시 멈추고, "~까지 기다리기"는 조건이 성립할 때까지 멈춥니다. 주의: 기다리기는 현재 스크립트만 멈추며, 다른 스크립트는 평소처럼 실행됩니다.
스크립트 멈추기
"모두 멈추기"는 모든 스크립트를 끝내고, "이 스크립트 멈추기"는 현재 스크립트만 멈추며, "이 스프라이트의 다른 스크립트 멈추기"는 이 스크립트만 남깁니다.
조합 논리
AND, OR, NOT은 여러 조건을 하나의 조건으로 결합한다. AND는 모두 참이어야 하고, OR은 최소 하나가 참이어야 하며, NOT은 반전한다.
6.사용자 정의 블록 (함수)
사용자 정의 블록은 반복되는 코드를 재사용 가능한 블록으로 묶어, 매개변수를 받거나 값을 반환할 수 있어 함수와 같다.
블록 만들기
「사용자 정의 블록」 분류에서 「새 블록 만들기」를 눌러 이름을 정하고 매개변수를 추가하면, 스크립트 영역에 define 블록이 나타난다. 여기에 로직을 작성한다.
매개변수 사용
만들 때 숫자 또는 텍스트 입력을 추가하고, 호출할 때 서로 다른 값을 채워 넣는다. 매개변수는 지역 변수로 블록 내부에서만 유효하다.
값 반환
사용자 정의 블록은 기본적으로 반환값이 없다. 결과를 「반환」하려면 변수에 결과를 저장한 뒤 호출 후 읽도록 한다.
사용자 정의 블록 호출
정의한 뒤 필요한 곳에 호출 블록을 올려 놓으면 실행된다. 한 번 호출하면 블록 내부 스크립트가 한 번 실행된다.
재귀
사용자 정의 블록은 자기 자신을 호출할 수 있다 (재귀). Scratch에는 스택 깊이 제한이 있으므로 너무 깊은 재귀는 피하고 반복문으로 바꾸는 편이 좋다.
화면 새로 고침 안 함
사용자 정의 블록을 편집할 때 「실행 중 화면 새로 고침 안 함」을 체크하면 블록이 한 번에 즉시 실행되어, 대규모 리스트 연산과 빠른 계산에 적합하다.
매개변수의 지역성
사용자 정의 블록의 매개변수는 블록 내부에서만 유효하지만, 블록 내부에서 새로 만든 변수는 기본적으로 전역에서 보이므로 외부 같은 이름 변수와 서로 덮어쓰지 않도록 주의한다.
재사용과 분리
일부 로직을 사용자 정의 블록으로 추출하면 여러 이벤트에서 반복해 호출할 수 있어, 코드가 깔끔해지고 디버깅도 쉬워진다.
7.문자열
연결, 문자 추출, 길이, 포함 등 문자열 연산을 지원해 간단한 텍스트 처리가 가능하다.
텍스트 연결
「(문자열) (문자열) 결합」은 두 문자열을 앞뒤로 이어 붙여 새로운 문자열 하나로 만들고, 안내 문구나 좌표 만들기에 자주 쓰인다.
문자 추출
「N번째 글자」는 문자열에서 지정한 위치의 문자를 가져온다. 한국어도 한 글자씩 계산하며 공백도 한 문자로 센다.
문자열 길이
「(문자열)의 길이」는 문자 개수를 반환하며 영어, 공백, 한국어 모두 각각 한 개씩 센다. 빈 문자열 판별, 입력 길이 제한에 사용된다.
포함 여부 확인
「(문자열)에 (문자열) 포함 여부」는 한 문자열에 다른 문자열이 들어 있는지 확인해 불리언 값을 반환한다. 키워드 검출에 활용할 수 있다.
위치 찾기
「N번째 글자」와 「(문자열)의 길이」를 함께 사용하면 손으로 찾기를 구현할 수 있다. 한 자리씩 비교해 위치를 반환한다.
리스트로 분리
문자열을 한 글자씩 리스트에 저장해 글자 단위로 처리하기 쉽게 한다. 「반복 실행」과 함께 순회한다.
빈 문자열 판별
「길이 = 0」이면 빈 문자열이다. 입력 칸을 비워 두면 answer는 빈 문자열이므로 먼저 판별한 뒤 사용해 오류를 피한다.
긴 텍스트 이어 붙이기
Scratch의 텍스트 블록은 한 줄 입력만 받으므로, 긴 텍스트는 여러 「결합」 블록으로 나눠 이어 붙인다. 쉼표와 공백은 그대로 유지된다.
8.리스트와 자료 구조
리스트는 Scratch의 핵심 자료 구조로, 추가·삭제·수정·조회, 순회, 2차원 모사를 지원한다.
리스트 만들기
「변수」 분류에서 「리스트 만들기」를 누르면 변수처럼 스크립트 패널에 나타난다. 무대의 리스트는 표시하거나 숨길 수 있다.
추가와 삭제
추가는 새 원소를 꼬리에 넣고, 삭제는 지정한 번호 또는 전체를 비운다. 삭제하면 번호가 자동으로 앞당겨진다.
원소 읽기
「N번째 원소」는 번호로 값을 가져오며 번호는 1부터 시작한다. 범위를 벗어난 번호는 오류 없이 빈 값을 반환한다.
원소 바꾸기
「N번째 원소를 (값)으로 바꾸기」는 지정한 위치의 값을 바꾸며 길이는 변하지 않는다. 특정 칸의 아이템을 갱신할 때 적합하다.
원소 삽입
「N번째 위치에 (값) 삽입하기」는 새 원소를 지정한 위치에 넣고, 뒤따르는 원소는 자동으로 뒤로 밀린다.
원소 찾기
「리스트에 (값) 포함 여부」는 특정 원소가 존재하는지 확인해 불리언 값을 반환한다. 먼저 확인하고 사용해 빈 값을 읽지 않도록 한다.
리스트 순회
「~일 때까지 반복하기」에 번호 변수를 더해 리스트를 한 항목씩 처리하는 것이 반복 순회를 흉내 내는 일반적인 작성법입니다.
2차원 데이터 모사
리스트는 1차원이므로 「번호 = 행 × 열 수 + 열」로 2차원 표를 흉내 내 지도나 체스판을 만들 수 있다.
9.프로젝트와 자원 관리
스프라이트 수, 리스트 크기, 클론본 한도를 관리해 프로젝트 성능을 최적화하고 끊김을 피한다.
클론본 한도
Scratch 프로젝트당 동시에 존재할 수 있는 클론본은 최대 300개다. 한도를 넘으면 가장 오래된 클론본이 자동으로 삭제된다.
리스트 크기 제어
리스트가 무한히 커지면 프로젝트가 느려진다. 다 쓴 데이터는 즉시 지우거나 최대 개수를 제한한다.
스프라이트 수
스프라이트(객체)가 많을수록 매 프레임 계산할 일이 늘어난다. 같은 종류의 대상은 여러 스프라이트를 복제하기보다 클론을 우선 사용한다.
신호 폭주
매 프레임 신호를 보내는 등 짧은 시간에 많은 신호를 보내면 수신 스크립트가 계속 다시 시작해 프로젝트가 느려진다. 신호는 조건이 바뀔 때만 보낸다.
변수 캐시
반복 계산한 결과는 변수에 저장해 매번 복잡한 연산을 하지 않도록 한다. 여러 번 쓰는 값은 미리 계산해 저장해 둔다.
스프라이트 목록 관리
무대 오른쪽 아래의 스프라이트 목록이 모든 객체를 표시한다. 끌어당겨 순서를 바꾸고, 우클릭으로 복사·내보내기·삭제할 수 있다.
성능 최적화
매 프레임 다시 그리기를 줄이고, 대량 리스트 연산을 피하며, 클론본과 입자 수를 제한하면 프로젝트가 더 매끄럽게 돌아간다.
의상과 소리 자원
모든 의상과 소리는 자원이므로 많을수록 프로젝트 파일이 커지고 로딩이 느려진다. 쓸모 없는 자원은 지우고, 가져오기 전에 이미지를 압축한다.
10.스프라이트 곧 객체
모든 스프라이트는 객체이며, 자기만의 변수와 스크립트를 갖고 클론본이 곧 다중 인스턴스다.
스프라이트 곧 객체
스프라이트는 의상·변수·스크립트를 묶어 그 자체로 작은 객체다. 무대는 전역 컨테이너에 해당한다.
클론본 곧 인스턴스
클론본은 스프라이트의 복제 인스턴스로, 의상과 전역 스크립트는 공유하지만 자기만의 위치·크기·개인 변수를 가진다.
신호 곧 메서드 호출
신호는 다른 「객체」에 메시지를 보내는 것과 같고, 수신 블록이 이를 처리한다. 객체 지향의 메시지 호출과 비슷하다.
개인 속성
「이 스프라이트에만 사용」 변수가 곧 객체의 개인 속성이며, 클론본은 각각 독립적이어서 서로 간섭하지 않는다.
클론 재사용
스프라이트를 복제하면 같은 「템플릿」을 얻고, 스크립트나 변수만 바꾸면 동작이 다른 인스턴스를 파생할 수 있어 상속과 비슷하다.
상태와 동작
객체의 상태는 변수에 저장되고, 동작은 스크립트로 표현됩니다. 상태 변수를 판단해 어떤 동작 집합을 실행할지 결정합니다.
이벤트 기반 모델
스크래치는 이벤트 기반입니다. 초록 깃발, 키 입력, 클릭, 메시지 모두 해당 스크립트를 실행시킵니다. 메인 함수가 없으며, 모든 것이 이벤트에서 시작됩니다.
메시지 전달
스프라이트끼리는 서로의 변수에 직접 접근하지 않고, 방송 메시지와 공유 변수 읽기로 협력해 결합도를 낮춥니다.
11.디버깅과 오류 처리
스크래치는 예외 메커니즘이 없으므로, 변수 모니터링, 말하기 블록, 경계 검사로 문제를 발견합니다.
예외 메커니즘 없음
스크래치는 예외를 던지지 않으며, 프로그램은 잘못된 논리대로 조용히 실행될 뿐입니다. 따라서 데이터를 미리 확인하고 적극적으로 오류를 방지하는 것이 중요합니다.
변수 모니터링
무대의 변수 표시기를 우클릭하면 일반 읽기, 큰 글씨 읽기, 슬라이더, 숨기기 등으로 전환할 수 있어 실시간으로 값을 관찰하기 편리합니다.
말하기 블록으로 디버깅
의심스러운 위치에 「(변수) 라고 말하기」를 넣어 중간 값을 출력해 논리를 점검합니다. 점검 후에는 반드시 삭제하세요.
경계 검사
리스트 요소를 읽기 전에 먼저 인덱스가 범위 안인지 확인해 빈 값을 읽지 않도록 합니다. 범위는 1부터 길이까지입니다.
빈 값 검사
answer가 비어 있거나 리스트가 비어 있을 때는 먼저 확인한 뒤 사용해, 빈 값이 연산에 들어가 이상한 결과가 나오지 않도록 합니다.
리스트 범위 초과
리스트 인덱스는 1부터 시작하며, 요소를 삭제하면 인덱스가 자동으로 당겨집니다. 「(리스트) 길이」를 상한으로 사용하면 범위를 넘지 않습니다.
단계별 디버깅
큰 스크립트를 작은 조각으로 나눠 한 부분씩 테스트하거나, 기다리기 블록으로 속도를 늦춰 각 단계에서 무슨 일이 일어나는지 관찰합니다.
자주 하는 오류 목록
오류는 보통 변수가 초기화되지 않았거나, 조건이 반대로 쓰였거나, 인덱스가 범위를 넘거나, 방송을 아무도 받지 않을 때 발생합니다. 목록대로 하나씩 점검하세요.
12.입력과 출력
감지 블록으로 키보드, 마우스, 질의응답을 읽고, 말하기·모양·배경으로 출력하며, 클라우드 변수로 데이터를 저장합니다.
키보드 입력
「스페이스 키를 눌렀는가?」는 키가 눌렸는지 감지하며, 반복문과 함께 쓰면 연속 이동을, 단일 판단과 함께 쓰면 점프를 구현할 수 있습니다.
마우스 입력
마우스 위치와 누름 상태를 감지해 스프라이트가 마우스를 따라가거나 클릭에 반응하도록 합니다.
질의응답 입력
「(~라고 묻고 기다리기)」는 입력 창을 띄우고, 사용자의 답을 「(답)」 블록에 저장합니다. 답은 항상 문자열입니다.
접촉 감지
스프라이트가 마우스, 다른 스프라이트, 색상에 닿았는지 감지합니다. 충돌 검사나 아이템 잡기에 사용됩니다.
감지 값 출력
x 좌표, y 좌표, 방향, 소리 크기, 타이머 등은 모두 읽을 수 있는 감지 값이며, 바로 연산에 넣을 수 있습니다.
방송 출력
방송은 다른 스프라이트와 동작을 동기화하며, 스프라이트 간 주요 출력 통로입니다. 수신 쪽에서 응답을 처리합니다.
클라우드 변수 저장
클라우드 변수는 숫자를 서버에 저장하며 모든 플레이어가 공유합니다. 최고 점수나 온라인 통계에 적합합니다.
화면으로 출력
말하기, 생각하기는 글자를, 모양 전환은 이미지를, 소리 재생은 오디오를 출력합니다. 이들을 조합해 피드백을 만듭니다.
13.자주 하는 실수
초보자가 가장 자주 빠지는 여덟 가지 함정입니다. BAD는 잘못된 예시, GOOD은 올바른 방법입니다.
무한 반복에서 멈춤
forever 반복 안에 기다리기를 넣으면 조건이 영원히 충족되지 않아 스크립트가 멈춥니다. 반복 안에는 조건을 바꿀 수 있는 블록이 있어야 합니다.
방송 타이밍
방송은 비동기입니다. 보낸 뒤 바로 계속 실행되며 수신 스크립트는 동시에 시작됩니다. 순서가 필요할 때는 「방송하고 기다리기」를 사용하세요.
복제본 변수 혼동
전역 변수는 복제본끼리 공유되어 하나를 바꾸면 모두 바뀝니다. 복제본을 구분하려면 「이 스프라이트에만 사용」 전용 변수를 사용하세요.
기다리기 조건이 충족되지 않음
wait until의 조건이 다른 스크립트에서 설정될 때, 그 스크립트가 실행되지 않을 수 있습니다. 그 조건을 바꿀 수 있는 스크립트가 반드시 있어야 합니다.
빈 값이 연산에 포함됨
answer나 리스트 요소가 비어 있을 때 비교·연산에 들어가면 거짓이나 이상한 결과가 나옵니다. 먼저 길이를 확인한 뒤 사용하세요.
리스트 인덱스 범위 초과
리스트 인덱스는 1부터 시작하며 최댓값은 길이입니다. 0이나 길이를 넘는 인덱스로는 내용을 읽을 수 없으며 오류가 나기 쉽습니다.
모양 이름 불일치
모양을 전환할 때 이름은 모양 패널의 이름과 완전히 일치해야 합니다. 공백이 하나 더 많거나 글자가 하나 적으면 전환이 적용되지 않습니다.
재귀가 너무 깊음
스크래치는 재귀 호출에 스택 깊이 제한이 있어 너무 깊으면 조용히 멈추거나 오류가 납니다. 깊은 재귀 대신 반복문을 사용하세요.
14.다중 스크립트와 동시 실행
여러 이벤트 스크립트가 병렬로 실행되며, 방송과 기다리기로 실행 순서를 조율합니다.
병렬 스크립트
같은 스프라이트에 여러 개의 독립적인 스크립트를 둘 수 있으며, 각자의 트리거 이벤트에서 병렬로 실행되어 서로 기다리지 않습니다.
이벤트가 곧 스레드
각 이벤트(초록 깃발, 키 입력, 클릭, 메시지 수신)는 독립적인 스크립트를 시작하며, 이는 하나의 스레드에 해당합니다.
공유 변수
모든 스크립트가 전역 변수를 공유합니다. 여러 스크립트가 동시에 같은 변수를 바꾸면 결과가 서로 덮어쓸 수 있습니다.
경쟁 상태
두 스크립트가 동시에 같은 변수에 대해 「읽기-수정-쓰기」를 하면 업데이트가 한 번 손실될 수 있습니다. 핵심 로직은 가능한 한 같은 스크립트 안에 두세요.
방송 동기 순서
「방송하고 기다리기」는 모든 수신 스크립트가 끝날 때까지 기다린 뒤 계속하므로, 여러 단계 애니메이션의 순서를 정하는 데 쓸 수 있습니다.
스레드 정지
정지 블록은 지정한 스크립트를 멈춥니다. 모두, 이 스크립트, 이 스프라이트의 다른 스크립트 등. 주로 초기화에 사용됩니다.
여러 스프라이트 조율
여러 스프라이트가 동시에 움직일 때, 공유 변수와 기다리기를 써서 같은 걸음으로 걷게 하거나 순서대로 행동하게 합니다.
단일 스레드 협력
스크립트는 병렬로 실행되지만, 각 스크립트 내에서는 여전히 순서대로 블록 단위로 실행되며 같은 순간에는 블록 하나만 실행됩니다. 긴 반복은 같은 스프라이트의 다른 스크립트를 멈추게 합니다.
15.네트워크와 확장
클라우드 변수는 프로젝트를 네트워크로 연결해 데이터를 공유하고, 확장 블록은 번역, 읽어주기 등 온라인 기능을 제공합니다.
클라우드 변수 네트워크
클라우드 변수는 숫자를 실시간으로 서버에 동기화하여 여러 사용자가 같은 프로젝트를 실행할 때 데이터를 공유하므로, 순위표나 간단한 대전에 적합합니다.
번역 확장
「번역」 확장은 온라인 번역을 호출해 텍스트를 목표 언어로 번역하고 문자열을 반환합니다.
텍스트 음성 변환
「읽어주기」 확장은 텍스트를 읽어 주며, 언어와 음색을 전환할 수 있고, 음성 서비스를 호출하려면 인터넷에 연결되어 있어야 합니다.
비디오 감지
「비디오 감지」 확장은 카메라로 동작을 포착해 플레이어가 손을 흔들어 스프라이트를 조종하도록 합니다. 처음 사용 시 카메라 권한을 허용해야 합니다.
웹사이트에 공유
우측 상단의 '공유'를 클릭해 프로젝트를 Scratch 공식 사이트에 게시하면 누구나 온라인으로 실행하고 좋아요를 누르거나 댓글을 남길 수 있습니다.
리믹스
웹사이트에서 '리믹스'를 클릭해 다른 사람의 프로젝트를 복제하면 자신의 버전으로 수정할 수 있습니다. 리믹스에는 원작자의 크레딧이 유지됩니다.
클라우드 변수 제한
클라우드 변수는 사용에 제한이 있습니다. 프로젝트당 개수가 한정되어 있고, 값은 숫자만 저장 가능하며 너무 길 수 없으며, 잦은 업데이트는 서버에 의해 제한될 수 있습니다.
네트워크 보안과 개인정보
온라인 프로젝트는 누구나 볼 수 있도록 공개됩니다. 실명, 주소, 전화번호 등 개인정보를 작품에 포함하지 마세요.
16.시간과 타이밍
타이머, 기다리기, 그리고 일수 블록을 사용해 카운트다운, 스톱워치, 시간 제한 레벨을 만듭니다.
타이머
'타이머'는 프로젝트가 실행되기 시작한 순간부터 초 단위로 시간을 측정하며, 소수점 이하까지 정확하게 표시됩니다. 스톱워치와 카운트다운의 핵심입니다.
타이머 초기화
'타이머 초기화'는 타이머를 0으로 되돌려 새로운 시간 측정을 시작할 때 사용합니다.
일수 타이머
'2000년 이후의 일수'는 2000-01-01부터 경과한 일수를 반환하며, 날짜를 넘기는 측정이나 마지막 열람 시각 기록에 사용할 수 있습니다.
초 단위 대기
'N초 기다리기'는 현재 스크립트를 N초 동안 일시 정지하며, 리듬, 지연, 애니메이션 프레임 속도 조절에 사용됩니다.
카운트다운
타이머와 빼기를 사용해 카운트다운을 만들고, 0에 도달하면 종료 이벤트를 발생시킵니다.
스톱워치
타이머 값의 차이를 사용해 한 동작에 걸린 시간을 측정하며, 반응 속도 테스트 게임에 적합합니다.
시간 제한 레벨
정해진 시간 안에 임무를 완수해야 하며, 시간이 초과되면 실패합니다. 카운트다운과 승리 조건을 결합하세요.
시간 기반 애니메이션
타이머를 사용해 애니메이션을 프레임 속도가 아닌 실제 시간에 연동시키면, 컴퓨터마다 동일한 속도를 보장할 수 있습니다.
17.스크립트 생명주기
스크립트는 Scratch의 최소 실행 단위입니다. 시작, 실행, 정지를 이해하면 프로젝트 전체 흐름을 이해할 수 있습니다.
스크립트는 절차
이벤트 블록으로 시작해 끝까지 이어지는 한 스크립트는 하나의 작은 절차입니다. 여러 스크립트가 모여 완전한 프로그램을 구성합니다.
초록색 깃발로 시작
초록색 깃발은 표준 시작 진입점입니다. 클릭하면 '초록색 깃발을 클릭했을 때' 스크립트가 모두 동시에 시작되며, 이는 주 프로그램의 진입점 역할을 합니다.
이벤트 처리기
이벤트 블록은 스크립트의 '머리'이며, 해당 이벤트가 발생했을 때만 실행됩니다. 트리거 조건이 없으면 스크립트는 스스로 시작되지 않습니다.
원자적 실행 절차
사용자 정의 블록에서 '화면 새로 고침 없이 실행'을 선택하면 블록 전체가 한 번에 실행되며 도중에 화면이 다시 그려지지 않아, 빠른 일괄 계산에 적합합니다.
병렬 생명주기
각 스크립트는 독립적으로 시작되고 정지됩니다. 멈추기 블록을 사용하면 '모두 멈추기', '이 스크립트 멈추기', '이 스프라이트의 다른 스크립트 멈추기'를 정확히 제어할 수 있습니다.
멈추기의 적용 범위
'이 스크립트 멈추기'는 현재 스크립트에만 영향을 미치고, '이 스프라이트의 다른 스크립트 멈추기'는 같은 스프라이트의 나머지 스크립트를 멈추게 하며, '모두 멈추기'는 모든 것을 종료합니다.
상태 머신 절차
변수로 현재 상태를 기록해 스크립트가 상태 사이를 전환하도록 하면, 메뉴, 게임, 종료 같은 장면 흐름을 구현할 수 있습니다.
프로젝트 생명주기
프로젝트는 리소스 로드, 초록색 깃발 클릭으로 시작, 멈추기 버튼으로 종료, 저장 및 공유에 이르기까지 완전한 생명주기를 구성합니다.
18.텍스트 패턴 매칭
Scratch에는 정규 표현식이 없으므로, 포함 여부, 문자 판단, 리스트 분할을 사용해 간단한 매칭을 수행합니다.
정규 표현식 없음
Scratch에는 정규 표현식 블록이 없습니다. 복잡한 텍스트 매칭은 연산 블록으로 직접 흉내 내거나 확장에 맡겨야 합니다.
포함 매칭
'포함 여부'는 가장 간단한 부분 문자열 매칭으로, 텍스트 안에 특정 단어가 나타나는지 판단합니다.
시작 문자 판단
첫 번째 문자를 가져와 특정 글자로 시작하는지 판단해 접두사를 검사합니다.
끝 문자 판단
마지막 문자를 가져와 끝을 판단해 접미사를 검사합니다. 마지막 위치의 번호는 곧 문자열의 길이입니다.
문자 종류
한 문자가 숫자인지 알파벳인지를 판단하려면, 먼저 숫자 표를 만든 뒤 '포함 여부'로 조회해 보세요.
패턴 찾기
반복문을 사용해 텍스트를 한 글자씩 훑으며 조건에 맞는 조각을 찾습니다. 연속된 숫자를 추출하는 데 활용할 수 있습니다.
분할 파싱
구분자를 기준으로 텍스트를 리스트로 나눈 뒤 한 항목씩 처리해 간단한 파싱을 구현합니다.
와일드카드 흉내
'포함 여부'와 여러 조건을 조합해 와일드카드를 흉내 냅니다. 예를 들어 텍스트가 여러 키워드 중 하나와 일치하는지 판단할 수 있습니다.
19.저장, 게시와 디버깅
프로젝트 저장, 내보내기, 공유와 디버깅 요령으로 작품을 더 매끄럽고 재미있게 만드세요.
프로젝트 저장
로그인 상태에서는 프로젝트가 자동으로 클라우드에 저장됩니다. '파일' 메뉴에서 수동으로 저장하거나 컴퓨터에 내려받아 백업할 수 있습니다.
.sb3 파일 형식
프로젝트 파일의 확장자는 .sb3이며, 내부에 project.json과 모양, 소리 등의 자원을 담은 압축 파일이라 오프라인에서도 열 수 있습니다.
공유와 게시
우측 상단의 '공유'를 클릭해 작품을 게시하고, 제목, 설명, 태그를 설정해 더 많은 사람이 찾을 수 있도록 하세요.
리믹스로 재창작
웹사이트에서 다른 사람의 프로젝트를 리믹스해 학습의 출발점으로 삼고, 스크립트를 수정하거나 레벨을 더해 자신만의 버전을 게시하세요.
디버깅 도구
변수 모니터, 말하기 블록, 기다리기 늘리기 같은 요령으로 문제를 찾고, 스크립트를 한 단락씩 검증하세요.
백업과 버전
.sb3 파일을 컴퓨터에 내려받아 백업하고, 이름을 바꿔 여러 버전을 저장해 두면 잘못 고쳐도 이전 버전으로 되돌릴 수 있습니다.
게시 전 점검
게시 전에는 초록색 깃발, 키 입력, 클릭, 브로드캐스트 등 모든 진입 경로를 테스트하고, 무한 루프나 범위 오류, 화면 끊김이 없는지 확인하세요.
지속적 학습
공식 튜토리얼, Scratch Wiki, 커뮤니티 프로젝트를 통해 다양한 기법을 익혀 작품을 계속 개선해 나가세요.
이 치트시트에 대해
Scratch는 매사추세츠 공과대학교 미디어 랩이 개발한 무료 시각적 프로그래밍 언어로, 5~16세 학습자를 위해 만들어졌습니다. 코드를 직접 입력하는 대신 '블록'을 조립하는 방식을 사용하며, 동작, 모양, 소리, 이벤트, 제어, 탐지, 연산, 변수, 사용자 정의 블록의 아홉 가지 범주에서 블록을 끌어다 스크립트 영역에 놓으면 스프라이트 애니메이션, 인터랙티브 게임, 창의적인 이야기를 만들 수 있습니다. 본 페이지는 Scratch 3의 자급식 치트시트로, 게임, 애니메이션, 이야기 제작에서 초보자가 자주 사용하는 약 80%의 내용을 다룹니다. 19개 챕터가 각자의 주제를 다룹니다. 첫 프로그램(hello), 변수와 데이터 저장(vars / types / pointers), 흐름 제어(control), 사용자 정의 블록(funcs), 문자열과 리스트(strings / collections), 프로젝트와 자원 관리(mem), 스프라이트 객체 모델(oop), 디버깅과 흔한 실수(errors / faq), 입출력과 동시 스크립트(io / threads), 클라우드 변수와 확장(net), 시간과 타이머(time), 스크립트 생명주기(proc), 텍스트 패턴 매칭(regex), 저장·게시와 디버깅(build)에 이르기까지. 각 챕터는 예시가 포함된 8개의 소단원으로 나뉘며, 한 예시는 5~20줄 정도라 읽으며 따라 치기에 좋습니다. 다른 프로그래밍 언어와 달리 Scratch에는 텍스트 문법이 없으므로, 여기서는 블록의 가독성 있는 텍스트 표현으로 다뤄 오프라인에서도 살펴보고 떠올리기가 쉽도록 했습니다. 모든 내용은 브라우저 안에서 렌더링되며, 업로드되거나 추적되지 않아 개인정보가 안전합니다. 본 페이지는 GuruToolkit 무료 개발자 도구 모음의 일부이며, 코드 스니펫은 자유롭게 사용할 수 있지만 어떠한 보증도 제공하지 않습니다.
버전 2.1.0