코딩개발/스크래치코딩 강좌

난수 만들기, 신호 보내기

완소줄기요 2022. 3. 8. 08:44

난수만들기, 신호보내기
난수만들기, 신호보내기

 

 스크래치코딩 강좌 04 - 난수 만들기, 신호 보내기 포스트를 시작합니다.

 

 지난 포스트에서는 스프라이트의 모양을 바꾸는 방법에 대해 알아보고, 스프라이트를 하나 더 추가해봤는데요. 이번 시간에는 추가한 포스트를 임의의 위치로 이동시키고, 아래로 떨어트리는 코딩을 만들어보려고 합니다. 

 

 스크래치 사이트에 로그인 한 후, 지난 시간에 작업했던 프로젝트를 불러와 주세요!

 

 

1. 난수 만들기

 

 난수를 만들기 전에 난수에 대해 잠깐 설명을 드릴게요. 난수는 랜덤으로 생성된 숫자 라는 의미 입니다. 난수는 아라비안 숫자 1,2,3,4,5,6... 처럼 일정한 규칙이 없는 숫자에요. 쉽게 설명하면 어디로 튈지 모르는 럭비공처럼 어떠한 숫자가 나올지 모르는 숫자를 난수라고 합니다.

 

 오늘 코딩으로 만들어볼 게임이 바로 난수를 필요로 합니다. 우리는 케익이 랜덤한 위치에서 아래로 떨어지고, 다시 또 랜덤한 위치에서 아래로 떨어지게 만들어, 고양이가 그 케익을 계속해서 받아먹게 만들 예정입니다. 이러한 게임을 만들기 위해서는 규칙이 없는 랜덤한 좌표값을 지정해야 하고, x좌표의 값이 계속 바뀌어 계속해서 다른 위치에 케익을 옮겨야 합니다.

 

 먼저 오른쪽 스프라이트 영역에서 케익 스프라이트를 선택합니다. 그리고 아래 설명을 본후 블록을 가져오세요.

 

[동작설명]

- 케익의 y좌표는 150으로 고정합니다.

- 케익의 x좌표는 -200 부터 200 까지의 숫자중에 랜덤한 값으로 정합니다.

- 케익은 시작 위치에서 아래로 계속 떨어집니다.

 

난수 구하기 코딩블록
난수 구하기

 

 난수를 구하는 블록은 연산 메뉴에 있습니다. 위 그림처럼 블록을 만든 후 블록을 클릭하여 케익의 위치가 계속 바뀌는지 확인해보세요.

 

난수 구하고 좌표 바꾸기
난수 구하고 좌표 바꾸기

 

 이어서 무한반복하기 블록 안에 y좌표를 -5 만큼 바꾸는 블록을 가져옵니다. 이 후 모든 블록을 이어주면 케익이 랜덤한 위치에서 아래로 떨어지는 모습을 볼 수 있습니다. 만들어놓은 블록을 클릭해서 동작을 확인해보세요.

 

케익이 랜덤한 위치에서 떨어집니다.

 

2. 신호 보내기

 

 신호 보내기 기능은 하나의 동작이 끝난 이후 다음 동작을 지시할 때 유용해요. 동작의 상황에 따라 다른 신호를 보낼수도 있습니다.

 

[동작설명]

- 초록 깃발을 클릭하면 케익이동 신호를 보냅니다.

- 케익이 벽에 닿으면, 게임종료 신호를 보냅니다.

- 케익이 고양이에 닿으면, 케익이동 신호를 보냅니다.

- 위 두 신호를 무한반복합니다.

 

신호보내기
신호보내기

 

[동작설명2]

- 케익이동 신호를 받으면, 케익을 랜덤한 위치에서 아래로 떨어트립니다.

- 게임종료 신호를 받으면, 게임끝 이라고 말하고, 멈추기(모두)를 실행합니다.

 

신호 받기
신호 받기

 

 여기에서 추가로 고양이 스프라이트가 케익에 닿으면 냠냠 이라고 말하는 블록을 만들겠습니다.

 

고양이가 케익에 닿았는가?
고양이가 케익에 닿았는가?

 

 위 그림대로 블록을 추가했다면 초록색 깃발을 클릭하고, 케익이 내려올 때 고양이를 이동시켜 케익을 먹게 해보세요.

 

고양이가 케익을 먹어요.

 

 위 영상처럼 고양이가 케익을 먹었을 때 냠냠이라고 말하고, 케익을 먹지 못하면 게임이 종료되나요? 잘 작동하지 않는다면 아래 그림을 보고 코딩블록을 다시 한번 확인해보시기 바랍니다.

 

[고양이 스프라이트 코딩블록 전체]

 

고양이 스프라이트 코딩블록
고양이 스프라이트 코딩블록

 

[Cake 스프라이트 코딩블록 전체]

 

Cake 스프라이트 코딩블록
Cake 스프라이트 코딩블록

 

 다음 강좌에서는 지금까지 만든 코딩스프라이트를 조금 더 업그래이드 해보려고 합니다. 지금까지 만든 블록을 프로젝트에 잘 저장시고, 다음 강좌에서 뵐게요 :)

 

 

 스크래치코딩 강좌 04 - 난수 만들기, 신호 보내기 포스트가 도움이 되었다면 공감, ♥, 댓글, 구독 버튼을 클릭해 주세요 :)