본문 바로가기

스크래치/라인트랙자동차

스크래치 아두이노 라인 센서로 게임 만들기 1

라인센서로 게임 만들기

라인 센서 2개로 게임을 만들어 보겠습니다. 위에서 떨어지는 오렌지를 피하는 게임을 만들겠습니다. <그림 1-23>

그림 1-23 오렌지를 피하는 게임

 

오렌지가 위에서 떨어지고 곰돌이가 왼쪽이나 오른쪽으로 움직여서 오렌지를 피하는 게임입니다. 첫 번째 라인 센서를 검은색에 가까이 대면 곰돌이가 왼쪽으로 움직입니다. 두 번째 라인 센서를 검은색에 가까이 대면 곰돌이가 오른쪽으로 움직입니다. 그리고 오렌지는 위에서 아래로 떨어집니다.

 

그림 1-24 2개의 라인 센서와 검은색 선

 

문제를 하나씩 해결합시다. 우선 첫 번째 라인 센서를 이용해서 곰돌이가 왼쪽으로 움직이게 합니다. [첫번째 라인 센서]라는 변수을 만들고 디지털 3번 핀에 들어온 값을 읽어서 저장합니다. 이 값이 1이면(검은색을 읽었으면) 왼쪽으로 이동합니다.

 

다시 한번 좌표의 뜻을 알아봅시다. 좌표는 어떤 기준점에서 얼마나 떨어졌는가를 나타내는 것입니다. 스크래치에서는 무대 한가운데가 기준점입니다.

 

한가운데의 x좌표는 0, y좌표는 0입니다. 그리고 왼쪽 오른쪽으로 움직이는 것을 x좌표가 변한다고 표현합니다. 그리고 위아래로 움직이는 것을 y좌표가 변한다고 표현합니다.

 

무대의 크기는 가로 480이고 세로 360입니다. 정확히 가운데를 기준으로 왼쪽으로 240, 오른쪽으로 240까지 움직일 수 있습니다. 그리고 위쪽으로 180, 아래쪽으로 180까지 움직일 수 있습니다. <그림 1-25>

그림 1-25 스크래치 무대 화면 크기

 

스프라이트가 왼쪽으로 움직이려면 x좌표가 점점 작아지면 됩니다. 스프라이트의 x좌표에서 값을 빼면 됩니다. <그림 1-26>

그림 1-26 왼쪽으로 이동하기

 

-1 만큼 바꾼다는 것은 1씩 뺀다는 뜻입니다. 계속 1씩 빼면 스프라이트가 왼쪽으로 이동합니다. 이제 배운 내용을 이용해서 코딩을 해봅시다. <그림 1-27>

그림 1-27 왼쪽 라인센서가 검은색을 읽었을 때 왼쪽으로 이동하기

 

프로그램이 잘 작동되는지 확인해 봅시다.

그림 1-28 왼쪽으로 이동하는 곰돌이

 

라인 센서를 검은색에 가까이 대면 [첫번째 라인센서] 변수가 1이 되고 왼쪽으로 움직입니다. 그런데 너무 천천히 움직입니다. 어떻게 하면 될까요? 그림 1-29처럼 더 큰 수를 빼면 되겠죠?

그림 1-29 더 빨리 움직이기

 

-15씩 바꾸면 더 빨리 움직입니다. 그런데 곰돌이가 계속 움직이다가 왼쪽 무대밖으로 나갔습니다. <그림 1-30>

그림 1-30 더 빨리 움직이는 곰돌이

 

곰돌이가 무대 밖으로 나가지 않게 해야 합니다. 어떻게 해야 할까요? 곰돌이가 움직일 수 있는 범위를 정하면 됩니다. 곰돌이는 왼쪽으로는 –240, 오른쪽으로 는 +240까지 움직일 수 있습니다.

 

“곰돌아 ~, 너는 여기까지만 움직일 수 있어.”라고 명령을 내립니다. 즉 곰돌이의 x좌표가 어떤 값보다 클 때까지만 왼쪽으로 움직이게 만듭니다.

 

곰돌이가 가장 왼쪽으로 갔을 때 어디까지 갈 수 있는지 곰돌이를 움직여서 확인합니다. 그리고 곰돌이의 가운데에 마우스를 갖다 대면 무대 오른쪽 아래에 좌푯값이 보입니다.

 

이 책에서는 곰돌이의 x좌표가 –195보다 크면 왼쪽으로 움직이도록 코딩을 하겠습니다. 즉 두 가지 조건을 동시에 만족해야 합니다. [첫번째 라인센서] 변수가 1이고 곰돌이의 x좌표가 –195보다 커야 합니다. <그림 1-31>

그림 1-31 x좌푯값이 -195보다 클 때
그림 1-32 x좌표가 -195보다 클 때만 왼쪽으로 이동하기
그림 1-33 x좌표가 200보다 작을 때만 오른쪽으로 이동하기

 

그림 1-33처럼 디지털 4번 핀의 값을 읽어서 [두번째 라인센서] 변수에 저장합니다. 그리고 [두번째 라인센서] 변수가 1이고(검은색을 읽었다면) 곰돌이의 x좌표가 200보다 작으면 오른쪽으로 움직입니다. 이제 그림 1-34처럼 이 두 개의 프로그램을 연결하면 됩니다.

그림 1-34 라인센서가 읽는 값에 따라 왼쪽-오른쪽으로 이동하기

 

그리고 오렌지가 위에서 아래로 떨어지도록 코딩을 하겠습니다. 우선 오렌지 스프라이트를 가져옵니다. 그림 1-35처럼 도깨비 모양의 스프라이트 버튼을 클릭합니다. 그리고 스프라이트 도서관에서 오렌지를 가져옵니다.

그림 1-35 스프라이트 선택하기

 

도깨비 모양의 버튼을 클릭하면 스프라이트 도서관이 열립니다. 도서관에서 책을 가져오듯이 오렌지 스프라이트를 가져오면 됩니다. 스프라이트 도서관에서 오렌지를 찾아서 더블클릭합니다.

그림 1-36 스프라이트 도서관(라이브러리)

 

그럼 그림 1-37처럼 무대에 오렌지 스프라이트가 생긴 것을 볼 수 있습니다.

그림 1-37 오렌지 넣기

 

오렌지를 위에다 둡니다. 곰돌이를 왼쪽 오른쪽으로 움직인 것처럼 오렌지를 아래쪽으로 움직입니다. 오렌지의 y좌표가 -180보다 크면 y좌표를 –10만큼 바꿔서 오렌지가 점점 아래로 움직이게 합니다. 그리고 y좌표가 -180보다 더 내려가면 다시 위로 올라가면 됩니다. <그림 1-38>

 

어떻게 코딩하면 될까요? <만약 ~아니면> 블록을 이용하면 쉽게 코딩할 수 있습니다. <그림 1-39> y좌표가 -180보다 크다는 조건을 만족시키지 않는다면 오렌지가 바닥으로 더 내려갔다는 뜻입니다. 그래서 다시 위로 올라가게 하기 위해서 오렌지의 y좌표를 180으로 정합니다.

그림 1-39 떨어지는 오렌지 코딩하기

 

그러면 그림 1-40처럼 위로 쓩하고 올라갑니다.

그림 1-40 위로 올라가는 오렌지

 

오렌지 피하기 게임에서 가장 기본적인 것을 만들었습니다. 이제 게임을 더욱 재미있게 만들어 봅시다.