엔트리 블록 코딩

엔트리 | 시작 탭(2) - 서로 다른 오브젝트가 상호 작용하려면 필요한 것. 신호에 대해 알아보기.

블로그 하는 으노 2024. 8. 14. 00:16
반응형

엔트리는 블록 코딩 소프트웨어이다.


 

  엔트리는 객체지향 언어이다. 단숨에 이해하기는 쉽지 않지만, 모든 오브젝트가 서로 독립된 존재라는 뜻이다. 우리는 서로 다른 오브젝트가 상호작용하는 프로그램을 만들고 싶지만 오브젝트는 서로 독립된 존재이기 때문에 서로가 무슨 행동을 하는지 알 수 없다. 이때, 오브젝트가 서로 어떤 행동을 하는지 알 수 있도록 해주는 것이 '신호'이다. 현재는 아무런 신호도 만든 적이 없기 때문에 [대상 없음]이라고 나온다.

엔트리봇과 고슴도치

  (x:-120, y:0) 위치에 고슴도치 오브젝트를 추가했다. 그리고, 고슴도치 오브젝트에 기존에 엔트리봇에 생성되었던 명령어를 코딩했다. 엔트리봇에 작성된 코드는 모두 삭제했다. 프로그램을 실행하고 나면 고슴도치가 엔트리봇과 겹쳐있다. 실세계에 사는 우리에게는 엔트리봇이 따갑다고 놀라는 상황이 되어야 하지만, 독립적인 객체인 오브젝트들은 서로가 무슨 행동을 하는지 알지 못한다. 그래서 여기서 신호를 만들어주려고 한다.

신호 만들기

  기존의 블록이 모여있던 곳의 상단에 네 가지 탭이 있다. 그중 가장 오른쪽의 [속성] 탭으로 들어간다. [신호] > [신호 추가하기]를 누르고, 신호의 이름을 지어준다. 텍스트 코딩이라면 영문으로 규칙을 지키며 의미 있는 이름을 지어주는 것이 좋다. 엔트리에서는 한글로 띄어쓰기까지 하며 이름을 지을 수 있다. '엔트리봇에게 닿았다'라는 직관적인 이름을 붙이고 [신호 추가]를 누른다. 그러면 안테나 모양으로 신호가 생성된 것을 볼 수 있다. 다시 블록으로 돌아온다.

신호 명령어 추가하기

  신호와 관련된 명령어에 [대상 없음]이었던 부분이 내가 생성한 신호의 이름으로 바뀌어 있다. 고슴도치가 엔트리봇에게 닿는 시점에 이를 엔트리봇에게 알리기 위한 신호를 보내줄 것이다.

  주의할 점은 명령어를 작성하는 오브젝트를 명확히 구분해야 한다는 것이다. 오브젝트는 서로 명령어를 공유하지 않는다. 내가 명령어를 작성하고자 하는 오브젝트가 선택됐는지 확인하며 코딩하자. 고슴도치의 이동이 끝나는 시점에 [엔트리봇에게 닿았다 신호 보내기] 명령어가 실행된다. 이 신호는 실행화면에서 활동하고 있는 모든 오브젝트에게 전달된다. 물론, 받을지 말지 결정하는 것도 명령어가 한다. 전달됐지만 무시할 수도 있다는 뜻이다. 우리는 엔트리봇이 이 명령어를 받도록 하자.

엔트리봇을 클릭하고(실행화면에서 오브젝트를 클릭하는 것으로 해당 오브젝트에 대한 블록 조립소를 확인할 수 있다.) 위와 같이 명령어를 작성한다. [엔트리봇에게 닿았다 신호를 받았을 때]가 명령어 집합의 실행 조건이 된다. 말하기 블록은 생김새 탭에 있다. 그럼 프로그램을 실행해 보자.

마치 엔트리봇이 고슴도치가 자신에게 닿았음을 아는 것처럼 보인다. 신호는 이렇게 오브젝트가 서로 상호작용하는 데 꼭 필요한 기능을 제공한다.

신호 보내고 기다리기

  [신호 보내고 기다리기]는 독특한 기능을 수행한다. 신호를 보낸 오브젝트는 신호를 받아 수행되는 명령어가 끝날 때까지 기다린 다음 뒤따르는 명령어를 이어서 수행한다. 기존에 작성했던 고슴도치의 코드를 조금 수정해 보자. 신호 보내기를 신호 보내고 기다리기로 바꾸고 말하기 블록을 추가했다. 명령어 처리 속도가 빠르기 때문에 엔트리봇의 반응을 살피기 어려울 수도 있다. 2초 기다리는 블록을 추가하면 확인하는 데 도움이 된다. 기다리기 블록은 제어 탭에 있다.

엔트리봇의 명령어가 끝난 뒤 고슴도치의 [신호 보내고 기다리기] 명령어에 뒤따르는 명령어들이 실행된 것을 확인할 수 있다.

반응형