스크래치 아두이노 벽돌깨기 게임 2

벽돌깨기 게임 만들기

벽돌을 만들기 전에 간단한 수학 문제를 풀겠습니다. 우리는 벽돌을 한 줄에 최대 6개를 넣고 싶습니다. 그렇다면 벽돌의 가로의 크기는 얼마로 해야 할까요? 스크래치 무대의 가로 크기는 480입니다. 따라서 벽돌의 가로 크기는 480÷6으, 80이 됩니다. 세로의 크기는 240의 약수로 해야 합니다.


약수는 그 수로 나눴을 때 나머지가 없는 수를 말합니다. 그래서 딱 맞게 떨어지게 됩니다. 이 책에서는 가로 80, 세로 20으로 벽돌을 그렸습니다.

 

직사각형을 그리고 마우스로 줄이고 늘리고 해서 크기를 맞춰주면 됩니다. 왼쪽 위를 보면 벽돌의 크기를 알 수 있습니다. 그리고 중심점을 왼쪽 위에 둡니다. 이 중심점이 벽돌의 좌표 기준점이 됩니다.

그림 2-43 직사각형 그리기

 

이렇게 중심점을 두면, 벽돌의 x좌표가 -240, y좌표가 180일 때 벽돌은 왼쪽 벽에 붙어서 나오게 됩니다.

 

그림 2-44 중심점 왼쪽 위로 맞추기

 

벽돌의 처음 나올 때 y좌표는 180입니다. x좌표만 변하는 것이죠. 벽돌의 x좌표는 어떤 값이면 될까요? -240에서 80씩 더하면 됩니다. 벽돌의 가로 크기가 80이기 때문이죠. 벽돌이 움직일 수 있는 x좌표 값은 –240, –160, -80, 0, 80, 160으로 총 6가지입니다.

그림 2-45 실제 게임 모습

 

자 이제 중요한 것을 배워보겠습니다. 바로 <리스트>입니다. 변수는 모두 잘 알죠? 변수는 어떤 것을 저장하는 사물함 같은 겁니다. 리스트는 사물함을 여러 개 모아서 이름을 붙인 것이라고 생각하면 됩니다. 즉, 변수를 저장하는 변수인 것이죠.

 

1번 사물함에는 사과, 2번 사물함에는 귤, 3번 사물함에는 자두, 4번 사물함에는 포도가 있다고 생각해봅시다.

과일 리스트

 

이렇게 사물함을 모아서 <과일>이라는 이름을 붙입니다. 이 <과일>은 리스트가 되는 겁니다. 과일 리스트의 1번째 항목은 사과입니다. 항목은 사물함에 있는 것을 말합니다.

 

과일 리스트의 4번째 항목은 무엇일까요? 바로 포도입니다. 리스트가 어떤 것인지 잘 이해가 되죠?

 

<데이터 & 블록추가>를 보면 <리스트 만들기>가 있습니다. <벽돌 시작하는 곳>이라는 리스트를 만듭니다.

그림 2-46 리스트 만들기

 

[벽돌 x값]이라는 변수를 –240을 저장합니다. 그리고 리스트에 있는 것을 모두 삭제합니다. 모두 삭제를 하지 않으면 리스트에 다른 정보가 계속 저장되어서 리스트가 길어집니다. 삼각형 표시가 있으니 여기를 클릭하여 모두를 선택합니다.

그림 2-47 리스트에서 항목 모두 삭제하기

 

그림 2-48과 같이 코딩을 하면 벽돌의 x값을 저장한 리스트가 생깁니다.

그림 2-48 [벽돌 x값]으로 리스트 만들기

 

그럼 벽돌이 어떻게 나오게 하면 될까요? <복제하기>와 <난수>를 이용하면 쉽게 코딩을 할 수 있습니다. 초음파 센서를 이용한 게임 만들기와 같습니다. 그 게임에서는 장애물을 만들고 장애물을 복제해서 게임을 만들었습니다. 이 게임도 마찬가지입니다. 벽돌을 하나 만들고 이것을 복제를 하는데 <난수>를 이용하는 것입니다.

 

우선 자기 자신은 숨겨서 보이지 않게 하고 복제를 최소 1번, 최대 6번 합니다.

그림 2-49 난수로 복제하기

 

복제가 되었을 때 <벽돌 시작하는 곳> 리스트에서 있는 항목에서 1번부터 6번 중 아무거나 하나 갖고 옵니다.

그림 2-50 난수로 위치 정하기

 

예를 들어 2번째 항목을 가지고 오면 복제된 벽돌은 –160으로 이동합니다. 그리고 무대에서 보입니다.

 

그리고 복제된 벽돌은 공에 닿으면 없어지게 됩니다.

그림 2-51 공에 닿으면 복제본 삭제하기

 

공은 벽돌에 닿으면 어떻게 움직여야 할까요? 공이 벽돌에 닿으면 방향을 바꿔줘야 합니다. (180-방향)으로 방향을 바꾸면 됩니다.

그림 2-52 공이 튕기는 방향

 

예를 들어 공의 방향이 –45도라고 생각해봅시다. 0도면 위쪽으로 날아가고 180도이면 아래쪽으로 날아갑니다.(노란색 선) 방향 값이 커지면 시계방향으로 회전하고, 방향 값이 작으면 시계 반대 방향으로 회전합니다. 노란색 선 위를(방향이 0일 때) 기준으로 했을 때 시계방향(또는 시계 반대 방향)으로 회전한 만큼, 노란색 선 아래(방향이 180일 때)에서 시계 반대 방향(또는 시계방향)으로 회전해야 합니다.

그림 2-53 (180-방향)으로 방향 바꾸기

 

공이 날아가다가 다시 바닥에 닿으면 남아있던 벽돌은 내려오고 새로운 벽돌이 생겨야 합니다. 어떻게 하면 될까요? 변수를 이용하면 아주 쉽게 문제를 해결할 수 있습니다.

그림 2-54 벽돌에 닿았을 때 방향 바꾸기

 

댓글 (0)

Designed by JB FACTORY