제어는 프로그램이 동작하는 흐름을 제어하는 것을 의미합니다. 예를들어 고양이가 계속 움직이게 한다거나, 고양이가 강아지와 부딪쳤을 때 고양이가 움직이게 한다거나 움직이는 고양이를 멈추게 하는 것을 가능하게 하는 것입니다. 즉 컴퓨터에게 반복적인 작업을 시키거나, 조건에 따라서 다른 작업을 하도록 하는 것이 제어라고 할 수 있습니다.
_초 기다리기
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1643.gif)
이 블록이 실행되면 주어진 시간만큼 실행이 일시정지 됩니다.
아래 예제는 스프라이트가 1초 간격으로 이동하게 하는 예제입니다. (스크래치에서 보기)
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1652.gif)
_번 반복하기
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1644.gif)
블럭의 안쪽에 위치하는 블록들을 10번 반복해서 실행합니다.
아래의 예제는 고양이가 4번 야옹을 반복해서 소리내게 합니다. (스크래치에서 보기)
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1653.gif)
무한 반복하기
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1645.gif)
블록 안쪽에 위치하는 블록들을 계속 실행합니다.
아래의 예제는 고양이를 계속 회전시킵니다. (스크래치에서 보기)
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1654.gif)
만약 _라면
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1646.gif)
이 블록을 이해하기 위해서는 '조건'이 무엇인가 이해해야 합니다.
아래의 블록은 틀린 블록입니다. 10은 1보다 크기 때문이죠. 이것을 '거짓'이라고 부릅니다.
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1655.gif)
아래 블록은 맞는 블록입니다. 10은 1보다 작기 때문입니다. 이런 것을 '참'이라고 부릅니다.
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1656.gif)
그럼 아래와 같이 블록들을 만들고 주어진 값이 참인지 거짓인지에 따라서 블록이 동작하는 차이를 살펴보세요.
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1657.gif)
위의 블록 중 1번은 실행 되지만 2번은 실행되지 않을 겁니다. 왜냐면 2번의 경우 '만약_라면'에 주어진 값이 거짓이기 때문입니다. 참과 거짓을 구분하는 것을 조건이라고 합니다. 그리고 그 조건에 따라서 참이라면 블록안의 블록을 실행하고, 거짓이라면 실행하지 않는 것을 조건문이라고 합니다.
아래는 조건문을 이용해서 만든 예제입니다. 고양이가 X 좌표 100에 도착했을 때 움직임을 멈추고 '야옹' 소리를 냅니다. (스크래치에서 보기)
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1658.gif)
만약_라면, 아니면
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1659.gif)
만약_라면 주어진 조건이 참일 때는 첫번째 홈의 블록이 실행되고, 거짓이면 두번째 홈의 블록이 실행됩니다.
아래 예제는 고양이가 불에 닿았을 때 뜨겁다고 말하고, 불에 닿지 않았을 때는 따뜻하다고 말하는 예제입니다. (스크래치에서 보기)
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1660.gif)
_까지 기다리기
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1647.gif)
주어진 조건이 참이 될 때까지 기다리기 입니다.
다음의 예제는 고양이가 강아지에 부딪히면 강아지가 달려가는 예제입니다.
복제되었을 때
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1648.gif)
스크래치는 스프라이트의 복제를 지원합니다. 복제란 똑같은 스프라이트를 만드는 것입니다. 복제를 하면 원본과 똑같은 모양을 가진 복제본이 생겨나는데 '복제되었을 때' 블록은 복제본이 생성되었을 때 복제본에서 실행될 명령들이 시작되는 이벤트입니다.
다음 에제는 고양이를 클릭했을 때 고양이가 복제 됩니다. 이 때 복제된 고양이는 -100부터 100 사이의 한 지점으로 이동하게 됩니다. 2초 후에 고양이는 사라집니다.
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1664.gif)
_ 복제하기
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1649.gif)
이 블록이 실행되면 선택된 스프라이트(위의 이미지에서는 myself)가 복제됩니다.
이 복제본 삭제하기
![](https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/module/569/1650.gif)