소프트웨어코딩

소프트웨어코딩 05 감지 메시지

오미자컴 2022. 3. 29. 12:04

감지란 뭔가요?

Sensing. 어떤 현상이나 자료를 관찰하여 판독하는 것. 예를 들면, 고양이가 쥐까지 거리를 감지, 마우스 포인터의 위치를 감지 등.

 

키를 눌렀는가?’ 감지 블록으로 Ladybug1 스프라이트가 방향키에 따라 움직이게 하려면 어떻게 해야 하나요?

왜 무당벌레가 움직이지 않나요?

키보드의 방향 키를 눌렀는지 계속 확인하고 있지 않았기 때문입니다. 계속 감지하려면 무한 반복하기제어 블록으로 감싸야 합니다.

 

키보드로 무당벌레 움직이기 코딩

무한 반복을 피하려면 어떻게 하나요?

스페이스 키를 누를 때까지 반복하게 하거나

정지 단추를 꼭 누르도록 당부합니다.

그리고 또 다른 방법이 있죠~

 

고양이를 키보드로 조정하는 다른 방법은 없나요?

방향 키에 이벤트를 발생시켜 녹색 깃발’(이벤트)을 클릭하지 않고도 키보드로 이벤트를 발생시켜 고양이를 조정할 수 있습니다.

무당벌레와 고양이가 벽에 닿으면 그만 움직이도록 하려면 어떻게 해야 할까요?

벽에 닿으면 튕기기동작 블록을 넣어야겠죠.

무당벌레엔 어디에 넣어야 하나요?

무한 반복하기제어 블록 안에 넣어야 합니다

그럼 고양이엔 어디에 넣어야 하나요?

각 키의 이벤트에 각각 넣어야 합니다

 

고양이가 멀리 점프하도록 키보드 키들을 조합하여 처리하려면 어떻게 해야 하나요?

스페이스 바를 누르면 제자리에서 점프

방향 키로 움직이게 하면서 스페이스 바를 누르면 그 방향으로 점프. 방향 키를 먼저 눌러야 합니다.

고양이 위치, 회전방식 등을 초기 설정합니다

오른쪽 방향키를 누르면 오른쪽을 보고, 오른쪽으로 5만큼 이동

왼쪽 방향키를 누르면 왼쪽을 보고, 왼쪽으로 5만큼 이동

만약 스페이스 키를 눌렀는가 라면

만약 오른쪽 화살표 키를 눌렀는가 라면

오른쪽 방향 보고, 0.5초 동안 x: x좌표 + 50 y: y좌표 +50으로 이동하기, 0.5초 동안 x: x좌표 + 50 y: y좌표 -50으로 이동하기 . 오른쪽으로 50 가면서 위로 50 갔다가 다시 내려옴.

아니면

만약 왼쪽 화살표 키를 눌렀는가 라면

왼쪽 방향 보고, 0.5초 동안 x: x좌표 - 50 y: y좌표 +50으로 이동하기, 0.5초 동안 x: x좌표 - 50 y: y좌표 -50으로 이동하기 . 왼쪽으로 50 가면서 위로 50 갔다가 다시 내려옴.

아니면

X좌표는 변함이 없이 y좌표만 위로 50 갔다가 다시 내려옴. 즉 제자리 점프.

 

고양이 점프하기 코딩

이벤트를 발생시켜 화살표 키를 눌러 고양이가 움직이도록 할 경우, 어떤 차이가 있나요?

방향키를 누른 상태에서 스페이스 키를 눌러야 앞으로 가면서 점프합니다.

 

이벤트를 발생시킨 점프 코딩 1

이벤트를 발생시킨 점프 코딩 2

고양이가 장애물을 점프하고, 사과를 얻는 게임을 만들려면 어떻게 해야 하나요?

장애물로 ‘Bowl’ 스프라이트를 , 사과로 ‘Apple’ 스프라이트를 추가합니다.

Bowl은 고양이과 같은 선상에서 무작위 위치로 계속 움직이게 하고,

Apple은 고양이보다 6~70 높은 선상에서 무작위 위치로 계속 움직이게 합니다.

고양이가 Bowl을 건드리면 벌점을 받고, 점프하여 Apple을 건드리면 점수를 얻게 합니다.

 

점프 게임 Bowl 코딩

점프 게임 Apple 코딩

점프 게임 고양이 코딩

마우스를 감지하는 코딩을 작성하려면 어떻게 하나요?

마우스를 클릭했는가감지 블록을 사용합니다.

테니스 공 스프라이트를 클릭하면 위에서 아래로 서서히 떨어지도록 합니다.

빈 여백을 클릭하면 테니스 공이 마우스의 클릭을 감지하고 마우스 포인터가 있는 곳으로 이동하도록 합니다.

마우스 감지하는 코딩

무한 반복하기 대신 마우스를 클릭했는가 까지 기다리기블록을 사용하면 어떤 점이 다른가요?

무한 반복하기는 마우스를 여러 번 클릭해도 마우스 포인터가 있는 곳으로 테니스 공이 오지만

까지 기다리기블록을 사용하면, 딱 한 번만 마우스 포인터가 있는 곳으로 옵니다.

이벤트란 무엇인가요?

마우스 클릭이나 키보드 누르기 등 프로그램에 뭔가를 시키는 것(신호, 사건)을 말합니다

녹색 깃발을 클릭하면, 스크래치를 시작하는 신호를 줍니다.

키 입력, 스프라이트 클릭, 무대 클릭 등 여러 이벤트가 있습니다. 이들 이벤트는 병렬 처리 됩니다.

메시지를 전달하고 받는 것도 이벤트입니다

 

메시지란 무엇인가요?

스프라이트나 배경 사이에서 통신하는 기능입니다

보내는 쪽과 받는 쪽이 있고

받는 쪽은 그 메시지가 신호가 되어 스크립트를 실행합니다

보내는 쪽 : ‘메시지1 신호 보내기블록, ‘메시지1 신호 보내고 기다리기블록

받는 쪽 : ‘메시지1 신호를 받았을 때이벤트 블록

메시지를 여러 스프라이트에 동시에 보낼 수 있습니다

 

메시지는 어떻게 만드나요?

이벤트 블록 카테고리에서 메시지1 신호 보내기블록을 가져와 메시지1’를 클릭하고 펼침 메뉴에서 새로운 메시지클릭

새로운 메시지로 적절한 이름을 정하고

그 이름으로 만들어진 메시지 신호 보내기 블록을 활용합니다

 

메시지 만들기

이야기 시작메시지를 받았을 때 실행할 스크립트 작성 1

이야기 시작메시지를 받았을 때 실행할 스크립트 작성 2

홀짝 게임을 어떻게 만들까요?

홀과 짝 중에 하나를 입력하게 합니다.

야옹이가 1에서 99사이 난수 중 하나를 선택하게 하고 이를 2로 나누어 나머지가 0이면 짝이라고 말하게 하고, 아니면 홀이라고 말하게 합니다.

사용자가 맞추면 축하한다는 말을 하게 합니다.

‘q’를 입력할 때까지 게임을 계속합니다.

 

홀짝 게임 코딩 1

홀짝 게임 코딩 2

 

중간실습 자료 :

홀짝게임중간실습.sb3
0.04MB

 

홀짝 게임 코딩 3