티스토리 뷰

LED로 게임 만들기

엘이디(LED)를 이용해서 간단한 게임을 만들어 볼까요? 앞에서 배웠던 공 피하기 게임을 이용하여 만들겠습니다.

 

공에 맞으면 13번 핀과 연결된 빨간색 엘이디(LED)가 켜지게 만들고 싶습니다. 어떻게 만들면 될까요?

그림 3-19 게임 끝 말하기

 

그림 3-19 스크립트에 그림 3-20처럼 엘이디(LED)를 켜는 블록을 잘 연결하면 됩니다.

그림 3-20 엘이디(LED) 켜기

 

어때요? 참 쉽죠? 이제 엘이디(LED)를 하나 더 사용하여 게임을 만들어 보겠습니다. 게임을 조금 더 재미있게 만들기 위해서 이런 생각을 했습니다.


‘20초마다 공이 하나 더 생겨서 움직이면 더 재미있겠다. 그리고 공이 하나 더 생길 때마다 노란색 엘이디(LED)가 깜빡이게 만들어보자.’

 

이런 아이디어를 가지고 직접 스크래치로 게임을 만들어 봅시다.

우선 공을 하나 더 만드는 방법을 알아보겠습니다. 그림 3-21의 나 자신을 복제하기 블록을 사용하면 됩니다.

그림 3-21 나 자신을 복제하기 명령어

 

제어 블록 모음에서 그림 3-22와 같은 스크립트(코드)를 하나 더 만들어서 초록색 깃발을 클릭해봅시다.

그림 3-22 복제하기

 

그림 3-23처럼 공이 하나 더 생겼습니다.

그림 3-23 공이 복제된 모습

 

그런데 복제된 공은 움직이지 않습니다. 하나씩 문제를 해결해 봅시다. <복제되었을 때>라는 블록이 있습니다. 이 블록은 제어 블록 모음에 있습니다.

 

복제되었을 때 원래 공처럼 똑같이 움직이게 만들려면 <복제되었을 때> 블록에 원래 공처럼 움직이는 스크립트(코드)를 연결하면 됩니다. 그림 3-24와 같이 코딩하고 프로그램을 실행하면 복제된 공도 잘 움직이는 것을 볼 수 있습니다.

그림 3-24 복제된 공 스크립트

 

멋지게 문제를 잘 해결했습니다. 이제 다음 문제를 해결합시다. 어떻게 하면 20초마다 공이 하나씩 생기게 할 수 있을까요? 여기서 간단한 수학 공부를 하겠습니다. 바로 나머지 입니다.


공은 20초마다 생깁니다. 즉 [시간] 변수 값이 20, 40, 60 이렇게 변할 때마다 공이 하나 생깁니다. 이 수를 20으로 나누면 나머지가 어떻게 되나요? 나머지가 0이 됩니다. 어때요 감이 오나요?

 

[시간] 변수 값을 20으로 나누면 나머지가 0인 수가 될 때 공이 하나 더 만들어지면 됩니다. 이런 수를 20의 배수라고 합니다.


그림 3-25처럼 코딩을 하고 프로그램을 실행해 봅시다.

그림 3-25 20초마다 공 복제하기

 

그림 3-26처럼 순식간에 공이 여러 개 복제되는 것을 볼 수 있습니다. 왜 이렇게 될까요?

그림 3-26 공이 여러 개 복제된 모습

 

[시간] 변수 값은 0으로 시작됩니다. 0에서 20으로 나누면 몫이 0이 되고 나머지도 0이 됩니다. 아무것도 없기 때문에 20으로 나눠도 나머지가 0이 됩니다. 그리고 컴퓨터는 아주 빠르게 일을 합니다. [시간] 변수 값이 0일 때 엄청나게 빠른 속도로 공을 복제합니다. 우리가 해결해야 할 문제는 다음과 같습니다.

 

우선 공이 하나만 복제되게 만들겠습니다. 어떻게 하면 될까요? <~초 기다리기> 블록을 사용하면 쉽게 문제를 해결할 수 있습니다. 복제를 하고 몇 초를 기다리면 [시간] 변수 값이 바뀝니다. 그리고 다음 20의 배수가 될 때까지 복제를 하지 않습니다.

그림 3-27 복제하고 1초 기다리기

댓글
댓글쓰기 폼