스크래치 코딩을 하다 보면 여러 개의 스프라이트 들을 사용하게 되는데요.
스프라이트들 간의 상호 작용이 필요할 때가 있습니다.
이때 사용하는 명령 블록이 신호 보내기/신호를 받았을 때예요
신호를 보내고 받는 것을 무선 조종 자동차를 예로 들어 볼게요.
무선 조종기를 스프라이트라고 가정하고, 자동차도 스프라이트라고 가정할게요.
조종기의 스틱을 밀어서 '앞으로 가'라는 신호를 자동차에게 '신호 보내기'하면
자동차는 '앞으로 가'라는 '신호를 받아서' 앞으로 가는 동작을 할 거예요.
이번에는 조종기의 스틱을 당겨서 '후진해'라는 신호를 자동차에게 '신호 보내기'하면
자동차는 '후진해'라는 '신호를 받아서' 후진하는 동작을 하게 하는 거예요.
이렇게 스프라이트 간의 신호를 주고받으면서 상호 작용할 때 사용하는 명령 블록이
이벤트 팔레트의 '~신호 보내기' 명령 블록과 '~신호를 받았을 때' 명령 블록이에요.
신호 보내기 / 받기를 이용한 달리기 시합을 만들어 볼게요.
아래 영상을 보시면 예제의 완성된 내용을 볼 수 있어요.
1. 시작 하기 버튼을 클릭하면
2. 로봇이 설명을 하고 3~1까지 카운트 후
3. 호루라기 소리가 나고 유니콘과 상어가 달리기 시작
(달리는 속도는 각각 스프라이트가 랜덤, 달리기 결과가 달라질 수 있음)
3-1. 유니콘과 상어가 달리기 시작과 동시에 로봇 스프라이트는 '이겨라 이겨라~'를 말하면서 모양이 바뀌어요.
4. 유니콘과 상어 중 하나의 스프라이트가 오른쪽의 파란 선에 닿으면
5. 로봇이 먼저 닿은 스프라이트 가 이겼다고 말하게 돼요.
여기서 '신호 보내기' 와 '신호 받았을 때'를 사용하는 부분은
1) 로봇이 설명, 카운트 후 호루라기 소리가 나고 유니콘과 상어가 달려야 하는 때
2) 유니콘과 상어 중 하나의 스프라이트가 오른쪽의 파란 선에 닿았을 때
이번 스크래치를 진행하려면 배경을 약간 수정을 해야 하야하고 Robot 스프라이트의 소리에 'Referee Whistle'라는 소리를 추가해야 합니다.
그런데 이런 작업까지 내용에 추가하려면 너무 길어져서 배경과 소리가 추가된 파일을 첨부하였어요.
아래 파일을 다운로드해서 스크래치 프로그램으로 열어서 예제를 진행하면 돼요.
첨부파일
base.sb3
파일 다운로드
무대에 아래와 같이 나올 거예요.
Robot 스프라이트를 선택하고
시작 하기를 클릭했을 때 정해진 위치로 이동하도록 할게요.
다음으로 설명과 카운트를 하도록 하도록 할게요.
상어(Shark 2) 스프라이트의 크기 조정과 위치를 이동시킬게요. 상어(Shark 2) 스프라이트를 선택할게요.
시작 하기를 클릭했을 때 크기를 조정하고 정해진 위치로 이동하도록 할게요.
유니콘(Unicorn Running) 스프라이트의 크기와 위치를 이동시키도록 해요. 유니콘(Unicorn Running) 스프라이트를 선택할게요.
시작 하기를 클릭했을 때 크기를 조정하고 정해진 위치로 이동하도록 할게요.
다시 로봇(Robot) 스프라이트를 선택할게요
호루라기(Referee Whistle) 소리를 재생하기 위해서 소리 팔레트의 을 코드 창에 끌어다 놓을게요.
그다음 '~재생하기' 명령 블록의 아래쪽 화살표를 클릭해서 'Referee Whistle'을 선택해 줄게요.
이제 위에서 설명했듯이 스트라이트들에게 신호를 보내서 어떤 행동을 하라고 할 차례에요.
보낼 신호의 명칭은 '출발'이라고 할게요.
신호는 이벤트 명령 팔레트에서 '~신호 보내기' 명령 블록을 이용하면 돼요
'출발'이라는 새로운 메시지를 만들기 위해서 '메시지1' 을 클릭하고 나오는 팝업에서 '새로운 메시지'를 클릭하면 새로운 팝업이 또 뜰 거예요.
새로운 메시지 이름에 '출발'이라고 입력하고 확인을 클릭해 주세요. 그러면 아래같이 만들어질 거예요.
이 '출발'이라는 신호가 모든 스프라이트들에게 전달이 될 거예요.
그러면 스프라이트들 중 '출발'이라는 신호를 받기를 기다리고 있던 스프라이트 들을 그에 대한 행동을 시작하는 거죠.
*신호는 모든 스프라이트에게 전달돼요. 신호를 보낸 자신도 포함돼요.
*각각의 스프라이트는 신호를 받을 수도, 받지 않을 수도 있어요
이제 기존에 만들어진 명령 블록에 연결해 볼게요.
로봇 스프라이트가 '출발' 신호를 받아서 동작하도록 해볼게요. 로봇(Robot) 스프라이트를 선택해 주세요.
신호를 받는 방법은 이벤트 팔레트의 '~신호를 받았을 때' 명령 블록을 이용하면 돼요. 해당 명령을 코드창에 옮겨 주세요.
지금 우리가 필요한 신호는 '출발' 신호에요 '메시지1'을 클릭하여서 나오는 팝업에서 '출발'을 선택해 주세요.
'이겨라 이겨라~'를 말하게 하기 위해 동작 팔레트의 ~을(를) ~초 동안 말하기 명령 블록을 코드창에 옮겨주세요.
'이겨라 이겨라~'를 0.5초 동안 말하도록 수정할게요
다음은 모양이 바뀌 도록 형태 팔레트의 '다음 모양으로 바꾸기'를 사용해서 연결해 줄게요
그런데 이 행동은 한 번만 하고 끝내는 것이 아닌 계속해서 반복되어야 하는 것이기 때문에 제어 팔레트의 '무한 반복하기' 명령 블록으로 감싸 줄게요.
위의 블록들은 '출발' 신호를 받았을 때 실행되어야 하기 때문에 신호를 받았을 때와 연결을 해줄게요.
지금 까지 로봇(Robot)스프라이트에 만들어진 블록들 입니다.
https://blog.naver.com/microhan1/222125035704